narwhal-commands 2.3.0

Stateless command and helper modules for narwhal: completion, export, wizard, snippets, DDL, EXPLAIN, cell edit, statement extraction.
Documentation
//! Static keyword / function / phrase tables. Updating this file
//! is how new SQL surface area shows up in completion.

pub const KEYWORDS: &[&str] = &[
    "SELECT",
    "FROM",
    "WHERE",
    "AND",
    "OR",
    "NOT",
    "IN",
    "BETWEEN",
    "LIKE",
    "IS",
    "NULL",
    "INSERT",
    "INTO",
    "VALUES",
    "UPDATE",
    "SET",
    "DELETE",
    "TRUNCATE",
    "CREATE",
    "TABLE",
    "VIEW",
    "INDEX",
    "DROP",
    "ALTER",
    "ADD",
    "COLUMN",
    "PRIMARY",
    "KEY",
    "FOREIGN",
    "REFERENCES",
    "UNIQUE",
    "CHECK",
    "DEFAULT",
    "JOIN",
    "INNER",
    "LEFT",
    "RIGHT",
    "OUTER",
    "FULL",
    "ON",
    "USING",
    "GROUP",
    "BY",
    "ORDER",
    "ASC",
    "DESC",
    "LIMIT",
    "OFFSET",
    "HAVING",
    "DISTINCT",
    "AS",
    "CASE",
    "WHEN",
    "THEN",
    "ELSE",
    "END",
    "UNION",
    "ALL",
    "EXCEPT",
    "INTERSECT",
    "EXISTS",
    "WITH",
    "RECURSIVE",
    "BEGIN",
    "COMMIT",
    "ROLLBACK",
    "SAVEPOINT",
    "RELEASE",
    "TRANSACTION",
];

/// Built-in functions offered as `NAME(` so the cursor lands inside
/// the parens after acceptance. Mirrors the everyday set used across
/// postgres / mysql / sqlite / clickhouse / duckdb; engine-specific
/// helpers are intentionally omitted to keep the popup focused.
pub const FUNCTIONS: &[&str] = &[
    // Aggregates.
    "COUNT(",
    "COUNT(DISTINCT ",
    "SUM(",
    "AVG(",
    "MIN(",
    "MAX(",
    "STRING_AGG(",
    "ARRAY_AGG(",
    "GROUP_CONCAT(",
    // Null / type helpers.
    "COALESCE(",
    "NULLIF(",
    "GREATEST(",
    "LEAST(",
    "CAST(",
    // String.
    "LOWER(",
    "UPPER(",
    "LENGTH(",
    "TRIM(",
    "SUBSTRING(",
    "SUBSTR(",
    "REPLACE(",
    "CONCAT(",
    "SPLIT_PART(",
    // Date / time.
    "NOW()",
    "CURRENT_DATE",
    "CURRENT_TIMESTAMP",
    "DATE_TRUNC(",
    "EXTRACT(",
    "AGE(",
    // Math.
    "ROUND(",
    "CEIL(",
    "FLOOR(",
    "ABS(",
    "POWER(",
    // Window.
    "ROW_NUMBER() OVER (",
    "RANK() OVER (",
    "DENSE_RANK() OVER (",
    "LAG(",
    "LEAD(",
];

/// Multi-word SQL phrases offered as a single completion. They cover the
/// most common 2- to 4-token sequences a daily database user types so
/// the popup can suggest `CREATE TABLE` instead of just `CREATE` and
/// then forcing a second round of completion.
///
/// Matching is the same lowercase prefix/substring strategy used for
/// single keywords — typing `crea` lights up `CREATE TABLE`, `CREATE
/// INDEX`, ... in alphabetical order.
pub const PHRASES: &[&str] = &[
    "CREATE TABLE",
    "CREATE TABLE IF NOT EXISTS",
    "CREATE INDEX",
    "CREATE UNIQUE INDEX",
    "CREATE VIEW",
    "CREATE OR REPLACE VIEW",
    "CREATE MATERIALIZED VIEW",
    "CREATE SCHEMA",
    "CREATE TEMPORARY TABLE",
    "DROP TABLE",
    "DROP TABLE IF EXISTS",
    "DROP INDEX",
    "DROP VIEW",
    "DROP SCHEMA",
    "ALTER TABLE",
    "ALTER INDEX",
    "ADD COLUMN",
    "DROP COLUMN",
    "RENAME COLUMN",
    "RENAME TO",
    "INSERT INTO",
    "DELETE FROM",
    "SELECT *",
    "SELECT * FROM",
    "SELECT DISTINCT",
    "SELECT COUNT(*)",
    "LEFT JOIN",
    "RIGHT JOIN",
    "INNER JOIN",
    "OUTER JOIN",
    "FULL OUTER JOIN",
    "CROSS JOIN",
    "GROUP BY",
    "ORDER BY",
    "ORDER BY ASC",
    "ORDER BY DESC",
    "LIMIT",
    "OFFSET",
    "UNION ALL",
    "IS NULL",
    "IS NOT NULL",
    "NOT NULL",
    "DEFAULT NULL",
    "PRIMARY KEY",
    "FOREIGN KEY",
    "REFERENCES",
    "ON DELETE CASCADE",
    "ON UPDATE CASCADE",
    "ON CONFLICT",
    "BEGIN TRANSACTION",
    "COMMIT TRANSACTION",
    "ROLLBACK TRANSACTION",
    "SAVEPOINT",
    "WITH RECURSIVE",
    "AS",
    "CASE WHEN",
    "ELSE END",
];