Commit graph

169 commits

Author SHA1 Message Date
Finn Bear
3d76645908
Bugfix #1946 - allow 4X deeper computation by default, make limit configurable (#1950) 2023-05-09 07:37:07 +01:00
Tobie Morgan Hitchcock
f0e5753cd1
Use static str where possible for context param names (#1942) 2023-05-06 21:49:34 +01:00
Tobie Morgan Hitchcock
531e75a5b0
Ensure chained future values have access to current document context (#1939) 2023-05-06 07:29:42 +01:00
Tobie Morgan Hitchcock
c7e3b927ac
Optimisation - only loop over document fields when processing PERMISSIONS clauses (#1890) 2023-04-30 00:23:19 +01:00
Rushmore Mushambi
1e8903b699
Derive Serialize implementations for enums (#1887) 2023-04-29 21:50:25 +01:00
Finn Bear
7e5f4388a2
Refactor and reduce allocations in query executor. (#1819) 2023-04-20 13:30:47 +01:00
Rushmore Mushambi
3e80aa9914
Implement to_value for sql::Value (#1659)
`sql::Value` is an integral part of `surrealdb`. It's the internal type used by our storage layer. Because of this, we do a lot of converting between this type and native Rust types. Currently this conversion is done through `JSON` using the `serde_json` crate because we do not have our own custom data format implementation. This works because `SQL` is a superset of `JSON`.  This, however, means that this conversion is lossy and can cause surprises in some cases. For example expecting record IDs to be deserialized into a `String` instead of its corresponding Rust native type.

This change implements a custom data format around `sql::Value` and introduces a `to_value` function that facilitates that conversion.
2023-03-30 11:41:44 +01:00
Salvador Girones Gil
565717659a
Add functionality for open telemetry tracing (#1727) 2023-03-29 19:16:18 +01:00
Tobie Morgan Hitchcock
cad596cdf3 Ensure GROUP BY clauses with multi same-aggregate functions work correctly
Closes #1731
2023-03-26 10:04:18 +01:00
Tobie Morgan Hitchcock
42725789a0 Upgrade Rust code deprecation warnings 2023-03-18 09:18:40 +00:00
Tobie Morgan Hitchcock
5e2236dbfd Add initial implementation for processing LIVE queries 2023-02-22 18:04:30 +00:00
Tobie Morgan Hitchcock
132354e199 Fix typo in code comment 2023-02-18 18:30:23 +00:00
Tobie Morgan Hitchcock
84b026679f Update clippy linting tests 2023-02-03 11:47:07 +00:00
Rushmore Mushambi
005b27eae8
Drop the parallel feature (#1574) 2023-01-07 09:42:45 +00:00
Rushmore Mushambi
c2dce39f91
Integrate client library into surrealdb crate (#1514) 2022-12-30 08:23:19 +00:00
CelebrateVC
f0745386cf
Improve code comments for documentation (#1476) 2022-11-23 09:42:59 +00:00
Tobie Morgan Hitchcock
2323222f2d Don’t take response output by reference 2022-11-23 09:11:58 +00:00
Tobie Morgan Hitchcock
65f219ffe5 Ensure system parameters are not able to be overridden 2022-11-01 23:55:33 +00:00
Tobie Morgan Hitchcock
12b6e04539 Implement inclusive and unbounded record ranges
Closes #1412
Closes #1413
2022-10-30 01:32:27 +00:00
Tobie Morgan Hitchcock
e9364d2efd Ensure GROUP BY fields with functions are output correctly 2022-10-25 18:04:00 -07:00
Tobie Morgan Hitchcock
2e1d39fcf8 Remove unused Response to Value conversion implementation 2022-10-25 06:05:02 -07:00
Tobie Morgan Hitchcock
50a2c25688 Ensure cancelled context does not prevent FETCH of records
Closes #1395
2022-10-22 22:19:12 +01:00
Tobie Morgan Hitchcock
0a4b810fbd Allow parameters in LIMIT and START clauses in SQL SELECT statements
Closes #1332
Closes #116
2022-10-17 02:57:53 +01:00
Tobie Morgan Hitchcock
0bc798cbe0 Remove SQL debugging functionality 2022-10-16 17:36:07 +01:00
Finn Bear
88100854a8
Limit computation depth in functions, futures, and subqueries. (#241) 2022-10-06 17:35:03 +01:00
Tobie Morgan Hitchcock
7cd8bab75c Ensure FETCH clauses fetch the respective data correctly
Closes #249
2022-09-30 21:42:33 +01:00
Tobie Morgan Hitchcock
016455025c Ensure LET statements throw errors correctly on failure 2022-09-25 10:56:57 +01:00
Finn Bear
b31dbb28fe
Miscellaneous performance optimizations and code cleanup (#240) 2022-09-23 00:54:53 +01:00
Tobie Morgan Hitchcock
0d4d2359d4 Add $token variable for retrieving authentication token claims data 2022-09-17 03:05:23 +01:00
Tobie Morgan Hitchcock
a7444a7c8e Add authentication token claims data to session object
Closes #135
2022-09-17 03:05:23 +01:00
Tobie Morgan Hitchcock
4c98717f1d Update Rust code comments 2022-09-17 03:05:23 +01:00
Tobie Morgan Hitchcock
3b41217423 Allow switching to current namespace when authenticated as a database user 2022-09-10 05:45:02 +01:00
Tobie Morgan Hitchcock
491806aa75 Add scope data to $session object 2022-09-05 00:55:51 +01:00
Finn Bear
8f6d21c1fc
Refactor and optimize functions and Value operators (#80) 2022-09-01 01:27:52 +01:00
Tobie Morgan Hitchcock
7a857801d2 Ensure selected NS/DB is reflected in current session info
Closes #36
2022-08-29 17:30:50 +01:00
Tobie Morgan Hitchcock
b9fc84bf18 Prevent panics when remote datastore transactions fail to start 2022-08-29 13:20:30 +01:00
Tobie Morgan Hitchcock
f22d5d3e51 Ensure read-only transactions are cancelled when complete 2022-08-29 12:29:38 +01:00
Tobie Morgan Hitchcock
8d08c34ddf Add support for writeable queries in LET SQL statements 2022-08-29 12:29:10 +01:00
Tobie Morgan Hitchcock
c1a1eba8b5 Add support for Record ID ranges
Closes #66
2022-08-28 23:31:57 +01:00
Tobie Morgan Hitchcock
56d3b0e861 Fix bug where records couldn’t be updated after defining an index
Closes #57
2022-08-25 14:50:11 +01:00
Tobie Morgan Hitchcock
af45b33fa0 Return error when selecting from non-existent table in strict mode
Closes #13
2022-08-10 17:49:32 +01:00
Tobie Morgan Hitchcock
3c57496655 Ensure aliased GROUP BY fields are output correctly 2022-07-30 22:57:30 +01:00
Tobie Morgan Hitchcock
54f7395555 Add initial integration tests 2022-07-28 10:00:06 +01:00
Tobie Morgan Hitchcock
d619633340 Enable new database strict mode configuration 2022-07-27 18:20:04 +01:00
Tobie Morgan Hitchcock
a2c5ea237b Fix bug when defining NS / DB without first selecting NS / DB
Closes #12
2022-07-26 10:06:33 +01:00
Tobie Morgan Hitchcock
81bad3211d Improve command-line logging 2022-07-19 09:28:24 +01:00
Tobie Morgan Hitchcock
90dfa9f49f Ensure LIMIT BY clause does not cause query to fail 2022-07-09 19:44:15 +01:00
Tobie Morgan Hitchcock
3417d152e0 Ensure PARALLEL clauses don’t run on WASM 2022-07-06 14:40:43 +01:00
Tobie Morgan Hitchcock
508538e0cc Add initial WebSocket JSON RPC implementation 2022-07-04 02:32:26 +01:00
Tobie Morgan Hitchcock
569182ee7b Implement LIVE and KILL statements 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
34ba79428c Ensure correct permissions are used on each query 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
eff4d2c5e9 Implement scope signup and signin functionality 2022-06-20 12:29:06 +01:00
Tobie Morgan Hitchcock
b4e2082196 Use BTreeMap for database execution variables 2022-06-20 02:13:28 +01:00
Tobie Morgan Hitchcock
20c4e03446 Ensure graph edges are purged correctly when deleted 2022-06-17 23:55:09 +01:00
Tobie Morgan Hitchcock
a687a7f4bf Ensure remote records in FETCH clauses are fetched correctly 2022-06-15 08:49:57 +01:00
Tobie Morgan Hitchcock
c0a78d8470 Implement graph traversal functionality 2022-06-15 08:49:57 +01:00
Tobie Morgan Hitchcock
3f568f3990 Simplify session conversion to database context 2022-05-31 19:00:32 +01:00
Tobie Morgan Hitchcock
01d21e1157 Implement INSERT and RELATE statements 2022-05-30 16:32:26 +01:00
Tobie Morgan Hitchcock
44df5a8621 Allow modification of documents from subquery result sets 2022-05-25 10:39:36 +01:00
Tobie Morgan Hitchcock
52e8954ae4 Ensure library works in multi-threaded and single-threaded environments 2022-05-16 00:04:11 +01:00
Tobie Morgan Hitchcock
75de89d9a1 Add support for both writeable and read-only transactions 2022-05-14 22:30:49 +01:00
Tobie Morgan Hitchcock
1017e2fffb Don’t clone variables when processing sub-contexts
Closes SUR-53

When creating a new context for subqueries or statement clauses, we used to have to clone any variables/values, and freeze the context, so that it could be used across threads and async boundaries.

Now with the new executor pattern for parallel queries, we can pass references instead, improving performance by removing unnecessary cloning of values.
2022-05-14 13:38:17 +01:00
Tobie Morgan Hitchcock
6ff2a78c88 Don’t use static futures for parallel query execution
Instead of using static futures when processing a query in parallel, we now use a new executor model, which allows us to process futures which make use of references. As a result, we can remove the need to store each statement in an Arc.
2022-05-13 21:57:40 +01:00
Tobie Morgan Hitchcock
cc40e26e3f Add additional functions on Auth type for validating authentication 2022-05-11 15:23:07 +01:00
Tobie Morgan Hitchcock
1e2ba72e37 Reduce mem size of Error enum types 2022-05-06 23:09:08 +01:00
Tobie Morgan Hitchcock
4d072a7f6c Reduce mem size of SQL Model by converting to an enum 2022-05-06 17:02:44 +01:00
Tobie Morgan Hitchcock
0125cb28b0 Implement Deref on SQL Order type 2022-05-05 12:27:08 +01:00
Tobie Morgan Hitchcock
ed92fb4d85 Implement SQL Ident as a newtype tuple struct 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
3233660037 Implement SQL Table as a newtype tuple struct 2022-05-05 10:24:46 +01:00
Tobie Morgan Hitchcock
bd6f01971f Implement SQL Query as a newtype tuple struct 2022-05-05 10:19:19 +01:00
Tobie Morgan Hitchcock
643592d750 Implement SQL Split as a newtype tuple struct 2022-05-05 10:19:19 +01:00
Tobie Morgan Hitchcock
b6cc3ca1ff Implement SQL Fetch as a newtype tuple struct 2022-05-05 10:19:19 +01:00
Tobie Morgan Hitchcock
745fa4fd97 Implement SQL Group as a newtype tuple struct 2022-05-05 10:19:05 +01:00
Tobie Morgan Hitchcock
ec6cfc4fef Ensure TIMEOUT clauses are processed correctly 2022-05-04 23:37:57 +01:00
Tobie Morgan Hitchcock
143da56728 Implement SQL Array as a newtype tuple struct 2022-05-04 23:37:57 +01:00
Tobie Morgan Hitchcock
c5960a028e Improve comments in public library package 2022-05-04 00:49:38 +01:00
Tobie Morgan Hitchcock
ffc3ed82f7 Simplify external API when working with Datastore 2022-05-04 00:07:46 +01:00
Tobie Morgan Hitchcock
6a8c53b51e Don’t use custom type definition for query responses 2022-05-03 17:47:47 +01:00
Tobie Morgan Hitchcock
0cbcb3b374 Simplify database query response object 2022-05-02 00:35:01 +01:00
Tobie Morgan Hitchcock
a4e07f693b Make certain functions private to crate 2022-05-01 23:25:53 +01:00
Tobie Morgan Hitchcock
1697beda9c No need to store the actual error on the executor 2022-05-01 10:35:26 +01:00
Tobie Morgan Hitchcock
355f1aac7b Don’t override context unnecessarily 2022-04-29 21:43:44 +01:00
Tobie Morgan Hitchcock
fb27185435 Remove unused import 2022-04-29 21:40:02 +01:00
Tobie Morgan Hitchcock
4c8d9dbb63 implement COLLATE and NUMERIC ordering in ORDER BY clauses 2022-04-27 16:21:51 +01:00
Tobie Morgan Hitchcock
4bc3b299aa Implement RAND() ordering in ORDER BY clauses 2022-04-27 02:30:26 +01:00
Tobie Morgan Hitchcock
5df1040dd8 Implement PERMISSIONS clauses 2022-04-06 00:09:23 +01:00
Tobie Morgan Hitchcock
200741a35e Simplify &self in function definitions 2022-04-06 00:09:23 +01:00
Tobie Morgan Hitchcock
aab4d0b096 Implement FIELD TYPE / VALUE / ASSERT clauses 2022-04-06 00:09:23 +01:00
Tobie Morgan Hitchcock
94ffc054a7 Fix clippy warnings 2022-04-01 23:28:54 +01:00
Tobie Morgan Hitchcock
c45d383b77 Change name of OPTION statement options 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
c6c43aea8a Ensure OPTION IMPORT statement has opposite effect 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
4dea5c72ee Improve common function execution speed by inlining 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
41c44ea709 Add runtime option for disabling permission checks 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
1ea692d32e Make code more consistent and simpler to read 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
a938f017c4 Only allow OPTION statements to be run with KV/NS/DB auth levels 2022-04-01 09:20:44 +01:00
Tobie Morgan Hitchcock
7e2eae32c5 Ensure query auth level checks are logically correct 2022-04-01 00:36:23 +01:00
Tobie Morgan Hitchcock
9f7527c01a Make simple value fetching functions synchronous 2022-03-25 21:15:55 +00:00
Tobie Morgan Hitchcock
87840e3e05 Implement GROUP BY clauses 2022-03-25 18:43:36 +00:00
Tobie Morgan Hitchcock
6017d424eb Implement FETCH clauses 2022-03-23 14:02:41 +00:00
Tobie Morgan Hitchcock
f674ea0544 Implement ORDER BY clauses 2022-03-23 14:02:41 +00:00