gqlite 1.1.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/ext/gqliterb/.cargo/config.toml +2 -0
  3. data/ext/gqliterb/Cargo.lock +1109 -0
  4. data/ext/gqliterb/Cargo.toml +43 -0
  5. data/ext/gqliterb/extconf.rb +4 -0
  6. data/ext/gqliterb/src/lib.rs +260 -0
  7. data/ext/gqliterb/vendor/gqlitedb/Cargo.lock +2060 -0
  8. data/ext/gqliterb/vendor/gqlitedb/Cargo.toml +132 -0
  9. data/ext/gqliterb/vendor/gqlitedb/askama.toml +3 -0
  10. data/ext/gqliterb/vendor/gqlitedb/benches/common/mod.rs +25 -0
  11. data/ext/gqliterb/vendor/gqlitedb/benches/common/pokec.rs +185 -0
  12. data/ext/gqliterb/vendor/gqlitedb/benches/pokec_divan.rs +137 -0
  13. data/ext/gqliterb/vendor/gqlitedb/benches/pokec_iai.rs +122 -0
  14. data/ext/gqliterb/vendor/gqlitedb/release.toml +7 -0
  15. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/arithmetic.rs +96 -0
  16. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/containers.rs +33 -0
  17. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/count.rs +35 -0
  18. data/ext/gqliterb/vendor/gqlitedb/src/aggregators/stats.rs +168 -0
  19. data/ext/gqliterb/vendor/gqlitedb/src/aggregators.rs +74 -0
  20. data/ext/gqliterb/vendor/gqlitedb/src/capi.rs +236 -0
  21. data/ext/gqliterb/vendor/gqlitedb/src/compiler/expression_analyser.rs +427 -0
  22. data/ext/gqliterb/vendor/gqlitedb/src/compiler/variables_manager.rs +620 -0
  23. data/ext/gqliterb/vendor/gqlitedb/src/compiler.rs +1106 -0
  24. data/ext/gqliterb/vendor/gqlitedb/src/connection.rs +208 -0
  25. data/ext/gqliterb/vendor/gqlitedb/src/consts.rs +10 -0
  26. data/ext/gqliterb/vendor/gqlitedb/src/error.rs +621 -0
  27. data/ext/gqliterb/vendor/gqlitedb/src/functions/containers.rs +115 -0
  28. data/ext/gqliterb/vendor/gqlitedb/src/functions/edge.rs +20 -0
  29. data/ext/gqliterb/vendor/gqlitedb/src/functions/math.rs +44 -0
  30. data/ext/gqliterb/vendor/gqlitedb/src/functions/node.rs +16 -0
  31. data/ext/gqliterb/vendor/gqlitedb/src/functions/path.rs +48 -0
  32. data/ext/gqliterb/vendor/gqlitedb/src/functions/scalar.rs +86 -0
  33. data/ext/gqliterb/vendor/gqlitedb/src/functions/string.rs +28 -0
  34. data/ext/gqliterb/vendor/gqlitedb/src/functions/value.rs +99 -0
  35. data/ext/gqliterb/vendor/gqlitedb/src/functions.rs +412 -0
  36. data/ext/gqliterb/vendor/gqlitedb/src/graph.rs +268 -0
  37. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/evaluators.rs +1788 -0
  38. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/instructions.rs +262 -0
  39. data/ext/gqliterb/vendor/gqlitedb/src/interpreter/mod.rs +4 -0
  40. data/ext/gqliterb/vendor/gqlitedb/src/lib.rs +42 -0
  41. data/ext/gqliterb/vendor/gqlitedb/src/parser/ast.rs +625 -0
  42. data/ext/gqliterb/vendor/gqlitedb/src/parser/gql.pest +191 -0
  43. data/ext/gqliterb/vendor/gqlitedb/src/parser/parser.rs +1153 -0
  44. data/ext/gqliterb/vendor/gqlitedb/src/parser.rs +4 -0
  45. data/ext/gqliterb/vendor/gqlitedb/src/prelude.rs +8 -0
  46. data/ext/gqliterb/vendor/gqlitedb/src/serialize_with.rs +94 -0
  47. data/ext/gqliterb/vendor/gqlitedb/src/store/pgql.rs +121 -0
  48. data/ext/gqliterb/vendor/gqlitedb/src/store/redb.rs +1250 -0
  49. data/ext/gqliterb/vendor/gqlitedb/src/store/sqlite.rs +994 -0
  50. data/ext/gqliterb/vendor/gqlitedb/src/store.rs +432 -0
  51. data/ext/gqliterb/vendor/gqlitedb/src/tests/compiler.rs +92 -0
  52. data/ext/gqliterb/vendor/gqlitedb/src/tests/evaluators.rs +227 -0
  53. data/ext/gqliterb/vendor/gqlitedb/src/tests/parser.rs +81 -0
  54. data/ext/gqliterb/vendor/gqlitedb/src/tests/store/redb.rs +39 -0
  55. data/ext/gqliterb/vendor/gqlitedb/src/tests/store/sqlite.rs +39 -0
  56. data/ext/gqliterb/vendor/gqlitedb/src/tests/store.rs +462 -0
  57. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/ast.rs +356 -0
  58. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/programs.rs +455 -0
  59. data/ext/gqliterb/vendor/gqlitedb/src/tests/templates.rs +2 -0
  60. data/ext/gqliterb/vendor/gqlitedb/src/tests.rs +39 -0
  61. data/ext/gqliterb/vendor/gqlitedb/src/utils.rs +28 -0
  62. data/ext/gqliterb/vendor/gqlitedb/src/value/compare.rs +212 -0
  63. data/ext/gqliterb/vendor/gqlitedb/src/value/contains.rs +47 -0
  64. data/ext/gqliterb/vendor/gqlitedb/src/value/value_map.rs +298 -0
  65. data/ext/gqliterb/vendor/gqlitedb/src/value.rs +559 -0
  66. data/ext/gqliterb/vendor/gqlitedb/src/value_table.rs +616 -0
  67. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/call_stats.sql +22 -0
  68. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_count_for_node.sql +3 -0
  69. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_create.sql +6 -0
  70. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete.sql +1 -0
  71. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete_by_nodes.sql +2 -0
  72. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_select.sql +139 -0
  73. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_update.sql +4 -0
  74. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_create.sql +16 -0
  75. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_delete.sql +3 -0
  76. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_create_table.sql +1 -0
  77. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_get.sql +1 -0
  78. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_set.sql +1 -0
  79. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_create.sql +1 -0
  80. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_delete.sql +1 -0
  81. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_select.sql +42 -0
  82. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_update.sql +4 -0
  83. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/table_exists.sql +5 -0
  84. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_from_1_01.sql +2 -0
  85. data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_graph_from_1_01.sql +65 -0
  86. data/lib/gqlite.rb +1 -75
  87. metadata +118 -25
  88. data/ext/gqlite/extconf.rb +0 -21
  89. data/ext/gqlite/gqlite-amalgamate.cpp +0 -9599
  90. data/ext/gqlite/gqlite-c.h +0 -95
  91. data/ext/gqlite/gqlite.h +0 -141
