gqlite 1.2.0 → 1.2.2

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.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/ext/gqliterb/.cargo/config.toml +2 -0
  3. data/ext/gqliterb/Cargo.lock +133 -123
  4. data/ext/gqliterb/Cargo.toml +3 -6
  5. data/ext/gqliterb/src/lib.rs +2 -2
  6. data/ext/gqliterb/vendor/gqlitedb/Cargo.lock +2060 -0
  7. data/ext/gqliterb/vendor/gqlitedb/Cargo.toml +132 -0
  8. data/ext/gqliterb/vendor/gqlitedb/askama.toml +3 -0
  9. data/ext/gqliterb/vendor/gqlitedb/benches/common/mod.rs +25 -0
  10. data/ext/gqliterb/vendor/gqlitedb/benches/common/pokec.rs +185 -0
  11. data/ext/gqliterb/vendor/gqlitedb/benches/pokec_divan.rs +137 -0
  12. data/ext/gqliterb/vendor/gqlitedb/benches/pokec_iai.rs +122 -0
  13. data/ext/gqliterb/vendor/gqlitedb/release.toml +7 -0
  14. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/arithmetic.rs +96 -0
  15. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/containers.rs +33 -0
  16. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/count.rs +35 -0
  17. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/stats.rs +168 -0
  18. data/ext/gqliterb/vendor/gqlitedb/src/aggregators.rs +74 -0
  19. data/ext/gqliterb/vendor/gqlitedb/src/capi.rs +236 -0
  20. data/ext/gqliterb/vendor/gqlitedb/src/compiler/expression_analyser.rs +427 -0
  21. data/ext/gqliterb/vendor/gqlitedb/src/compiler/variables_manager.rs +620 -0
  22. data/ext/gqliterb/vendor/gqlitedb/src/compiler.rs +1106 -0
  23. data/ext/gqliterb/vendor/gqlitedb/src/connection.rs +208 -0
  24. data/ext/gqliterb/vendor/gqlitedb/src/consts.rs +10 -0
  25. data/ext/gqliterb/vendor/gqlitedb/src/error.rs +621 -0
  26. data/ext/gqliterb/vendor/gqlitedb/src/functions/containers.rs +115 -0
  27. data/ext/gqliterb/vendor/gqlitedb/src/functions/edge.rs +20 -0
  28. data/ext/gqliterb/vendor/gqlitedb/src/functions/math.rs +44 -0
  29. data/ext/gqliterb/vendor/gqlitedb/src/functions/node.rs +16 -0
  30. data/ext/gqliterb/vendor/gqlitedb/src/functions/path.rs +48 -0
  31. data/ext/gqliterb/vendor/gqlitedb/src/functions/scalar.rs +86 -0
  32. data/ext/gqliterb/vendor/gqlitedb/src/functions/string.rs +28 -0
  33. data/ext/gqliterb/vendor/gqlitedb/src/functions/value.rs +99 -0
  34. data/ext/gqliterb/vendor/gqlitedb/src/functions.rs +412 -0
  35. data/ext/gqliterb/vendor/gqlitedb/src/graph.rs +268 -0
  36. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/evaluators.rs +1788 -0
  37. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/instructions.rs +262 -0
  38. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/mod.rs +4 -0
  39. data/ext/gqliterb/vendor/gqlitedb/src/lib.rs +42 -0
  40. data/ext/gqliterb/vendor/gqlitedb/src/parser/ast.rs +625 -0
  41. data/ext/gqliterb/vendor/gqlitedb/src/parser/gql.pest +191 -0
  42. data/ext/gqliterb/vendor/gqlitedb/src/parser/parser.rs +1153 -0
  43. data/ext/gqliterb/vendor/gqlitedb/src/parser.rs +4 -0
  44. data/ext/gqliterb/vendor/gqlitedb/src/prelude.rs +8 -0
  45. data/ext/gqliterb/vendor/gqlitedb/src/serialize_with.rs +94 -0
  46. data/ext/gqliterb/vendor/gqlitedb/src/store/pgql.rs +121 -0
  47. data/ext/gqliterb/vendor/gqlitedb/src/store/redb.rs +1250 -0
  48. data/ext/gqliterb/vendor/gqlitedb/src/store/sqlite.rs +994 -0
  49. data/ext/gqliterb/vendor/gqlitedb/src/store.rs +432 -0
  50. data/ext/gqliterb/vendor/gqlitedb/src/tests/compiler.rs +92 -0
  51. data/ext/gqliterb/vendor/gqlitedb/src/tests/evaluators.rs +227 -0
  52. data/ext/gqliterb/vendor/gqlitedb/src/tests/parser.rs +81 -0
  53. data/ext/gqliterb/vendor/gqlitedb/src/tests/store/redb.rs +39 -0
  54. data/ext/gqliterb/vendor/gqlitedb/src/tests/store/sqlite.rs +39 -0
  55. data/ext/gqliterb/vendor/gqlitedb/src/tests/store.rs +462 -0
  56. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/ast.rs +356 -0
  57. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/programs.rs +455 -0
  58. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates.rs +2 -0
  59. data/ext/gqliterb/vendor/gqlitedb/src/tests.rs +39 -0
  60. data/ext/gqliterb/vendor/gqlitedb/src/utils.rs +28 -0
  61. data/ext/gqliterb/vendor/gqlitedb/src/value/compare.rs +212 -0
  62. data/ext/gqliterb/vendor/gqlitedb/src/value/contains.rs +47 -0
  63. data/ext/gqliterb/vendor/gqlitedb/src/value/value_map.rs +298 -0
  64. data/ext/gqliterb/vendor/gqlitedb/src/value.rs +559 -0
  65. data/ext/gqliterb/vendor/gqlitedb/src/value_table.rs +616 -0
  66. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/call_stats.sql +22 -0
  67. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_count_for_node.sql +3 -0
  68. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_create.sql +6 -0
  69. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete.sql +1 -0
  70. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete_by_nodes.sql +2 -0
  71. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_select.sql +139 -0
  72. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_update.sql +4 -0
  73. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_create.sql +16 -0
  74. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_delete.sql +3 -0
  75. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_create_table.sql +1 -0
  76. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_get.sql +1 -0
  77. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_set.sql +1 -0
  78. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_create.sql +1 -0
  79. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_delete.sql +1 -0
  80. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_select.sql +42 -0
  81. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_update.sql +4 -0
  82. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/table_exists.sql +5 -0
  83. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_from_1_01.sql +2 -0
  84. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_graph_from_1_01.sql +65 -0
  85. metadata +82 -2
