1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//! Keywords that are supported by Polars SQL
//!
//! This is useful for syntax highlighting
//!
//! This module defines:
//! - all Polars SQL keywords [`all_keywords`]
//! - all of polars SQL functions [`all_functions`]
use crate::functions::PolarsSQLFunctions;
use crate::table_functions::PolarsTableFunctions;

/// Get all keywords that are supported by Polars SQL
pub fn all_keywords() -> Vec<&'static str> {
    let mut keywords = vec![];
    keywords.extend_from_slice(PolarsTableFunctions::keywords());
    keywords.extend_from_slice(PolarsSQLFunctions::keywords());
    use sqlparser::keywords;
    let sql_keywords = &[
        keywords::AND,
        keywords::ANTI,
        keywords::ARRAY,
        keywords::AS,
        keywords::ASC,
        keywords::BOOLEAN,
        keywords::BY,
        keywords::CASE,
        keywords::CREATE,
        keywords::DATE,
        keywords::DATETIME,
        keywords::DESC,
        keywords::DISTINCT,
        keywords::DOUBLE,
        keywords::DROP,
        keywords::EXCLUDE,
        keywords::FLOAT,
        keywords::FROM,
        keywords::FULL,
        keywords::GROUP,
        keywords::HAVING,
        keywords::IN,
        keywords::INNER,
        keywords::INT,
        keywords::INTERVAL,
        keywords::JOIN,
        keywords::LEFT,
        keywords::LIMIT,
        keywords::NOT,
        keywords::NULL,
        keywords::OFFSET,
        keywords::ON,
        keywords::OR,
        keywords::ORDER,
        keywords::OUTER,
        keywords::REGEXP,
        keywords::RIGHT,
        keywords::RLIKE,
        keywords::SELECT,
        keywords::SEMI,
        keywords::SHOW,
        keywords::TABLE,
        keywords::TABLES,
        keywords::THEN,
        keywords::TIME,
        keywords::USING,
        keywords::VARCHAR,
        keywords::WHEN,
        keywords::WHERE,
        keywords::WITH,
    ];
    keywords.extend_from_slice(sql_keywords);
    keywords
}

/// Get a list of all function names that are supported by Polars SQL
pub fn all_functions() -> Vec<&'static str> {
    let mut functions = vec![];
    functions.extend_from_slice(PolarsTableFunctions::keywords());
    functions.extend_from_slice(PolarsSQLFunctions::keywords());
    functions
}