@@ -0,0 +1,4 @@
1
+ pub(crate) mod ast;
2
+ pub(crate) mod parser;
3
+
4
+ pub(crate) use parser::parse;
@@ -0,0 +1,8 @@
1
+ pub(crate) use crate::{
2
+ aggregators, compiler, consts,
3
+ error::{self, CompileTimeError, InternalError, RunTimeError, StoreError},
4
+ functions, graph, interpreter, parser, serialize_with, store, utils, value, value_table, Error,
5
+ Result,
6
+ };
7
+
8
+ pub(crate) use error::export::Error as ErrorType;
@@ -0,0 +1,94 @@
1
+ use serde::de::{self, Visitor};
2
+ use serde::{Deserializer, Serializer};
3
+ use std::fmt;
4
+
5
+ const NAN: f64 = std::f64::NAN;
6
+
7
+ pub fn serialize_float<S>(x: &f64, serializer: S) -> Result<S::Ok, S::Error>
8
+ where
9
+ S: Serializer,
10
+ {
11
+ if x.is_nan()
12
+ {
13
+ serializer.serialize_str("NaN")
14
+ }
15
+ else
16
+ {
17
+ serializer.serialize_f64(*x)
18
+ }
19
+ }
20
+
21
+ struct FloatDeserializeVisitor;
22
+
23
+ impl<'de> Visitor<'de> for FloatDeserializeVisitor
24
+ {
25
+ type Value = f64;
26
+
27
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result
28
+ {
29
+ formatter.write_str("a float or the string \"NaN\"")
30
+ }
31
+
32
+ fn visit_i32<E>(self, v: i32) -> Result<Self::Value, E>
33
+ where
34
+ E: de::Error,
35
+ {
36
+ Ok(v as f64)
37
+ }
38
+
39
+ fn visit_i64<E>(self, v: i64) -> Result<Self::Value, E>
40
+ where
41
+ E: de::Error,
42
+ {
43
+ Ok(v as f64)
44
+ }
45
+
46
+ fn visit_u32<E>(self, v: u32) -> Result<Self::Value, E>
47
+ where
48
+ E: de::Error,
49
+ {
50
+ Ok(v as f64)
51
+ }
52
+
53
+ fn visit_u64<E>(self, v: u64) -> Result<Self::Value, E>
54
+ where
55
+ E: de::Error,
56
+ {
57
+ Ok(v as f64)
58
+ }
59
+
60
+ fn visit_f32<E>(self, v: f32) -> Result<Self::Value, E>
61
+ where
62
+ E: de::Error,
63
+ {
64
+ Ok(v as f64)
65
+ }
66
+
67
+ fn visit_f64<E>(self, v: f64) -> Result<Self::Value, E>
68
+ where
69
+ E: de::Error,
70
+ {
71
+ Ok(v as f64)
72
+ }
73
+
74
+ fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
75
+ where
76
+ E: de::Error,
77
+ {
78
+ if v == "NaN"
79
+ {
80
+ Ok(NAN)
81
+ }
82
+ else
83
+ {
84
+ Err(E::invalid_value(de::Unexpected::Str(v), &self))
85
+ }
86
+ }
87
+ }
88
+
89
+ pub fn deserialize_float<'de, D>(deserializer: D) -> Result<f64, D::Error>
90
+ where
91
+ D: Deserializer<'de>,
92
+ {
93
+ deserializer.deserialize_any(FloatDeserializeVisitor)
94
+ }
@@ -0,0 +1,121 @@
1
+ use crate::{graph, Result};
2
+
3
+ // _____ _ _
4
+ // |_ _| __ __ _ _ __ ___ __ _ ___| |_(_) ___ _ __
5
+ // | || '__/ _` | '_ \/ __|/ _` |/ __| __| |/ _ \| '_ \
6
+ // | || | | (_| | | | \__ \ (_| | (__| |_| | (_) | | | |
7
+ // |_||_| \__,_|_| |_|___/\__,_|\___|\__|_|\___/|_| |_|
8
+ //
9
+
10
+ pub(crate) struct Transaction {}
11
+
12
+ impl Transaction
13
+ {
14
+ pub(crate) fn commit(&self) -> Result<()>
15
+ {
16
+ Ok(())
17
+ }
18
+ }
19
+
20
+ // ____ _
21
+ // / ___|| |_ ___ _ __ ___
22
+ // \___ \| __/ _ \| '__/ _ \
23
+ // ___) | || (_) | | | __/
24
+ // |____/ \__\___/|_| \___|
25
+
26
+ pub(crate) struct Store {}
27
+
28
+ impl Store
29
+ {
30
+ pub(crate) fn new() -> Result<Store>
31
+ {
32
+ Ok(Store {})
33
+ }
34
+ pub(crate) fn create_graph(&self, name: impl Into<String>) -> Result<()>
35
+ {
36
+ Err(InternalError::Unimplemented("pgql"))
37
+ }
38
+ pub(crate) fn begin(&self) -> Result<Transaction>
39
+ {
40
+ Ok(Transaction {})
41
+ }
42
+ pub(crate) fn add_nodes<'a, T: Iterator<Item = &'a crate::graph::Node>>(
43
+ &self,
44
+ _: &Transaction,
45
+ graph_name: impl Into<String>,
46
+ nodes_iter: T,
47
+ ) -> Result<()>
48
+ {
49
+ Err(InternalError::Unimplemented("pgql"))
50
+ }
51
+ /// Select nodes according to a given query
52
+ pub(crate) fn select_nodes<'a, TKeys, TLabels, TProperties>(
53
+ &self,
54
+ _: &Transaction,
55
+ graph_name: impl Into<String>,
56
+ query: super::SelectNodeQuery<'a, TKeys, TLabels, TProperties>,
57
+ ) -> Result<Vec<crate::graph::Node>>
58
+ where
59
+ TKeys: Iterator<Item = &'a crate::graph::Key>,
60
+ TLabels: Iterator<Item = &'a String>,
61
+ TProperties: Iterator<Item = (&'a String, &'a value::Value)>,
62
+ {
63
+ Err(InternalError::Unimplemented("pgql"))
64
+ }
65
+ /// Add edge
66
+ pub(crate) fn add_edges<'a, T: Iterator<Item = &'a crate::graph::Edge>>(
67
+ &self,
68
+ _: &Transaction,
69
+ graph_name: impl Into<String>,
70
+ edges_iter: T,
71
+ ) -> Result<()>
72
+ {
73
+ Err(InternalError::Unimplemented("pgql"))
74
+ }
75
+ /// Select edges
76
+ pub(crate) fn select_edges<
77
+ 'a,
78
+ TSourceKeys,
79
+ TSourceLabels,
80
+ TSourceProperties,
81
+ TKeys,
82
+ TLabels,
83
+ TProperties,
84
+ TDestinationKeys,
85
+ TDestinationLabels,
86
+ TDestinationProperties,
87
+ >(
88
+ &self,
89
+ _: &Transaction,
90
+ graph_name: impl Into<String>,
91
+ query: super::SelectEdgeQuery<
92
+ 'a,
93
+ TSourceKeys,
94
+ TSourceLabels,
95
+ TSourceProperties,
96
+ TKeys,
97
+ TLabels,
98
+ TProperties,
99
+ TDestinationKeys,
100
+ TDestinationLabels,
101
+ TDestinationProperties,
102
+ >,
103
+ ) -> Result<Vec<crate::graph::Edge>>
104
+ where
105
+ TSourceKeys: Iterator<Item = &'a crate::graph::Key>,
106
+ TSourceLabels: Iterator<Item = &'a String>,
107
+ TSourceProperties: Iterator<Item = (&'a String, &'a value::Value)>,
108
+ TKeys: Iterator<Item = &'a crate::graph::Key>,
109
+ TLabels: Iterator<Item = &'a String>,
110
+ TProperties: Iterator<Item = (&'a String, &'a value::Value)>,
111
+ TDestinationKeys: Iterator<Item = &'a crate::graph::Key>,
112
+ TDestinationLabels: Iterator<Item = &'a String>,
113
+ TDestinationProperties: Iterator<Item = (&'a String, &'a value::Value)>,
114
+ {
115
+ Err(InternalError::Unimplemented("pgql"))
116
+ }
117
+ pub(crate) fn compute_statistics(&self, _: &Transaction) -> Result<super::Statistics>
118
+ {
119
+ Err(InternalError::Unimplemented("pgql"))
120
+ }
121
+ }