@@ -0,0 +1,191 @@
1
+ WHITESPACE = _{ " " | "\t" | "\n" }
2
+ COMMENT = _{ ("//" ~ (!"\n" ~ ANY)*) | ("/*" ~ (!"*/" ~ ANY)* ~ "*/") }
3
+ ident = @{ ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "_")* }
4
+ parameter_name = @{ (ASCII_ALPHANUMERIC | "_")* }
5
+ char_single = {
6
+ !("'" | "\\") ~ ANY
7
+ | "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "'")
8
+ | "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
9
+ }
10
+ char_double = {
11
+ !("\"" | "\\") ~ ANY
12
+ | "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "'")
13
+ | "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
14
+ }
15
+ char_tick = {
16
+ !("`" | "\\") ~ ANY
17
+ | "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t" | "'")
18
+ | "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
19
+ }
20
+ nothing_ident = @{ "###"+ }
21
+
22
+ // Query
23
+ queries = _{ SOI ~ query ~ (";" ~ query)* ~ ";"? ~ EOI }
24
+
25
+ query = { statement* }
26
+
27
+ nothing = { nothing_ident? }
28
+
29
+ // fragments
30
+
31
+ labels = { ":" ~ label_expression }
32
+ pattern = { ident? ~ labels? ~ map? }
33
+ node_pattern = { "(" ~ pattern ~ ")" }
34
+
35
+ directed_edge_pattern = { (")-[" ~ pattern ~ "]->(") | (nothing ~ ")-->(") }
36
+ reversed_edge_pattern = { (")<-[" ~ pattern ~ "]-(") | (nothing ~ ")<--(") }
37
+ undirected_edge_pattern = { (")-[" ~ pattern ~ "]-(") | (")<-[" ~ pattern ~ "]->(") | (nothing ~ ")--(") }
38
+ edge_pattern = { "(" ~ pattern ~ ((directed_edge_pattern | reversed_edge_pattern | undirected_edge_pattern) ~ pattern)+ ~ ")" }
39
+
40
+ path_pattern = { ident ~ "=" ~ "(" ~ pattern ~ (directed_edge_pattern | reversed_edge_pattern | undirected_edge_pattern) ~ pattern ~ ")" }
41
+
42
+ node_or_edge_pattern = _{ edge_pattern | node_pattern }
43
+ node_or_edge_or_path_pattern = _{ edge_pattern | node_pattern | path_pattern }
44
+
45
+ // Modifiers
46
+
47
+ order_by_kw = @{ "ORDER" ~ WHITESPACE+ ~ "BY" ~ !ASCII_ALPHA }
48
+ limit_kw = @{ "LIMIT" ~ !ASCII_ALPHA }
49
+ skip_kw = @{ "SKIP" ~ !ASCII_ALPHA }
50
+
51
+ limit = { limit_kw ~ expression }
52
+ order_by = { order_by_kw ~ (order_by_desc_expression | order_by_asc_expression) ~ ("," ~ (order_by_desc_expression | order_by_asc_expression))* }
53
+ order_by_asc_expression = { expression ~ ("ASCENDING" | "ASC")? }
54
+ order_by_desc_expression = { expression ~ ("DESCENDING" | "DESC") }
55
+ skip = { skip_kw ~ expression }
56
+ modifiers = {
57
+ (limit ~ ((order_by ~ skip?) | (skip? ~ order_by?)))
58
+ | (order_by ~ ((limit ~ skip?) | (skip? ~ limit?)))
59
+ | (skip ~ ((order_by ~ limit?) | (limit? ~ order_by?)))
60
+ }
61
+
62
+ where_modifier = { "WHERE" ~ expression }
63
+
64
+ // Statements
65
+ statement = {
66
+ create_graph_statement
67
+ | use_graph_statement
68
+ | create_statement
69
+ | optional_match_statement
70
+ | match_statement
71
+ | return_statement
72
+ | call_statement
73
+ | with_statement
74
+ | unwind_statement
75
+ | delete_statement
76
+ | detach_delete_statement
77
+ | set_statement
78
+ | remove_statement
79
+ }
80
+
81
+ star = { "*" }
82
+
83
+ create_graph_statement = { "CREATE" ~ "GRAPH" ~ ident }
84
+ use_graph_statement = { "USE" ~ ident }
85
+
86
+ create_statement = { "CREATE" ~ node_or_edge_pattern ~ ("," ~ node_or_edge_pattern)* }
87
+ match_statement = { "MATCH" ~ node_or_edge_or_path_pattern ~ ("," ~ node_or_edge_or_path_pattern)* ~ where_modifier? }
88
+ optional_match_statement = { "OPTIONAL" ~ match_statement }
89
+ return_statement = { "RETURN" ~ (star | named_expression) ~ ("," ~ named_expression)* ~ modifiers? }
90
+ call_statement = { "CALL" ~ function_name ~ "()" }
91
+ with_statement = { "WITH" ~ (star | named_expression) ~ ("," ~ named_expression)* ~ where_modifier? ~ modifiers? }
92
+ unwind_statement = { "UNWIND" ~ named_expression }
93
+ delete_statement = { "DELETE" ~ expression ~ ("," ~ expression)* }
94
+ detach_delete_statement = { "DETACH" ~ "DELETE" ~ expression ~ ("," ~ expression)* }
95
+ set_statement = { "SET" ~ set_expression ~ ("," ~ set_expression)* }
96
+ remove_statement = { "REMOVE" ~ remove_expression ~ ("," ~ remove_expression)* }
97
+
98
+ // literals
99
+ int = @{ ("+" | "-")? ~ ('0'..'9')+ }
100
+ octa_int = @{ ("+" | "-")? ~ "0o" ~ ('0'..'9' | 'a' .. 'f' | 'A' .. 'F')+ }
101
+ hexa_int = @{ ("+" | "-")? ~ "0x" ~ ('0'..'9' | 'a' .. 'f' | 'A' .. 'F')+ }
102
+ null_lit = { "null" }
103
+ true_lit = { "true" }
104
+ false_lit = { "false" }
105
+ num = @{ (int? ~ "." ~ ASCII_DIGIT+ ~ (^"e" ~ int)?) | (int ~ ^"e" ~ int) }
106
+ string_literal = ${ ("'" ~ inner_single ~ "'") | ("\"" ~ inner_double ~ "\"") | ("`" ~ inner_tick ~ "`") }
107
+ inner_tick = @{ char_tick* }
108
+ inner_double = @{ char_double* }
109
+ inner_single = @{ char_single* }
110
+ function_name = { ident ~ ("." ~ ident)* }
111
+
112
+ // Expression
113
+
114
+ set_expression = _{ set_eq_expression | set_add_expression | set_label_expression }
115
+ set_eq_expression = { set_eq_member_access ~ "=" ~ expression }
116
+ set_add_expression = { set_eq_member_access ~ "+=" ~ expression }
117
+ remove_expression = _{ remove_member_access | set_label_expression }
118
+ set_label_expression = { ident ~ (":" ~ ident)+ }
119
+ set_eq_member_access = { (("(" ~ ident ~ ")") | ident) ~ ("." ~ ident)* }
120
+ remove_member_access = { (("(" ~ ident ~ ")") | ident) ~ ("." ~ ident)+ }
121
+
122
+ expression = { prefix* ~ expression_term ~ postfix* ~ (infix ~ prefix? ~ expression_term ~ postfix*)* }
123
+
124
+ infix = _{ addition | subtraction | multiplication | division | modulo | or | and | xor | equal | different | in_ | not_in | superior_equal | inferior_equal | superior | inferior }
125
+ postfix = _{ is_null | is_not_null | member_access | range_access | range_access_to | index_access }
126
+ prefix = _{ negation | not }
127
+
128
+ addition = { "+" }
129
+ subtraction = { "-" }
130
+ multiplication = { "*" }
131
+ division = { "/" }
132
+ modulo = { "%" }
133
+
134
+ xor_kw = @{ "XOR" ~ !ASCII_ALPHA }
135
+ xor = { xor_kw }
136
+ or_kw = @{ "OR" ~ !ASCII_ALPHA }
137
+ or = { or_kw }
138
+ and_kw = @{ "AND" ~ !ASCII_ALPHA }
139
+ and = { and_kw }
140
+ equal = { "=" }
141
+ different = { "<>" }
142
+ inferior_kw = @{ "<" ~ (!">" | !"=") }
143
+ inferior = { inferior_kw }
144
+ superior_kw = @{ ">" ~ !"=" }
145
+ superior = { superior_kw }
146
+ inferior_equal = { "<=" }
147
+ superior_equal = { ">=" }
148
+ not_in = { "NOT" ~ "IN" }
149
+ in_ = { "IN" }
150
+
151
+ negation = { "-" ~ !int }
152
+ not_kw = @{ "NOT" ~ !ASCII_ALPHA }
153
+ not = { not_kw }
154
+
155
+ is_null = { "IS" ~ "NULL" }
156
+ is_not_null = { "IS" ~ "NOT" ~ "NULL" }
157
+ member_access = { ("." ~ (ident | string_literal))+ }
158
+ index_access = { "[" ~ expression ~ "]" }
159
+ range_access = { "[" ~ expression ~ ".." ~ expression? ~ "]" }
160
+ range_access_to = { "[" ~ ".." ~ expression ~ "]" }
161
+
162
+ label_check_expression = { ident ~ (":" ~ ident)+ }
163
+
164
+ parenthesised_expression = { "(" ~ expression ~ ")" }
165
+ named_expression = { (expression ~ "AS" ~ ident) | expression }
166
+ function_call = { function_name ~ "(" ~ (expression ~ ("," ~ expression)*)? ~ ")" }
167
+ count_star = { "count" ~ "(" ~ "*" ~ ")" }
168
+ expression_term = { null_lit | true_lit | false_lit | num | hexa_int | octa_int | int | string_literal | map | array | label_check_expression | parameter | parenthesised_expression | function_call | count_star | ident }
169
+
170
+ parameter = { "$" ~ parameter_name }
171
+
172
+ pair = { (ident | string_literal) ~ ":" ~ expression }
173
+
174
+ array = {
175
+ "[" ~ "]"
176
+ | "[" ~ expression ~ ("," ~ expression)* ~ "]"
177
+ }
178
+
179
+ map = {
180
+ "{" ~ "}"
181
+ | "{" ~ pair ~ ("," ~ pair)* ~ "}"
182
+ }
183
+
184
+ // label_expression
185
+
186
+ label_expression = _{ label_inclusion }
187
+
188
+ label_inclusion = { label_alternative ~ (":" ~ label_expression)* }
189
+ label_alternative = { label_atom ~ ("|" ~ label_expression)* }
190
+ label_atom = { label_group | ":"? ~ ident }
191
+ label_group = { "(" ~ label_expression ~ ")" }