1use crate::upstream::syn::token::Keyword;
2
3fn keyword_str(k: Keyword) -> &'static str {
4 match k {
5 Keyword::Access => k.as_str(),
6 Keyword::After => k.as_str(),
7 Keyword::Algorithm => k.as_str(),
8 Keyword::All => k.as_str(),
9 Keyword::Alter => k.as_str(),
10 Keyword::Always => k.as_str(),
11 Keyword::Analyzer => k.as_str(),
12 Keyword::Api => k.as_str(),
13 Keyword::As => k.as_str(),
14 Keyword::Ascending => k.as_str(),
15 Keyword::Ascii => k.as_str(),
16 Keyword::Assert => k.as_str(),
17 Keyword::Async => k.as_str(),
18 Keyword::At => k.as_str(),
19 Keyword::Authenticate => k.as_str(),
20 Keyword::Auto => k.as_str(),
21 Keyword::Backend => k.as_str(),
22 Keyword::Batch => k.as_str(),
23 Keyword::Bearer => k.as_str(),
24 Keyword::Before => k.as_str(),
25 Keyword::Begin => k.as_str(),
26 Keyword::Blank => k.as_str(),
27 Keyword::Bucket => k.as_str(),
28 Keyword::Reject => k.as_str(),
29 Keyword::Bm25 => k.as_str(),
30 Keyword::Break => k.as_str(),
31 Keyword::By => k.as_str(),
32 Keyword::Camel => k.as_str(),
33 Keyword::Cancel => k.as_str(),
34 Keyword::Cascade => k.as_str(),
35 Keyword::ChangeFeed => k.as_str(),
36 Keyword::Changes => k.as_str(),
37 Keyword::Capacity => k.as_str(),
38 Keyword::Class => k.as_str(),
39 Keyword::Comment => k.as_str(),
40 Keyword::Commit => k.as_str(),
41 Keyword::Compact => k.as_str(),
42 Keyword::Concurrently => k.as_str(),
43 Keyword::Config => k.as_str(),
44 Keyword::Content => k.as_str(),
45 Keyword::Continue => k.as_str(),
46 Keyword::Computed => k.as_str(),
47 Keyword::Count => k.as_str(),
48 Keyword::Create => k.as_str(),
49 Keyword::Database => k.as_str(),
50 Keyword::Default => k.as_str(),
51 Keyword::Define => k.as_str(),
52 Keyword::Delete => k.as_str(),
53 Keyword::Descending => k.as_str(),
54 Keyword::Diff => k.as_str(),
55 Keyword::Dimension => k.as_str(),
56 Keyword::Distance => k.as_str(),
57 Keyword::Drop => k.as_str(),
58 Keyword::Duplicate => k.as_str(),
59 Keyword::Efc => k.as_str(),
60 Keyword::Edgengram => k.as_str(),
61 Keyword::Event => k.as_str(),
62 Keyword::Else => k.as_str(),
63 Keyword::End => k.as_str(),
64 Keyword::Enforced => k.as_str(),
65 Keyword::Exclude => k.as_str(),
66 Keyword::Exists => k.as_str(),
67 Keyword::Expired => k.as_str(),
68 Keyword::Explain => k.as_str(),
69 Keyword::Expunge => k.as_str(),
70 Keyword::ExtendCandidates => k.as_str(),
71 Keyword::False => k.as_str(),
72 Keyword::Fetch => k.as_str(),
73 Keyword::Field => k.as_str(),
74 Keyword::Fields => k.as_str(),
75 Keyword::Filters => k.as_str(),
76 Keyword::Flexible => k.as_str(),
77 Keyword::For => k.as_str(),
78 Keyword::From => k.as_str(),
79 Keyword::Full => k.as_str(),
80 Keyword::Fulltext => k.as_str(),
81 Keyword::Function => k.as_str(),
82 Keyword::Functions => k.as_str(),
83 Keyword::Grant => k.as_str(),
84 Keyword::Graphql => k.as_str(),
85 Keyword::Group => k.as_str(),
86 Keyword::Headers => k.as_str(),
87 Keyword::Highlights => k.as_str(),
88 Keyword::Hnsw => k.as_str(),
89 Keyword::Ignore => k.as_str(),
90 Keyword::Include => k.as_str(),
91 Keyword::Index => k.as_str(),
92 Keyword::Info => k.as_str(),
93 Keyword::Insert => k.as_str(),
94 Keyword::Into => k.as_str(),
95 Keyword::If => k.as_str(),
96 Keyword::Is => k.as_str(),
97 Keyword::Issuer => k.as_str(),
98 Keyword::Jwt => k.as_str(),
99 Keyword::Jwks => k.as_str(),
100 Keyword::HashedVector => k.as_str(),
101 Keyword::Key => k.as_str(),
102 Keyword::KeepPrunedConnections => k.as_str(),
103 Keyword::Kill => k.as_str(),
104 Keyword::Let => k.as_str(),
105 Keyword::Limit => k.as_str(),
106 Keyword::Live => k.as_str(),
107 Keyword::Lowercase => k.as_str(),
108 Keyword::Lm => k.as_str(),
109 Keyword::M => k.as_str(),
110 Keyword::M0 => k.as_str(),
111 Keyword::Mapper => k.as_str(),
112 Keyword::MaxDepth => k.as_str(),
113 Keyword::Middleware => k.as_str(),
114 Keyword::Merge => k.as_str(),
115 Keyword::Model => k.as_str(),
116 Keyword::Module => k.as_str(),
117 Keyword::Namespace => k.as_str(),
118 Keyword::Ngram => k.as_str(),
119 Keyword::No => k.as_str(),
120 Keyword::NoIndex => k.as_str(),
121 Keyword::None => k.as_str(),
122 Keyword::Null => k.as_str(),
123 Keyword::Numeric => k.as_str(),
124 Keyword::Omit => k.as_str(),
125 Keyword::On => k.as_str(),
126 Keyword::Only => k.as_str(),
127 Keyword::Option => k.as_str(),
128 Keyword::Order => k.as_str(),
129 Keyword::Original => k.as_str(),
130 Keyword::Overwrite => k.as_str(),
131 Keyword::Parallel => k.as_str(),
132 Keyword::Param => k.as_str(),
133 Keyword::Passhash => k.as_str(),
134 Keyword::Password => k.as_str(),
135 Keyword::Patch => k.as_str(),
136 Keyword::Permissions => k.as_str(),
137 Keyword::PostingsCache => k.as_str(),
138 Keyword::PostingsOrder => k.as_str(),
139 Keyword::Prepare => k.as_str(),
140 Keyword::Punct => k.as_str(),
141 Keyword::Purge => k.as_str(),
142 Keyword::Range => k.as_str(),
143 Keyword::Readonly => k.as_str(),
144 Keyword::Rebuild => k.as_str(),
145 Keyword::Reference => k.as_str(),
146 Keyword::Refresh => k.as_str(),
147 Keyword::Regex => k.as_str(),
148 Keyword::Relate => k.as_str(),
149 Keyword::Relation => k.as_str(),
150 Keyword::Remove => k.as_str(),
151 Keyword::Replace => k.as_str(),
152 Keyword::Retry => k.as_str(),
153 Keyword::Return => k.as_str(),
154 Keyword::Revoke => k.as_str(),
155 Keyword::Revoked => k.as_str(),
156 Keyword::Roles => k.as_str(),
157 Keyword::Root => k.as_str(),
158 Keyword::Schemafull => k.as_str(),
159 Keyword::Schemaless => k.as_str(),
160 Keyword::Scope => k.as_str(),
161 Keyword::Select => k.as_str(),
162 Keyword::Sequence => k.as_str(),
163 Keyword::Session => k.as_str(),
164 Keyword::Set => k.as_str(),
165 Keyword::Show => k.as_str(),
166 Keyword::Signin => k.as_str(),
167 Keyword::Signup => k.as_str(),
168 Keyword::Since => k.as_str(),
169 Keyword::Sleep => k.as_str(),
170 Keyword::Snowball => k.as_str(),
171 Keyword::Split => k.as_str(),
172 Keyword::Start => k.as_str(),
173 Keyword::Strict => k.as_str(),
174 Keyword::Structure => k.as_str(),
175 Keyword::System => k.as_str(),
176 Keyword::Table => k.as_str(),
177 Keyword::Tables => k.as_str(),
178 Keyword::TempFiles => k.as_str(),
179 Keyword::TermsCache => k.as_str(),
180 Keyword::TermsOrder => k.as_str(),
181 Keyword::Then => k.as_str(),
182 Keyword::Throw => k.as_str(),
183 Keyword::Timeout => k.as_str(),
184 Keyword::Tokenizers => k.as_str(),
185 Keyword::Token => k.as_str(),
186 Keyword::To => k.as_str(),
187 Keyword::Transaction => k.as_str(),
188 Keyword::True => k.as_str(),
189 Keyword::Type => k.as_str(),
190 Keyword::Unique => k.as_str(),
191 Keyword::Unset => k.as_str(),
192 Keyword::Update => k.as_str(),
193 Keyword::Upsert => k.as_str(),
194 Keyword::Uppercase => k.as_str(),
195 Keyword::Url => k.as_str(),
196 Keyword::Use => k.as_str(),
197 Keyword::User => k.as_str(),
198 Keyword::Value => k.as_str(),
199 Keyword::Values => k.as_str(),
200 Keyword::Version => k.as_str(),
201 Keyword::Vs => k.as_str(),
202 Keyword::When => k.as_str(),
203 Keyword::Where => k.as_str(),
204 Keyword::With => k.as_str(),
205 Keyword::AllInside => k.as_str(),
206 Keyword::AndKw => k.as_str(),
207 Keyword::AnyInside => k.as_str(),
208 Keyword::Inside => k.as_str(),
209 Keyword::Intersects => k.as_str(),
210 Keyword::NoneInside => k.as_str(),
211 Keyword::NotInside => k.as_str(),
212 Keyword::OrKw => k.as_str(),
213 Keyword::Outside => k.as_str(),
214 Keyword::Not => k.as_str(),
215 Keyword::And => k.as_str(),
216 Keyword::Collate => k.as_str(),
217 Keyword::ContainsAll => k.as_str(),
218 Keyword::ContainsAny => k.as_str(),
219 Keyword::ContainsNone => k.as_str(),
220 Keyword::ContainsNot => k.as_str(),
221 Keyword::Contains => k.as_str(),
222 Keyword::In => k.as_str(),
223 Keyword::Out => k.as_str(),
224 Keyword::Normal => k.as_str(),
225 Keyword::Any => k.as_str(),
226 Keyword::Array => k.as_str(),
227 Keyword::Geometry => k.as_str(),
228 Keyword::Record => k.as_str(),
229 Keyword::Bool => k.as_str(),
230 Keyword::Bytes => k.as_str(),
231 Keyword::Datetime => k.as_str(),
232 Keyword::Decimal => k.as_str(),
233 Keyword::Duration => k.as_str(),
234 Keyword::Float => k.as_str(),
235 Keyword::Fn => k.as_str(),
236 Keyword::Silo => k.as_str(),
237 Keyword::Mod => k.as_str(),
238 Keyword::Int => k.as_str(),
239 Keyword::Number => k.as_str(),
240 Keyword::Object => k.as_str(),
241 Keyword::String => k.as_str(),
242 Keyword::Uuid => k.as_str(),
243 Keyword::Ulid => k.as_str(),
244 Keyword::Rand => k.as_str(),
245 Keyword::References => k.as_str(),
246 Keyword::Feature => k.as_str(),
247 Keyword::Line => k.as_str(),
248 Keyword::Point => k.as_str(),
249 Keyword::Polygon => k.as_str(),
250 Keyword::MultiPoint => k.as_str(),
251 Keyword::MultiLine => k.as_str(),
252 Keyword::MultiPolygon => k.as_str(),
253 Keyword::Collection => k.as_str(),
254 Keyword::File => k.as_str(),
255 Keyword::FN => k.as_str(),
256 Keyword::ML => k.as_str(),
257 Keyword::Get => k.as_str(),
258 Keyword::Post => k.as_str(),
259 Keyword::Put => k.as_str(),
260 Keyword::Trace => k.as_str(),
261 }
262}
263
264pub fn all_keywords() -> &'static [&'static str] {
270 use std::sync::LazyLock;
271
272 static KEYWORDS: LazyLock<Vec<&'static str>> = LazyLock::new(|| {
273 use Keyword::*;
274 let variants = [
275 Access,
276 After,
277 Algorithm,
278 All,
279 Alter,
280 Always,
281 Analyzer,
282 Api,
283 As,
284 Ascending,
285 Ascii,
286 Assert,
287 Async,
288 At,
289 Authenticate,
290 Auto,
291 Backend,
292 Batch,
293 Bearer,
294 Before,
295 Begin,
296 Blank,
297 Bucket,
298 Reject,
299 Bm25,
300 Break,
301 By,
302 Camel,
303 Cancel,
304 Cascade,
305 ChangeFeed,
306 Changes,
307 Capacity,
308 Class,
309 Comment,
310 Commit,
311 Compact,
312 Concurrently,
313 Config,
314 Content,
315 Continue,
316 Computed,
317 Count,
318 Create,
319 Database,
320 Default,
321 Define,
322 Delete,
323 Descending,
324 Diff,
325 Dimension,
326 Distance,
327 Drop,
328 Duplicate,
329 Efc,
330 Edgengram,
331 Event,
332 Else,
333 End,
334 Enforced,
335 Exclude,
336 Exists,
337 Expired,
338 Explain,
339 Expunge,
340 ExtendCandidates,
341 False,
342 Fetch,
343 Field,
344 Fields,
345 Filters,
346 Flexible,
347 For,
348 From,
349 Full,
350 Fulltext,
351 Function,
352 Functions,
353 Grant,
354 Graphql,
355 Group,
356 Headers,
357 Highlights,
358 Hnsw,
359 Ignore,
360 Include,
361 Index,
362 Info,
363 Insert,
364 Into,
365 If,
366 Is,
367 Issuer,
368 Jwt,
369 Jwks,
370 HashedVector,
371 Key,
372 KeepPrunedConnections,
373 Kill,
374 Let,
375 Limit,
376 Live,
377 Lowercase,
378 Lm,
379 M,
380 M0,
381 Mapper,
382 MaxDepth,
383 Middleware,
384 Merge,
385 Model,
386 Module,
387 Namespace,
388 Ngram,
389 No,
390 NoIndex,
391 None,
392 Null,
393 Numeric,
394 Omit,
395 On,
396 Only,
397 Option,
398 Order,
399 Original,
400 Overwrite,
401 Parallel,
402 Param,
403 Passhash,
404 Password,
405 Patch,
406 Permissions,
407 PostingsCache,
408 PostingsOrder,
409 Prepare,
410 Punct,
411 Purge,
412 Range,
413 Readonly,
414 Rebuild,
415 Reference,
416 Refresh,
417 Regex,
418 Relate,
419 Relation,
420 Remove,
421 Replace,
422 Retry,
423 Return,
424 Revoke,
425 Revoked,
426 Roles,
427 Root,
428 Schemafull,
429 Schemaless,
430 Scope,
431 Select,
432 Sequence,
433 Session,
434 Set,
435 Show,
436 Signin,
437 Signup,
438 Since,
439 Sleep,
440 Snowball,
441 Split,
442 Start,
443 Strict,
444 Structure,
445 System,
446 Table,
447 Tables,
448 TempFiles,
449 TermsCache,
450 TermsOrder,
451 Then,
452 Throw,
453 Timeout,
454 Tokenizers,
455 Token,
456 To,
457 Transaction,
458 True,
459 Type,
460 Unique,
461 Unset,
462 Update,
463 Upsert,
464 Uppercase,
465 Url,
466 Use,
467 User,
468 Value,
469 Values,
470 Version,
471 Vs,
472 When,
473 Where,
474 With,
475 AllInside,
476 AndKw,
477 AnyInside,
478 Inside,
479 Intersects,
480 NoneInside,
481 NotInside,
482 OrKw,
483 Outside,
484 Not,
485 And,
486 Collate,
487 ContainsAll,
488 ContainsAny,
489 ContainsNone,
490 ContainsNot,
491 Contains,
492 In,
493 Out,
494 Normal,
495 Any,
496 Array,
497 Geometry,
498 Record,
499 Bool,
500 Bytes,
501 Datetime,
502 Decimal,
503 Duration,
504 Float,
505 Fn,
506 Silo,
507 Mod,
508 Int,
509 Number,
510 Object,
511 String,
512 Uuid,
513 Ulid,
514 Rand,
515 References,
516 Feature,
517 Line,
518 Point,
519 Polygon,
520 MultiPoint,
521 MultiLine,
522 MultiPolygon,
523 Collection,
524 File,
525 FN,
526 ML,
527 Get,
528 Post,
529 Put,
530 Trace,
531 ];
532 let mut kws: Vec<&str> = variants.iter().map(|k| keyword_str(*k)).collect();
533 kws.sort();
534 kws.dedup();
535 kws
536 });
537 &KEYWORDS
538}