gqlite 1.2.0 → 1.2.3
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.
- checksums.yaml +4 -4
- data/ext/gqliterb/.cargo/config.toml +2 -0
- data/ext/gqliterb/Cargo.lock +152 -135
- data/ext/gqliterb/Cargo.toml +4 -6
- data/ext/gqliterb/src/lib.rs +8 -2
- data/ext/gqliterb/vendor/gqlitedb/Cargo.lock +2115 -0
- data/ext/gqliterb/vendor/gqlitedb/Cargo.toml +138 -0
- data/ext/gqliterb/vendor/gqlitedb/askama.toml +3 -0
- data/ext/gqliterb/vendor/gqlitedb/benches/common/mod.rs +25 -0
- data/ext/gqliterb/vendor/gqlitedb/benches/common/pokec.rs +185 -0
- data/ext/gqliterb/vendor/gqlitedb/benches/pokec_divan.rs +137 -0
- data/ext/gqliterb/vendor/gqlitedb/benches/pokec_iai.rs +122 -0
- data/ext/gqliterb/vendor/gqlitedb/release.toml +7 -0
- data/ext/gqliterb/vendor/gqlitedb/src/aggregators/arithmetic.rs +96 -0
- data/ext/gqliterb/vendor/gqlitedb/src/aggregators/containers.rs +33 -0
- data/ext/gqliterb/vendor/gqlitedb/src/aggregators/count.rs +35 -0
- data/ext/gqliterb/vendor/gqlitedb/src/aggregators/stats.rs +168 -0
- data/ext/gqliterb/vendor/gqlitedb/src/aggregators.rs +74 -0
- data/ext/gqliterb/vendor/gqlitedb/src/capi.rs +259 -0
- data/ext/gqliterb/vendor/gqlitedb/src/compiler/expression_analyser.rs +431 -0
- data/ext/gqliterb/vendor/gqlitedb/src/compiler/variables_manager.rs +621 -0
- data/ext/gqliterb/vendor/gqlitedb/src/compiler.rs +1115 -0
- data/ext/gqliterb/vendor/gqlitedb/src/connection.rs +342 -0
- data/ext/gqliterb/vendor/gqlitedb/src/consts.rs +10 -0
- data/ext/gqliterb/vendor/gqlitedb/src/error.rs +613 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/containers.rs +115 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/edge.rs +20 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/math.rs +44 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/node.rs +16 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/path.rs +80 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/scalar.rs +86 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/string.rs +28 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions/value.rs +99 -0
- data/ext/gqliterb/vendor/gqlitedb/src/functions.rs +410 -0
- data/ext/gqliterb/vendor/gqlitedb/src/graph.rs +283 -0
- data/ext/gqliterb/vendor/gqlitedb/src/interpreter/evaluators.rs +1776 -0
- data/ext/gqliterb/vendor/gqlitedb/src/interpreter/instructions.rs +267 -0
- data/ext/gqliterb/vendor/gqlitedb/src/interpreter/mod.rs +4 -0
- data/ext/gqliterb/vendor/gqlitedb/src/lib.rs +41 -0
- data/ext/gqliterb/vendor/gqlitedb/src/parser/ast.rs +611 -0
- data/ext/gqliterb/vendor/gqlitedb/src/parser/gql.pest +196 -0
- data/ext/gqliterb/vendor/gqlitedb/src/parser/parser.rs +1183 -0
- data/ext/gqliterb/vendor/gqlitedb/src/parser.rs +4 -0
- data/ext/gqliterb/vendor/gqlitedb/src/prelude.rs +8 -0
- data/ext/gqliterb/vendor/gqlitedb/src/serialize_with.rs +94 -0
- data/ext/gqliterb/vendor/gqlitedb/src/store/pgql.rs +121 -0
- data/ext/gqliterb/vendor/gqlitedb/src/store/redb.rs +1262 -0
- data/ext/gqliterb/vendor/gqlitedb/src/store/sqlite.rs +1026 -0
- data/ext/gqliterb/vendor/gqlitedb/src/store.rs +439 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/compiler.rs +92 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/evaluators.rs +227 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/parser.rs +81 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/store/redb.rs +46 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/store/sqlite.rs +46 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/store.rs +470 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/ast.rs +356 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/templates/programs.rs +455 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests/templates.rs +2 -0
- data/ext/gqliterb/vendor/gqlitedb/src/tests.rs +39 -0
- data/ext/gqliterb/vendor/gqlitedb/src/utils.rs +28 -0
- data/ext/gqliterb/vendor/gqlitedb/src/value/compare.rs +212 -0
- data/ext/gqliterb/vendor/gqlitedb/src/value/contains.rs +47 -0
- data/ext/gqliterb/vendor/gqlitedb/src/value/value_map.rs +298 -0
- data/ext/gqliterb/vendor/gqlitedb/src/value.rs +609 -0
- data/ext/gqliterb/vendor/gqlitedb/src/value_table.rs +610 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/call_stats.sql +22 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_count_for_node.sql +3 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_create.sql +6 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_delete_by_nodes.sql +2 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_select.sql +139 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/edge_update.sql +4 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_create.sql +16 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/graph_delete.sql +3 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_create_table.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_get.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/metadata_set.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_create.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_delete.sql +1 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_select.sql +42 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/node_update.sql +4 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/table_exists.sql +5 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_from_1_01.sql +2 -0
- data/ext/gqliterb/vendor/gqlitedb/templates/sql/sqlite/upgrade_graph_from_1_01.sql +65 -0
- metadata +82 -2
@@ -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
|
+
}
|