Commit graph

279 commits

Author SHA1 Message Date
Tobie Morgan Hitchcock
3417d152e0 Ensure PARALLEL clauses don’t run on WASM 2022-07-06 14:40:43 +01:00
Tobie Morgan Hitchcock
338bf3e142 Switch from Boa to QuickJS for JavaScript runtime 2022-07-06 14:40:20 +01:00
Tobie Morgan Hitchcock
6ef120f7ce Ensure record ids are escaped properly in JSON format 2022-07-06 10:09:21 +01:00
Tobie Morgan Hitchcock
073c15b826 Escape record id parts like ⟨this⟩ rather than this 2022-07-06 10:08:11 +01:00
Tobie Morgan Hitchcock
2d076c79a7 Format SQL Durations as a string format 2022-07-05 11:36:10 +01:00
Tobie Morgan Hitchcock
6c5ddbf70f Ensure undefined fields are removed in schemafull mode 2022-07-04 17:54:43 +01:00
Tobie Morgan Hitchcock
59d7e733eb Ignore errors when automatically adding NS, DB, or TB definitions 2022-07-04 17:54:03 +01:00
Tobie Morgan Hitchcock
b575f3a9db Remove unused files 2022-07-04 17:54:03 +01:00
Tobie Morgan Hitchcock
8ebcff6d18 Ensure table is added if it does not exist
If the user is is creating a record in a table / collection that does not exist, and the user is authenticated with KV, NS, or DB level permissions, then we need to add the table with the default definition parameters.
2022-07-04 13:58:59 +01:00
Tobie Morgan Hitchcock
8ca211f96d Simplify SQL string::slug function implementation 2022-07-04 10:41:18 +01:00
Tobie Morgan Hitchcock
508538e0cc Add initial WebSocket JSON RPC implementation 2022-07-04 02:32:26 +01:00
Tobie Morgan Hitchcock
8dc7341cb1 Add functions on SQL Value for matching on type 2022-07-04 02:02:46 +01:00
Tobie Morgan Hitchcock
527361efd4 Ensure script function is asynchronous 2022-07-04 01:25:35 +01:00
Tobie Morgan Hitchcock
663848172e Simplify code for conversion between Boa and SurrealDB 2022-07-03 20:30:18 +01:00
Tobie Morgan Hitchcock
d0c37f4d66 Enable parsing of thing records inside strings
This allows for thing records to be parsed within JSON strings.
2022-07-03 20:28:30 +01:00
Tobie Morgan Hitchcock
0c86061086 Accept Thing as argument to type::thing SQL function 2022-07-03 19:22:12 +01:00
Tobie Morgan Hitchcock
bc16645d38 Ensure library build only includes specified features 2022-07-03 10:43:23 +01:00
Tobie Morgan Hitchcock
d5a6f80460 Ensure all operator keywords are one word only 2022-06-28 14:39:07 +01:00
Tobie Morgan Hitchcock
569182ee7b Implement LIVE and KILL statements 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
219f4a54ed Enable ability to pass arguments to JavaScript functions 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
3f4a144ef0 Ensure Date uses correct prototype in javascript functions 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
44f20d3740 Remove unnecessary public function definitions in sql module 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
ccdce709f2 Add UUID data type to SQL for efficient storage of UUIDs 2022-06-28 11:54:04 +01:00
Tobie Morgan Hitchcock
86c2285564 Fix output of SQL DEFINE SCOPE statement 2022-06-20 15:51:29 +01:00
Tobie Morgan Hitchcock
eff4d2c5e9 Implement scope signup and signin functionality 2022-06-20 12:29:06 +01:00
Tobie Morgan Hitchcock
b93b87f2a1 Remove unused CONNECT clause on DEFINE SCOPE statements 2022-06-20 12:28:05 +01:00
Tobie Morgan Hitchcock
951ca55b54 Add SQL Thing parsing functionality to external API 2022-06-20 12:26:43 +01:00
Tobie Morgan Hitchcock
0cb42d7283 Add functionality to compute sql value within database context 2022-06-20 12:26:27 +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
1f5acefa7c Only store empty value in datastore for record edges 2022-06-15 08:50:59 +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
072b002593 Simplify datastore key serialization 2022-06-15 08:49:57 +01:00
Tobie Morgan Hitchcock
18cee9091a Only allow for single values in RELATE statements 2022-06-15 08:49:57 +01:00
Tobie Morgan Hitchcock
37a3efc81b Allow for spacing around subquery statements 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
8ce5d01727 Improve graph traversal expression parsing code 2022-06-08 19:50:29 +01:00
Tobie Morgan Hitchcock
1333ecf0df Use separate module for Dir type 2022-06-08 19:16:06 +01:00
Tobie Morgan Hitchcock
a8fa9ecfb7 Only support strings or integers for Record IDs 2022-06-08 08:39:09 +01:00
Tobie Morgan Hitchcock
2c97d65e97 Fix bug with graph traversal expression parsing 2022-06-06 00:35:44 +01:00
Tobie Morgan Hitchcock
91a859f6b0 Ensure Params are treated as Idioms 2022-06-05 22:15:12 +01:00
Tobie Morgan Hitchcock
8b4f300120 Add support for multi-yield graph traversal expressions 2022-06-04 09:55:05 +01:00
Tobie Morgan Hitchcock
a9bf09db1e Ensure edges are stored before indexes in RELATE statements 2022-06-02 09:07:28 +01:00
Tobie Morgan Hitchcock
525b02ca46 Ensure cast functions are output correctly as object keys 2022-06-01 10:50:07 +01:00
Tobie Morgan Hitchcock
bea90712a3 Enable ? operator in graph traversal queries 2022-05-31 21:30:56 +01:00
Tobie Morgan Hitchcock
4d9b3fd403 Ensure fields are not escaped when inserted as object keys 2022-05-31 20:47:02 +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
b37b027b60 Add ability to convert a record to another table 2022-05-30 16:21:38 +01:00
Tobie Morgan Hitchcock
9020618a0e Add IntoIterator trait to SQL Model type 2022-05-30 16:05:05 +01:00
Tobie Morgan Hitchcock
45c81ad02b Ensure all datastore keys encode correctly 2022-05-28 01:02:52 +01:00
Tobie Morgan Hitchcock
56f5f10046 Remove unnecessary std::convert::From implementations 2022-05-27 21:13:04 +01:00
Tobie Morgan Hitchcock
ea525648ae Remove unnecessary lifetime specifiers 2022-05-25 10:42:10 +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
32525602e2 Ensure changed index values are calculated correctly 2022-05-23 13:24:38 +01:00
Tobie Morgan Hitchcock
61b1e547b6 Always use simplified serialization unless specified explicitly 2022-05-21 10:07:32 +01:00
Tobie Morgan Hitchcock
64ddd407ca Ensure correct trait is used in function definitions 2022-05-21 09:39:40 +01:00
Tobie Morgan Hitchcock
a78df680d2 Implement embedded javascript script functions 2022-05-21 09:39:40 +01:00
Tobie Morgan Hitchcock
5425d0b550 Enable $self or $this as special paramater names 2022-05-19 23:03:00 +01:00
Tobie Morgan Hitchcock
073285574a No need to surround statements with an Arc 2022-05-18 12:18:00 +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
15fc4a0126 Ensure statements are properly escaped when output as a string 2022-05-15 09:42:32 +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
4740fa7bb1 Only set constant variable when needed with parallel feature 2022-05-13 22:00:51 +01:00
Tobie Morgan Hitchcock
7bd5802e99 Remove tokio as a dependency
Closes SUR-102
2022-05-13 21:57:40 +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
d29961ee19 Ensure Errors can be converted into Strings 2022-05-11 21:43:11 +01:00
Tobie Morgan Hitchcock
ca80e73285 Fix clippy lint warnings 2022-05-11 15:23:15 +01:00
Tobie Morgan Hitchcock
17e8ea55b5 Implement SQL database exporting and importing 2022-05-11 15:23:15 +01:00
Tobie Morgan Hitchcock
3498e57e04 Implement web authentication session validation 2022-05-11 15:23:15 +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
640c0b0b12 Allow for alternative phrasing in DEFINE FIELD clause 2022-05-09 23:24:42 +01:00
Tobie Morgan Hitchcock
43d361646c Ensure value mem size test passes correctly 2022-05-09 08:19:01 +01:00
Tobie Morgan Hitchcock
a03d5a7551 Implement SQL Regex as a newtype tuple struct 2022-05-07 14:57:14 +01:00
Tobie Morgan Hitchcock
79e9269f14 Add value size checks tests 2022-05-06 23:33:19 +01:00
Tobie Morgan Hitchcock
fc2c48647c Allow large enum variant size for Datastore and Transaction 2022-05-06 23:09:49 +01:00
Tobie Morgan Hitchcock
5921a6b632 Fix module_inception clippy lint warning 2022-05-06 23:09:32 +01:00
Tobie Morgan Hitchcock
1e2ba72e37 Reduce mem size of Error enum types 2022-05-06 23:09:08 +01:00
Tobie Morgan Hitchcock
2239e4becf Improve Datastore and Transaction errors 2022-05-06 21:57:12 +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
89f731c903 Implement SQL Idiom as a newtype tuple struct 2022-05-05 12:26:46 +01:00
Tobie Morgan Hitchcock
683039e08f Don’t duplicate methods on items which implement Deref 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
4824f1b627 Enable multi duration types (1d12h30m) in SQL 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
98fc9055af Implement SQL Duration as a newtype tuple struct 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
10f2911d44 Implement SQL Datetime as a newtype tuple struct 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
0a3fe67358 Implement SQL Cond as a newtype tuple struct 2022-05-05 10:24:52 +01:00
Tobie Morgan Hitchcock
1ed5df005e Implement SQL Strand as a newtype tuple struct 2022-05-05 10:24:52 +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
1dd3095783 Implement SQL Timeout as a newtype tuple struct 2022-05-05 10:24:46 +01:00
Tobie Morgan Hitchcock
42fa91c7bd Implement SQL Script as a newtype tuple struct 2022-05-05 10:24:46 +01:00
Tobie Morgan Hitchcock
1f05b32f93 Implement SQL Param 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