rbtr-lang-sql 2026.9.0.dev1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rbtr_lang_sql/__init__.py +1 -0
- rbtr_lang_sql/plugin.py +52 -0
- rbtr_lang_sql/py.typed +0 -0
- rbtr_lang_sql/sql.scm +70 -0
- rbtr_lang_sql/tests/__init__.py +0 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_edges_match_snapshot.json +1 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_extraction_matches_snapshot.json +268 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_sql_dialect_extraction_matches_snapshot[sql_clickhouse].json +59 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_sql_dialect_extraction_matches_snapshot[sql_duckdb].json +78 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_sql_dialect_extraction_matches_snapshot[sql_mysql].json +59 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_sql_dialect_extraction_matches_snapshot[sql_postgres].json +116 -0
- rbtr_lang_sql/tests/__snapshots__/test_samples/test_sql_dialect_extraction_matches_snapshot[sql_sqlite].json +78 -0
- rbtr_lang_sql/tests/cases_extraction.py +265 -0
- rbtr_lang_sql/tests/samples/sql/sql.sql +38 -0
- rbtr_lang_sql/tests/samples/sql_clickhouse.sql +17 -0
- rbtr_lang_sql/tests/samples/sql_duckdb.sql +14 -0
- rbtr_lang_sql/tests/samples/sql_mysql.sql +11 -0
- rbtr_lang_sql/tests/samples/sql_postgres.sql +18 -0
- rbtr_lang_sql/tests/samples/sql_sqlite.sql +11 -0
- rbtr_lang_sql/tests/test_extraction.py +85 -0
- rbtr_lang_sql/tests/test_samples.py +115 -0
- rbtr_lang_sql-2026.9.0.dev1.dist-info/METADATA +79 -0
- rbtr_lang_sql-2026.9.0.dev1.dist-info/RECORD +26 -0
- rbtr_lang_sql-2026.9.0.dev1.dist-info/WHEEL +4 -0
- rbtr_lang_sql-2026.9.0.dev1.dist-info/entry_points.txt +3 -0
- rbtr_lang_sql-2026.9.0.dev1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""SQL language plugin package."""
|
rbtr_lang_sql/plugin.py
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""SQL language plugin.
|
|
2
|
+
|
|
3
|
+
SQL has no functions/classes in the OO sense and no native import
|
|
4
|
+
mechanism, so constructs map onto rbtr's capture conventions by shape:
|
|
5
|
+
structural definitions are classes, routines and executable statements
|
|
6
|
+
are functions, and standalone named objects are variables. One chunk is
|
|
7
|
+
produced per top-level statement, plus one per CTE.
|
|
8
|
+
|
|
9
|
+
The tree-sitter query lives in `sql.scm`: DDL/ALTER/DROP verbs grouped
|
|
10
|
+
into `[...]` alternations by chunk kind and name location, plus hand-
|
|
11
|
+
written patterns for the DML statements those groups can't express.
|
|
12
|
+
Verified against `tree-sitter-sql` 0.3.11.
|
|
13
|
+
|
|
14
|
+
Extracted chunks::
|
|
15
|
+
|
|
16
|
+
CREATE TABLE users (...) → class "users"
|
|
17
|
+
CREATE VIEW / MATERIALIZED VIEW → class
|
|
18
|
+
CREATE TYPE mood AS ENUM (...) → class "mood"
|
|
19
|
+
|
|
20
|
+
CREATE FUNCTION add(...) ... → function "add"
|
|
21
|
+
SELECT ... FROM users → function "users"
|
|
22
|
+
INSERT INTO logs ... → function "logs"
|
|
23
|
+
UPDATE / DELETE ... t → function "t"
|
|
24
|
+
WITH ranked AS (...) → function "ranked" (one per CTE)
|
|
25
|
+
... UNION ... → function, unnamed
|
|
26
|
+
|
|
27
|
+
CREATE INDEX idx ON users(...) → variable "idx"
|
|
28
|
+
CREATE SEQUENCE / SCHEMA / ROLE … → variable
|
|
29
|
+
CREATE TRIGGER trg ... → variable "trg"
|
|
30
|
+
ALTER / DROP <object> → function "<object>"
|
|
31
|
+
|
|
32
|
+
A statement with no nameable target (`SELECT 1`, a sub-query `FROM`, a
|
|
33
|
+
`UNION`) carries no name. `CREATE PROCEDURE` and `PRAGMA` are not
|
|
34
|
+
extracted — the grammar has no node for them (they parse to `ERROR`).
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
from __future__ import annotations
|
|
38
|
+
|
|
39
|
+
from rbtr.languages.registration import LanguageRegistration, QueryExtraction, load_query
|
|
40
|
+
|
|
41
|
+
# ── Plugin ───────────────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
sql = LanguageRegistration(
|
|
45
|
+
id="sql",
|
|
46
|
+
extensions=frozenset({".sql"}),
|
|
47
|
+
grammar_module="tree_sitter_sql",
|
|
48
|
+
extraction=QueryExtraction(
|
|
49
|
+
query=load_query(__package__, "sql"),
|
|
50
|
+
),
|
|
51
|
+
extraction_serial=3,
|
|
52
|
+
)
|
rbtr_lang_sql/py.typed
ADDED
|
File without changes
|
rbtr_lang_sql/sql.scm
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
; Comments (SQL: `--` line is `comment`, `/* */` block is `marginalia`).
|
|
2
|
+
[(comment) (marginalia)] @comment
|
|
3
|
+
|
|
4
|
+
; DDL/ALTER/DROP verbs, grouped by chunk kind and name location.
|
|
5
|
+
;
|
|
6
|
+
; object_reference names are left unanchored: each verb has exactly one
|
|
7
|
+
; direct object_reference, and leaving it unanchored keeps IF NOT EXISTS /
|
|
8
|
+
; OR REPLACE / TEMP working (anchoring to a keyword breaks when those
|
|
9
|
+
; intervene). A bare (identifier) name (index/schema/role/…) is used when
|
|
10
|
+
; the object_reference, if any, is a secondary reference (e.g. an index's
|
|
11
|
+
; ON table). Verified against tree-sitter-sql 0.3.11.
|
|
12
|
+
|
|
13
|
+
[
|
|
14
|
+
(create_table (object_reference name: (identifier) @_cls_name))
|
|
15
|
+
(create_view (object_reference name: (identifier) @_cls_name))
|
|
16
|
+
(create_materialized_view (object_reference name: (identifier) @_cls_name))
|
|
17
|
+
(create_type (object_reference name: (identifier) @_cls_name))
|
|
18
|
+
] @class
|
|
19
|
+
|
|
20
|
+
(create_sequence (object_reference name: (identifier) @_var_name)) @variable
|
|
21
|
+
|
|
22
|
+
[
|
|
23
|
+
(create_function (object_reference name: (identifier) @_fn_name))
|
|
24
|
+
(alter_table (object_reference name: (identifier) @_fn_name))
|
|
25
|
+
(alter_view (object_reference name: (identifier) @_fn_name))
|
|
26
|
+
(alter_sequence (object_reference name: (identifier) @_fn_name))
|
|
27
|
+
(drop_table (object_reference name: (identifier) @_fn_name))
|
|
28
|
+
(drop_view (object_reference name: (identifier) @_fn_name))
|
|
29
|
+
(drop_sequence (object_reference name: (identifier) @_fn_name))
|
|
30
|
+
(drop_function (object_reference name: (identifier) @_fn_name))
|
|
31
|
+
(drop_type (object_reference name: (identifier) @_fn_name))
|
|
32
|
+
] @function
|
|
33
|
+
|
|
34
|
+
[
|
|
35
|
+
(create_index (identifier) @_var_name)
|
|
36
|
+
(create_schema (identifier) @_var_name)
|
|
37
|
+
(create_database (identifier) @_var_name)
|
|
38
|
+
(create_extension (identifier) @_var_name)
|
|
39
|
+
(create_role (identifier) @_var_name)
|
|
40
|
+
] @variable
|
|
41
|
+
|
|
42
|
+
[
|
|
43
|
+
(alter_index (identifier) @_fn_name)
|
|
44
|
+
(alter_schema (identifier) @_fn_name)
|
|
45
|
+
(alter_database (identifier) @_fn_name)
|
|
46
|
+
(alter_role (identifier) @_fn_name)
|
|
47
|
+
(alter_type (identifier) @_fn_name)
|
|
48
|
+
(drop_index (identifier) @_fn_name)
|
|
49
|
+
(drop_schema (identifier) @_fn_name)
|
|
50
|
+
(drop_database (identifier) @_fn_name)
|
|
51
|
+
(drop_role (identifier) @_fn_name)
|
|
52
|
+
(drop_extension (identifier) @_fn_name)
|
|
53
|
+
] @function
|
|
54
|
+
|
|
55
|
+
; DML statements, CTEs, triggers, and set operations — structures the DDL
|
|
56
|
+
; groups can't express. DML patterns are anchored at (program (statement …))
|
|
57
|
+
; so each top-level statement yields exactly one chunk: select and delete
|
|
58
|
+
; keep their target in a sibling from, so the whole statement is captured.
|
|
59
|
+
; A set_operation (UNION/INTERSECT/EXCEPT) has no single table → unnamed.
|
|
60
|
+
|
|
61
|
+
(create_trigger (keyword_trigger) . (object_reference name: (identifier) @_var_name)) @variable
|
|
62
|
+
|
|
63
|
+
(cte (identifier) @_fn_name) @function
|
|
64
|
+
|
|
65
|
+
(program (statement (select)
|
|
66
|
+
(from (relation (object_reference name: (identifier) @_fn_name)))?) @function)
|
|
67
|
+
(program (statement (set_operation) @function))
|
|
68
|
+
(program (statement (insert (object_reference name: (identifier) @_fn_name))) @function)
|
|
69
|
+
(program (statement (update (relation (object_reference name: (identifier) @_fn_name)))) @function)
|
|
70
|
+
(program (statement (delete) (from (object_reference name: (identifier) @_fn_name))) @function)
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"blob_sha": "sha1",
|
|
4
|
+
"file_path": "sql.sql",
|
|
5
|
+
"kind": "comment",
|
|
6
|
+
"name": "",
|
|
7
|
+
"scope": "",
|
|
8
|
+
"language": "sql",
|
|
9
|
+
"file_language": "sql",
|
|
10
|
+
"content": "-- Greeter schema — tables, views, and statements for greetings.\n--\n-- The SQL plugin extracts one chunk per top-level statement: CREATE\n-- TABLE/VIEW (as classes), CREATE FUNCTION and DML/CTEs (as functions),\n-- and CREATE SCHEMA/INDEX/SEQUENCE (as variables). There is no import\n-- concept. CREATE PROCEDURE and PRAGMA do not parse and live in the\n-- xfail registry instead.",
|
|
11
|
+
"line_start": 1,
|
|
12
|
+
"line_end": 7,
|
|
13
|
+
"metadata": {
|
|
14
|
+
"module": "",
|
|
15
|
+
"names": "",
|
|
16
|
+
"dots": "",
|
|
17
|
+
"language_hint": ""
|
|
18
|
+
},
|
|
19
|
+
"id": "fcb24b55c55b71af"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"blob_sha": "sha1",
|
|
23
|
+
"file_path": "sql.sql",
|
|
24
|
+
"kind": "variable",
|
|
25
|
+
"name": "greet",
|
|
26
|
+
"scope": "",
|
|
27
|
+
"language": "sql",
|
|
28
|
+
"file_language": "sql",
|
|
29
|
+
"content": "CREATE SCHEMA greet",
|
|
30
|
+
"line_start": 9,
|
|
31
|
+
"line_end": 9,
|
|
32
|
+
"metadata": {
|
|
33
|
+
"module": "",
|
|
34
|
+
"names": "",
|
|
35
|
+
"dots": "",
|
|
36
|
+
"language_hint": ""
|
|
37
|
+
},
|
|
38
|
+
"id": "2bf9543268256917"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"blob_sha": "sha1",
|
|
42
|
+
"file_path": "sql.sql",
|
|
43
|
+
"kind": "comment",
|
|
44
|
+
"name": "",
|
|
45
|
+
"scope": "",
|
|
46
|
+
"language": "sql",
|
|
47
|
+
"file_language": "sql",
|
|
48
|
+
"content": "-- trailing comment: its own chunk",
|
|
49
|
+
"line_start": 9,
|
|
50
|
+
"line_end": 9,
|
|
51
|
+
"metadata": {
|
|
52
|
+
"module": "",
|
|
53
|
+
"names": "",
|
|
54
|
+
"dots": "",
|
|
55
|
+
"language_hint": ""
|
|
56
|
+
},
|
|
57
|
+
"id": "98756ee52a748b1e"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"blob_sha": "sha1",
|
|
61
|
+
"file_path": "sql.sql",
|
|
62
|
+
"kind": "comment",
|
|
63
|
+
"name": "",
|
|
64
|
+
"scope": "",
|
|
65
|
+
"language": "sql",
|
|
66
|
+
"file_language": "sql",
|
|
67
|
+
"content": "-- Standalone note, separated by blank lines from any statement.\n-- Second line of the same block.",
|
|
68
|
+
"line_start": 11,
|
|
69
|
+
"line_end": 12,
|
|
70
|
+
"metadata": {
|
|
71
|
+
"module": "",
|
|
72
|
+
"names": "",
|
|
73
|
+
"dots": "",
|
|
74
|
+
"language_hint": ""
|
|
75
|
+
},
|
|
76
|
+
"id": "0c438a2a19d6d59e"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"blob_sha": "sha1",
|
|
80
|
+
"file_path": "sql.sql",
|
|
81
|
+
"kind": "class",
|
|
82
|
+
"name": "greeters",
|
|
83
|
+
"scope": "",
|
|
84
|
+
"language": "sql",
|
|
85
|
+
"file_language": "sql",
|
|
86
|
+
"content": "CREATE TABLE greeters (\n id INTEGER PRIMARY KEY,\n prefix TEXT NOT NULL\n)",
|
|
87
|
+
"line_start": 14,
|
|
88
|
+
"line_end": 17,
|
|
89
|
+
"metadata": {
|
|
90
|
+
"module": "",
|
|
91
|
+
"names": "",
|
|
92
|
+
"dots": "",
|
|
93
|
+
"language_hint": ""
|
|
94
|
+
},
|
|
95
|
+
"id": "119e8882c4026de1"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"blob_sha": "sha1",
|
|
99
|
+
"file_path": "sql.sql",
|
|
100
|
+
"kind": "variable",
|
|
101
|
+
"name": "idx_greeters_prefix",
|
|
102
|
+
"scope": "",
|
|
103
|
+
"language": "sql",
|
|
104
|
+
"file_language": "sql",
|
|
105
|
+
"content": "CREATE INDEX idx_greeters_prefix ON greeters (prefix)",
|
|
106
|
+
"line_start": 19,
|
|
107
|
+
"line_end": 19,
|
|
108
|
+
"metadata": {
|
|
109
|
+
"module": "",
|
|
110
|
+
"names": "",
|
|
111
|
+
"dots": "",
|
|
112
|
+
"language_hint": ""
|
|
113
|
+
},
|
|
114
|
+
"id": "ab3497f2cf28a336"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"blob_sha": "sha1",
|
|
118
|
+
"file_path": "sql.sql",
|
|
119
|
+
"kind": "variable",
|
|
120
|
+
"name": "greeting_id_seq",
|
|
121
|
+
"scope": "",
|
|
122
|
+
"language": "sql",
|
|
123
|
+
"file_language": "sql",
|
|
124
|
+
"content": "CREATE SEQUENCE greeting_id_seq",
|
|
125
|
+
"line_start": 21,
|
|
126
|
+
"line_end": 21,
|
|
127
|
+
"metadata": {
|
|
128
|
+
"module": "",
|
|
129
|
+
"names": "",
|
|
130
|
+
"dots": "",
|
|
131
|
+
"language_hint": ""
|
|
132
|
+
},
|
|
133
|
+
"id": "1fdfd3531b021310"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"blob_sha": "sha1",
|
|
137
|
+
"file_path": "sql.sql",
|
|
138
|
+
"kind": "class",
|
|
139
|
+
"name": "active_greeters",
|
|
140
|
+
"scope": "",
|
|
141
|
+
"language": "sql",
|
|
142
|
+
"file_language": "sql",
|
|
143
|
+
"content": "CREATE VIEW active_greeters AS\nSELECT id, prefix FROM greeters WHERE prefix IS NOT NULL",
|
|
144
|
+
"line_start": 23,
|
|
145
|
+
"line_end": 24,
|
|
146
|
+
"metadata": {
|
|
147
|
+
"module": "",
|
|
148
|
+
"names": "",
|
|
149
|
+
"dots": "",
|
|
150
|
+
"language_hint": ""
|
|
151
|
+
},
|
|
152
|
+
"id": "42074e751143db09"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"blob_sha": "sha1",
|
|
156
|
+
"file_path": "sql.sql",
|
|
157
|
+
"kind": "function",
|
|
158
|
+
"name": "shout",
|
|
159
|
+
"scope": "",
|
|
160
|
+
"language": "sql",
|
|
161
|
+
"file_language": "sql",
|
|
162
|
+
"content": "CREATE FUNCTION shout(message TEXT) RETURNS TEXT AS 'SELECT upper(message)'",
|
|
163
|
+
"line_start": 26,
|
|
164
|
+
"line_end": 26,
|
|
165
|
+
"metadata": {
|
|
166
|
+
"module": "",
|
|
167
|
+
"names": "",
|
|
168
|
+
"dots": "",
|
|
169
|
+
"language_hint": ""
|
|
170
|
+
},
|
|
171
|
+
"id": "e809c9a3ee5d5686"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"blob_sha": "sha1",
|
|
175
|
+
"file_path": "sql.sql",
|
|
176
|
+
"kind": "function",
|
|
177
|
+
"name": "recent",
|
|
178
|
+
"scope": "",
|
|
179
|
+
"language": "sql",
|
|
180
|
+
"file_language": "sql",
|
|
181
|
+
"content": "WITH recent AS (\n SELECT id FROM greeters\n)\n\nSELECT id FROM recent",
|
|
182
|
+
"line_start": 28,
|
|
183
|
+
"line_end": 32,
|
|
184
|
+
"metadata": {
|
|
185
|
+
"module": "",
|
|
186
|
+
"names": "",
|
|
187
|
+
"dots": "",
|
|
188
|
+
"language_hint": ""
|
|
189
|
+
},
|
|
190
|
+
"id": "330f6d8ac830cc9f"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"blob_sha": "sha1",
|
|
194
|
+
"file_path": "sql.sql",
|
|
195
|
+
"kind": "function",
|
|
196
|
+
"name": "recent",
|
|
197
|
+
"scope": "",
|
|
198
|
+
"language": "sql",
|
|
199
|
+
"file_language": "sql",
|
|
200
|
+
"content": "recent AS (\n SELECT id FROM greeters\n)",
|
|
201
|
+
"line_start": 28,
|
|
202
|
+
"line_end": 30,
|
|
203
|
+
"metadata": {
|
|
204
|
+
"module": "",
|
|
205
|
+
"names": "",
|
|
206
|
+
"dots": "",
|
|
207
|
+
"language_hint": ""
|
|
208
|
+
},
|
|
209
|
+
"id": "a2b86ca2dd9035b0"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"blob_sha": "sha1",
|
|
213
|
+
"file_path": "sql.sql",
|
|
214
|
+
"kind": "function",
|
|
215
|
+
"name": "greeters",
|
|
216
|
+
"scope": "",
|
|
217
|
+
"language": "sql",
|
|
218
|
+
"file_language": "sql",
|
|
219
|
+
"content": "INSERT INTO greeters (id, prefix) VALUES (1, 'Hello')",
|
|
220
|
+
"line_start": 34,
|
|
221
|
+
"line_end": 34,
|
|
222
|
+
"metadata": {
|
|
223
|
+
"module": "",
|
|
224
|
+
"names": "",
|
|
225
|
+
"dots": "",
|
|
226
|
+
"language_hint": ""
|
|
227
|
+
},
|
|
228
|
+
"id": "c68ef3a9070b8b98"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"blob_sha": "sha1",
|
|
232
|
+
"file_path": "sql.sql",
|
|
233
|
+
"kind": "function",
|
|
234
|
+
"name": "greeters",
|
|
235
|
+
"scope": "",
|
|
236
|
+
"language": "sql",
|
|
237
|
+
"file_language": "sql",
|
|
238
|
+
"content": "UPDATE greeters SET prefix = 'Hi' WHERE id = 1",
|
|
239
|
+
"line_start": 36,
|
|
240
|
+
"line_end": 36,
|
|
241
|
+
"metadata": {
|
|
242
|
+
"module": "",
|
|
243
|
+
"names": "",
|
|
244
|
+
"dots": "",
|
|
245
|
+
"language_hint": ""
|
|
246
|
+
},
|
|
247
|
+
"id": "f9b1fae7ce538957"
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
"blob_sha": "sha1",
|
|
251
|
+
"file_path": "sql.sql",
|
|
252
|
+
"kind": "function",
|
|
253
|
+
"name": "greeters",
|
|
254
|
+
"scope": "",
|
|
255
|
+
"language": "sql",
|
|
256
|
+
"file_language": "sql",
|
|
257
|
+
"content": "DELETE FROM greeters WHERE id = 1",
|
|
258
|
+
"line_start": 38,
|
|
259
|
+
"line_end": 38,
|
|
260
|
+
"metadata": {
|
|
261
|
+
"module": "",
|
|
262
|
+
"names": "",
|
|
263
|
+
"dots": "",
|
|
264
|
+
"language_hint": ""
|
|
265
|
+
},
|
|
266
|
+
"id": "6af17e06c316e1a8"
|
|
267
|
+
}
|
|
268
|
+
]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"blob_sha": "sha1",
|
|
4
|
+
"file_path": "sql_clickhouse.sql",
|
|
5
|
+
"kind": "comment",
|
|
6
|
+
"name": "",
|
|
7
|
+
"scope": "",
|
|
8
|
+
"language": "sql",
|
|
9
|
+
"file_language": "sql",
|
|
10
|
+
"content": "-- ClickHouse dialect sample — MergeTree engine, ORDER BY, special types.",
|
|
11
|
+
"line_start": 1,
|
|
12
|
+
"line_end": 1,
|
|
13
|
+
"metadata": {
|
|
14
|
+
"module": "",
|
|
15
|
+
"names": "",
|
|
16
|
+
"dots": "",
|
|
17
|
+
"language_hint": ""
|
|
18
|
+
},
|
|
19
|
+
"id": "0202263c4558210b"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"blob_sha": "sha1",
|
|
23
|
+
"file_path": "sql_clickhouse.sql",
|
|
24
|
+
"kind": "class",
|
|
25
|
+
"name": "events",
|
|
26
|
+
"scope": "",
|
|
27
|
+
"language": "sql",
|
|
28
|
+
"file_language": "sql",
|
|
29
|
+
"content": "CREATE TABLE events (\n event_date Date,\n user_id UInt64,\n name LowCardinality(String),\n props Array(String),\n value Nullable(Float64)\n)\nENGINE = MergeTree\nPARTITION BY toYYYYMM(event_date)",
|
|
30
|
+
"line_start": 3,
|
|
31
|
+
"line_end": 11,
|
|
32
|
+
"metadata": {
|
|
33
|
+
"module": "",
|
|
34
|
+
"names": "",
|
|
35
|
+
"dots": "",
|
|
36
|
+
"language_hint": ""
|
|
37
|
+
},
|
|
38
|
+
"id": "b7a5c7af04875e96"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"blob_sha": "sha1",
|
|
42
|
+
"file_path": "sql_clickhouse.sql",
|
|
43
|
+
"kind": "class",
|
|
44
|
+
"name": "events_mv",
|
|
45
|
+
"scope": "",
|
|
46
|
+
"language": "sql",
|
|
47
|
+
"file_language": "sql",
|
|
48
|
+
"content": "CREATE MATERIALIZED VIEW events_mv\nENGINE = SummingMergeTree\nORDER BY user_id\nAS SELECT user_id, count() AS c FROM events GROUP BY user_id",
|
|
49
|
+
"line_start": 14,
|
|
50
|
+
"line_end": 17,
|
|
51
|
+
"metadata": {
|
|
52
|
+
"module": "",
|
|
53
|
+
"names": "",
|
|
54
|
+
"dots": "",
|
|
55
|
+
"language_hint": ""
|
|
56
|
+
},
|
|
57
|
+
"id": "b6ef13e06c2afd39"
|
|
58
|
+
}
|
|
59
|
+
]
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"blob_sha": "sha1",
|
|
4
|
+
"file_path": "sql_duckdb.sql",
|
|
5
|
+
"kind": "comment",
|
|
6
|
+
"name": "",
|
|
7
|
+
"scope": "",
|
|
8
|
+
"language": "sql",
|
|
9
|
+
"file_language": "sql",
|
|
10
|
+
"content": "-- DuckDB dialect sample — LIST/STRUCT types, CTAS, CREATE MACRO.",
|
|
11
|
+
"line_start": 1,
|
|
12
|
+
"line_end": 1,
|
|
13
|
+
"metadata": {
|
|
14
|
+
"module": "",
|
|
15
|
+
"names": "",
|
|
16
|
+
"dots": "",
|
|
17
|
+
"language_hint": ""
|
|
18
|
+
},
|
|
19
|
+
"id": "0202263c4558210b"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"blob_sha": "sha1",
|
|
23
|
+
"file_path": "sql_duckdb.sql",
|
|
24
|
+
"kind": "class",
|
|
25
|
+
"name": "users",
|
|
26
|
+
"scope": "",
|
|
27
|
+
"language": "sql",
|
|
28
|
+
"file_language": "sql",
|
|
29
|
+
"content": "CREATE TABLE users (\n id BIGINT PRIMARY KEY,\n email VARCHAR NOT NULL,\n tags VARCHAR[],\n profile STRUCT(name VARCHAR, age INTEGER)",
|
|
30
|
+
"line_start": 3,
|
|
31
|
+
"line_end": 7,
|
|
32
|
+
"metadata": {
|
|
33
|
+
"module": "",
|
|
34
|
+
"names": "",
|
|
35
|
+
"dots": "",
|
|
36
|
+
"language_hint": ""
|
|
37
|
+
},
|
|
38
|
+
"id": "bbc0c1d3c758c83c"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"blob_sha": "sha1",
|
|
42
|
+
"file_path": "sql_duckdb.sql",
|
|
43
|
+
"kind": "class",
|
|
44
|
+
"name": "recent",
|
|
45
|
+
"scope": "",
|
|
46
|
+
"language": "sql",
|
|
47
|
+
"file_language": "sql",
|
|
48
|
+
"content": "CREATE TABLE recent AS SELECT * FROM users LIMIT 10",
|
|
49
|
+
"line_start": 10,
|
|
50
|
+
"line_end": 10,
|
|
51
|
+
"metadata": {
|
|
52
|
+
"module": "",
|
|
53
|
+
"names": "",
|
|
54
|
+
"dots": "",
|
|
55
|
+
"language_hint": ""
|
|
56
|
+
},
|
|
57
|
+
"id": "9a7eceaf6e76be85"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"blob_sha": "sha1",
|
|
61
|
+
"file_path": "sql_duckdb.sql",
|
|
62
|
+
"kind": "class",
|
|
63
|
+
"name": "emails",
|
|
64
|
+
"scope": "",
|
|
65
|
+
"language": "sql",
|
|
66
|
+
"file_language": "sql",
|
|
67
|
+
"content": "CREATE VIEW emails AS SELECT email FROM users",
|
|
68
|
+
"line_start": 14,
|
|
69
|
+
"line_end": 14,
|
|
70
|
+
"metadata": {
|
|
71
|
+
"module": "",
|
|
72
|
+
"names": "",
|
|
73
|
+
"dots": "",
|
|
74
|
+
"language_hint": ""
|
|
75
|
+
},
|
|
76
|
+
"id": "c401891794cc2bc1"
|
|
77
|
+
}
|
|
78
|
+
]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"blob_sha": "sha1",
|
|
4
|
+
"file_path": "sql_mysql.sql",
|
|
5
|
+
"kind": "comment",
|
|
6
|
+
"name": "",
|
|
7
|
+
"scope": "",
|
|
8
|
+
"language": "sql",
|
|
9
|
+
"file_language": "sql",
|
|
10
|
+
"content": "-- MySQL dialect sample — backtick identifiers, UNSIGNED AUTO_INCREMENT, ENGINE.",
|
|
11
|
+
"line_start": 1,
|
|
12
|
+
"line_end": 1,
|
|
13
|
+
"metadata": {
|
|
14
|
+
"module": "",
|
|
15
|
+
"names": "",
|
|
16
|
+
"dots": "",
|
|
17
|
+
"language_hint": ""
|
|
18
|
+
},
|
|
19
|
+
"id": "0202263c4558210b"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"blob_sha": "sha1",
|
|
23
|
+
"file_path": "sql_mysql.sql",
|
|
24
|
+
"kind": "class",
|
|
25
|
+
"name": "`users`",
|
|
26
|
+
"scope": "",
|
|
27
|
+
"language": "sql",
|
|
28
|
+
"file_language": "sql",
|
|
29
|
+
"content": "CREATE TABLE `users` (\n `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,\n `email` VARCHAR(255) NOT NULL,\n `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (`id`),\n UNIQUE KEY `uq_email` (`email`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4",
|
|
30
|
+
"line_start": 3,
|
|
31
|
+
"line_end": 9,
|
|
32
|
+
"metadata": {
|
|
33
|
+
"module": "",
|
|
34
|
+
"names": "",
|
|
35
|
+
"dots": "",
|
|
36
|
+
"language_hint": ""
|
|
37
|
+
},
|
|
38
|
+
"id": "4cab96a45cc21ec3"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"blob_sha": "sha1",
|
|
42
|
+
"file_path": "sql_mysql.sql",
|
|
43
|
+
"kind": "variable",
|
|
44
|
+
"name": "`idx_email`",
|
|
45
|
+
"scope": "",
|
|
46
|
+
"language": "sql",
|
|
47
|
+
"file_language": "sql",
|
|
48
|
+
"content": "CREATE INDEX `idx_email` ON `users` (`email`)",
|
|
49
|
+
"line_start": 11,
|
|
50
|
+
"line_end": 11,
|
|
51
|
+
"metadata": {
|
|
52
|
+
"module": "",
|
|
53
|
+
"names": "",
|
|
54
|
+
"dots": "",
|
|
55
|
+
"language_hint": ""
|
|
56
|
+
},
|
|
57
|
+
"id": "1b1d6760ac055d12"
|
|
58
|
+
}
|
|
59
|
+
]
|