Commit graph

566 commits

Author SHA1 Message Date
Tobie Morgan Hitchcock
d12384f3fb Change method signature for converting strings to table names 2022-10-25 06:40:23 -07:00
Tobie Morgan Hitchcock
3cbb5eed78 Allow datetimes as an id parameter in the WebSocket RPC message 2022-10-25 06:06:02 -07:00
Tobie Morgan Hitchcock
2e1d39fcf8 Remove unused Response to Value conversion implementation 2022-10-25 06:05:02 -07:00
Tobie Morgan Hitchcock
8f873cae5c Accept SQL ranges within SQL objects and SQL arrays 2022-10-25 06:01:13 -07:00
Tobie Morgan Hitchcock
e1797d6170 Add public function for enabling internal serialization 2022-10-25 04:52:24 -07:00
Tobie Morgan Hitchcock
34dd96efb9 Fix linting tests 2022-10-25 02:41:16 -07:00
Aman Sharma
01858bf4ca
adds From<uuid::Uuid> for sql::Value and sql::Uuid (#1398) 2022-10-24 09:43:50 +01:00
Tobie Morgan Hitchcock
5b76a25932 Ensure equals comparator function never reeaches unreachable code
Closes #1360
2022-10-20 15:54:35 +01:00
Tobie Morgan Hitchcock
0c4994b33b Ensure nested non-defined objects are not stored in SCHEMAFULL table
Closes #1342
2022-10-20 15:41:32 +01:00
Rushmore Mushambi
f0eaf2bd19
Improve RPC method return types (#1384) 2022-10-19 23:54:41 +01:00
Tobie Morgan Hitchcock
2ceb10f4cb Allow Record IDs defined within parameters to be used in CREATE and RELATE statements
Closes #1383
2022-10-19 19:16:31 +01:00
Tobie Morgan Hitchcock
67eb4b97a1 Fix tests 😖 2022-10-19 15:48:50 +01:00
Tobie Morgan Hitchcock
f0b30e9526 Format strings with single quotes if string does not contain any characters 2022-10-19 11:09:09 +01:00
Tobie Morgan Hitchcock
227bb0a3ce Ensure database doesn’t panic when rounding decimal values with more than 16 decimal places
Closes #1378
2022-10-19 11:06:17 +01:00
Tobie Morgan Hitchcock
7f56fb9964 Enable fetching fields and values from within complex Record IDs
Closes #1375
2022-10-19 11:03:13 +01:00
Tobie Morgan Hitchcock
ad6ee5b42d Add some additional code comments 2022-10-19 10:55:19 +01:00
Tobie Morgan Hitchcock
73bf56810e Enable searching within Record IDs using the CONTAINS operator
Closes #1377
2022-10-17 23:05:35 +01:00
Tobie Morgan Hitchcock
8902fc0a70 Don’t automatically treat naive dates as datetimes
Closes #1328
2022-10-17 03:34:07 +01:00
Tobie Morgan Hitchcock
eca8cd8d1d Ensure SQL datetimes are formatted correctly as strings 2022-10-17 03:25:58 +01:00
Tobie Morgan Hitchcock
d2761c6bf6 Ensure RELATE statements parse correctly with parameters
Closes #1313
2022-10-17 03:13:40 +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
c63fc47bc0 Ensure Record IDs with string-based integers, are output correctly
Closes #1327
2022-10-17 00:05:38 +01:00
Tobie Morgan Hitchcock
d148ca9ab9 Ensure Record IDs in single / double quoted strings are parsed consistently
Closes #1327
2022-10-17 00:03:46 +01:00
Tobie Morgan Hitchcock
c9243dec3c Add new functions for gnerating v4 and v7 UUIDs
Related to #1353
2022-10-16 23:38:50 +01:00
Tobie Morgan Hitchcock
072bbdebdb Add support for FETCH cluases in SQL RETURN statements
Closes #1323
2022-10-16 23:12:24 +01:00
Tobie Morgan Hitchcock
f0bb81b809 Fix clippy linting warnings 2022-10-16 22:25:48 +01:00
Tobie Morgan Hitchcock
3e25debd3a Simplify string formatting of UUIDs 2022-10-16 22:25:19 +01:00
Tobie Morgan Hitchcock
e6eb6168a1 Simplify parsing of string based types 2022-10-16 21:35:50 +01:00
Tobie Morgan Hitchcock
1f6847be85 Ensure all valid unicode characters are parsed without failing
Closes #1366
2022-10-16 21:05:31 +01:00
Tobie Morgan Hitchcock
214971cb86 Ensure UUIDs and Datetimes can be converted to strings correctly
Closes #1338
2022-10-16 17:36:07 +01:00
Tobie Morgan Hitchcock
16638561a2 Add support for parsing UUID versions 5, 6, 7, and 8 2022-10-16 17:36:07 +01:00
Tobie Morgan Hitchcock
15d5c43adb Ensure SQL queries are parsed completely or fail
Closes #1364
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
dfa42f1733 Ensure SQL UUID values are truthy 2022-10-05 19:30:37 +01:00
Finn Bear
45e1a9adce
Refactor, optimization, cleanup (#1288) 2022-10-04 22:51:18 +01:00
Tobie Morgan Hitchcock
1d02601a4b Add time::format SQL function 2022-10-04 22:26:03 +01:00
Tobie Morgan Hitchcock
80040152a2 Add parse::url::scheme function for parsing a url protocol/scheme
Closes #1304
2022-10-04 00:28:30 +01:00
Tobie Morgan Hitchcock
e13a4c7742 Use complex Record IDs for IDs in foreign tables with GROUP BY clauses 2022-10-04 00:27:38 +01:00
Tobie Morgan Hitchcock
66b182ec7d Add explicit Constant type for SurrealQL constants 2022-10-01 15:55:48 +01:00
oricc
176c9f692c
Add support for constants, and add math constants (#1263) 2022-09-30 22:22:00 +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
79b5ef6411 No need to convert to string before reference 2022-09-30 21:40:56 +01:00
Tobie Morgan Hitchcock
cb7c159d71 Allow custom Record IDs in RELATE statements 2022-09-30 21:33:33 +01:00
Tobie Morgan Hitchcock
2bd2c3ee0b Remove unnecessary debugging code 2022-09-29 15:04:57 +01:00
Tobie Morgan Hitchcock
bec3d49b6d Allow deep merging in UPDATE ... MERGE statements
Closes #1225
2022-09-29 11:16:57 +01:00
Tobie Morgan Hitchcock
219b2cb36c Ensure part durations are parsed as idents 2022-09-29 07:36:42 +01:00
Tobie Morgan Hitchcock
7ef7fb7a2d Ensure nested computed fields are not set on the root object when a parent field does not exist
Closes #130
2022-09-28 02:37:30 +01:00
Tobie Morgan Hitchcock
0bd0019def Ensure nested fields are allowed in REMOVE FIELD statements 2022-09-28 02:37:10 +01:00
Finn Bear
cddef8ca19
Refactor - optimizations and cleanup. (#1255) 2022-09-27 22:35:30 +01:00
Tobie Morgan Hitchcock
63f910cc1a Use correct hexadecimal code for \ characters in strings
Closes #1237
2022-09-27 12:38:17 +01:00
Tobie Morgan Hitchcock
e01fc12331 Ensure partial timezone offsets are calculated correctly 2022-09-26 11:31:13 +01:00
Tobie Morgan Hitchcock
88ef1b6e27 Add support for escaped characters and unicode characters in strings
Closes #90
Closes #137
Closes #245
Closes #1202
Closes #1212
2022-09-26 01:29:26 +01:00
Tobie Morgan Hitchcock
75d1e86990 Add DEFINE TOKEN … ON SCOPE … functionality
Closes #144
2022-09-25 22:58:38 +01:00
Tobie Morgan Hitchcock
13bedf6ce1 Allow using subquery Record IDs embedded within other records 2022-09-25 10:56:57 +01:00
CelebrateVC
d5a378b1be
Implement math functions that were marked as todo (#1218) 2022-09-25 10:55:07 +01:00
Tobie Morgan Hitchcock
4db61d89a2 Ensure DELETE statements with UNIQUE INDEX work correctly
Closes #1210
2022-09-24 18:58:56 +01:00
Tobie Morgan Hitchcock
25926cba83 Remove <datetime> / <duration> functionality in favour of time::floor function
Closes #1213
2022-09-24 11:17:47 +01:00
Finn Bear
d141605266
Bugfix - prevent division by zero. (#1206) 2022-09-24 10:57:26 +01:00
Tobie Morgan Hitchcock
e2352269c0 Fix bug where escaped characters were not supported in regex values 2022-09-24 10:56:54 +01:00
Tobie Morgan Hitchcock
5580f288fd Allow CREATE statement to accept an id field in the content 2022-09-24 02:58:19 +01:00
Tobie Morgan Hitchcock
5fe1fd0227 Fix linting warnings 2022-09-23 08:41:40 +01:00
Tobie Morgan Hitchcock
26de0b5c46 Add additional convenience functions on Value type 2022-09-23 01:07:53 +01:00
Finn Bear
b31dbb28fe
Miscellaneous performance optimizations and code cleanup (#240) 2022-09-23 00:54:53 +01:00
Hugo Saracino
58cffa2de6
Add duration functions for calculating durations as integers (#257) 2022-09-23 00:48:49 +01:00
Tobie Morgan Hitchcock
4ca579160c Ensure datetimes with milliseconds are parsed correctly
Closes #250
2022-09-22 02:33:12 +01:00
James
782a5d4be6
Add crypto::bcrypt::generate and crypto::bcrypt::compare functions (#224) 2022-09-20 08:14:58 +01:00
Tobie Morgan Hitchcock
0381b6dad2 Simplify SCHEMAFUL and SCHEMAFULL parsing definitions
Closes #220
2022-09-20 08:11:14 +01:00
Tobie Morgan Hitchcock
d6b544771f Rename function for simplicity 2022-09-19 12:28:41 +01:00
Tobie Morgan Hitchcock
70970862f4 Add meta::id() and meta::tb() functions 2022-09-19 03:57:06 +01:00
Tobie Morgan Hitchcock
2bc44af8cd Add session::token() function for retrieving authentication token claims data 2022-09-17 03:05:23 +01:00
Tobie Morgan Hitchcock
6a3b1d99b5 Ensure Record IDs are parsed as integers consistently
Closes #149
2022-09-14 23:40:19 +01:00
Tobie Morgan Hitchcock
f90eb542bd Add support SCHEMAFUL keyword spelling
Closes #115
2022-09-11 09:08:36 +01:00
Tobie Morgan Hitchcock
f9645e3d55 Ensure size of Error type is correctly tracked 2022-09-10 06:16:14 +01:00
Tobie Morgan Hitchcock
10f01f365f Add session::sd() SQL function for retrieving session auth data 2022-09-05 00:57:09 +01:00
Tobie Morgan Hitchcock
82e347027d Enable support for dynamic expressions in record IDs 2022-09-04 10:52:01 +01:00
Tobie Morgan Hitchcock
0e2b134de2 Add test for range queries with integer record IDs 2022-09-04 10:51:26 +01:00
Tobie Morgan Hitchcock
820b49c3d1 Allow PERMISSIONS clauses to be separated by commas or spaces
Closes #102
2022-09-04 10:51:06 +01:00
Tobie Morgan Hitchcock
93dedd4869 Fix SQL Geometry type serialization and output
Closes #93
2022-09-02 11:32:34 +01:00
Rushmore Mushambi
04831b1831
Make validation and parser functions more robust (#89)
Closes #87
2022-09-01 18:46:36 +01:00
Finn Bear
8f6d21c1fc
Refactor and optimize functions and Value operators (#80) 2022-09-01 01:27:52 +01:00
Tobie Morgan Hitchcock
395d8e5b8c Ensure arrays sort before objects in Record IDs 2022-08-31 14:38:14 +01:00
Finn Bear
a9c6806745
Ensure integer ranges are parsed correctly (#81) 2022-08-31 14:00:43 +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
Finn Bear
b18b3cef3e
Refactor, optimization, and cleanup of code (#71) 2022-08-29 02:47:33 +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
e4a7ef4afe Add parser tests for complex Record IDs 2022-08-27 00:33:52 +01:00
Tobie Morgan Hitchcock
eab862b9e4 Add support for Objects and Arrays as Record IDs 2022-08-27 00:23:24 +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
Kian-Meng Ang
40157f6170
Fix typos (#42)
Found via `codespell -L crate,inout,ser,fetchs,te,tre,whats`.
2022-08-21 13:13:38 +01:00
Tobie Morgan Hitchcock
bcaea757c2 Add SQL session functions 2022-08-17 22:45:31 +01:00
Tobie Morgan Hitchcock
13d3d02dcf Add SQL array sorting functions 2022-08-11 17:41:20 +01:00
Tobie Morgan Hitchcock
2ffa71d520 Ensure aliased field is output when fetching a multi-yield expressions with final alias
Closes #28
2022-08-10 17:49:32 +01:00
Tobie Morgan Hitchcock
20a6ed88d3 Ensure multi-yield path expression alias outputs are flattened
Closes #27
2022-08-10 17:49:32 +01:00
Tobie Morgan Hitchcock
bac8aa31a3 Implement config definition caching within a transaction
Closes #21
2022-08-08 20:44:35 +01:00
Tobie Morgan Hitchcock
96225afb44 Allow multiple table types in DEFINE FIELD record definition
Closes #15
2022-08-04 16:12:04 +01:00
Tobie Morgan Hitchcock
1869e1ddbc Allow spacing in DEFINE FIELD … TYPE clause 2022-08-04 15:11:50 +01:00
Tobie Morgan Hitchcock
f970809030 Fix deletion of embedded array fields using flat path style 2022-08-02 03:12:03 +01:00
Tobie Morgan Hitchcock
c8cba2c64d Remove VOID type 2022-07-28 21:54:59 +01:00
Tobie Morgan Hitchcock
89baebbd24 Fix DEFINE INDEX UNIQUE statement parsing 2022-07-28 20:27:39 +01:00
Tobie Morgan Hitchcock
078d3d4868 Ensure field values are set even if the field is not specified 2022-07-28 09:42:04 +01:00
Tobie Morgan Hitchcock
d619633340 Enable new database strict mode configuration 2022-07-27 18:20:04 +01:00
Tobie Morgan Hitchcock
f633769b57 Fix linter warnings when using as external library 2022-07-27 14:13:30 +01:00
Tobie Morgan Hitchcock
6d36aa0b2c Default TABLE permissions are now NONE not FULL 2022-07-27 09:15:35 +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
d647e40d49 Define main embedded function script as a JavaScript module 2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
66946397ed Use function() {} instead of fn::future -> () => {} syntax for SQL embedded functions
Closes #8
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
a71562df9f Use <future> instead of fn::future syntax for SQL futures
Closes #9
2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
5c0a0ca556 Add ability to specify durations with years 2022-07-23 20:28:52 +01:00
Tobie Morgan Hitchcock
eaedfbbb7c Add ability to use binary expressions in SQL SELECT statements 2022-07-18 22:10:00 +01:00
Tobie Morgan Hitchcock
31adc4538d Implement DEFINE TABLE AS foreign table statements 2022-07-16 23:24:04 +01:00
Tobie Morgan Hitchcock
0394fe5b90 Ensure temporary metadata is removed from records when output 2022-07-16 23:22:23 +01:00
Tobie Morgan Hitchcock
8dbbcf1885 Improve code comments 2022-07-16 23:21:45 +01:00
Tobie Morgan Hitchcock
c9a5b66d9c Ensure aggregate functions are computed in GROUP BY clauses 2022-07-16 23:20:50 +01:00
Tobie Morgan Hitchcock
c9d9b041f7 Simplify v.into() value conversion statements 2022-07-16 23:18:24 +01:00
Tobie Morgan Hitchcock
db7ed18119 Consolidate field expression code into single location 2022-07-10 23:11:28 +01:00
Tobie Morgan Hitchcock
b0bcecf5da Fix clippy warnings 2022-07-10 22:57:19 +01:00
Tobie Morgan Hitchcock
29e500017d Ensure foreign table views are updated when redefined 2022-07-08 21:56:33 +01:00
Tobie Morgan Hitchcock
a430e89c1f Ensure values are parsed in the correct order 2022-07-08 10:19:01 +01:00
Tobie Morgan Hitchcock
4ab552a8e3 Allow PATCH clauses to accept parameters 2022-07-07 11:22:41 +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
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
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
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
44f20d3740 Remove unnecessary public function definitions in sql module 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
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
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
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
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
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
61b1e547b6 Always use simplified serialization unless specified explicitly 2022-05-21 10:07:32 +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
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
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
ca80e73285 Fix clippy lint warnings 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
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
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
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
143da56728 Implement SQL Array as a newtype tuple struct 2022-05-04 23:37:57 +01:00
Tobie Morgan Hitchcock
3ee1ddb5b1 Implement SQL Object as a newtype tuple struct 2022-05-04 23:37:15 +01:00
Tobie Morgan Hitchcock
896e384b98 Change method name so it doesn’t conflict with std::ops::Add::add 2022-05-04 11:34:17 +01:00
Tobie Morgan Hitchcock
65d0e3138a Ensure all necessary SQL types are publicly exported 2022-05-04 00:13:37 +01:00
Tobie Morgan Hitchcock
01ab9375a3 Remove duplicate SQL string::substr() function 2022-05-02 23:22:22 +01:00
Tobie Morgan Hitchcock
a4e07f693b Make certain functions private to crate 2022-05-01 23:25:53 +01:00
Tobie Morgan Hitchcock
d5fab4fbf0 Remove string::contains() SQL function 2022-04-30 21:47:19 +01:00
Tobie Morgan Hitchcock
6f93c38cd2 Add SQL OUTSIDE operator for geometry types 2022-04-29 21:41:57 +01:00
Tobie Morgan Hitchcock
f5be6a3227 Remove unused time functions 2022-04-28 23:31:51 +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
e6fe7e675b Fix BEGIN / CANCEL / COMMIT full statements 2022-04-27 02:29:32 +01:00
Tobie Morgan Hitchcock
cbdba0a117 Implement INDEX clauses 2022-04-09 13:33:39 +01:00
Tobie Morgan Hitchcock
a41e52098b Improve performance of internal value conversion 2022-04-07 15:44:55 +01:00
Tobie Morgan Hitchcock
27a01bec08 Improve performance of embedded field path creation 2022-04-07 15:33:57 +01:00
Tobie Morgan Hitchcock
e378105f11 Add ‘every’ function on a value for field iteration 2022-04-07 11:21:18 +01:00
Tobie Morgan Hitchcock
9becf187f4 Add ‘each’ function on a value for field iteration 2022-04-07 11:12:10 +01:00
Tobie Morgan Hitchcock
285b83244c Remove PRIORITY clause from DEFINE FIELD statement 2022-04-07 08:38:47 +01:00
Tobie Morgan Hitchcock
2e2756d9e8 Implement INFO sql statements 2022-04-06 12:06:33 +01:00
Tobie Morgan Hitchcock
cf20cd4396 Treat $this param as a special case 2022-04-06 00:11:33 +01:00
Tobie Morgan Hitchcock
c1a128e7ab No need to clone key when fetching value on context 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
64eedd413f Use consistent coding style 2022-04-04 23:23:31 +01:00
Tobie Morgan Hitchcock
b85e983ce7 Improve database TYPE clause definitions 2022-04-04 22:43:10 +01:00
Tobie Morgan Hitchcock
876a1e581e Simplify permissions definition and types 2022-04-04 22:37:16 +01:00
Tobie Morgan Hitchcock
664260ef0d Enable internal conversion between values 2022-04-04 22:34:46 +01:00
Tobie Morgan Hitchcock
2b7a23c569 Make DEFINE TABLE and DEFINE FIELD permissions FULL by default 2022-04-04 20:05:50 +01:00
Tobie Morgan Hitchcock
1d66a4772d Ensure correct ordering of values in datastore 2022-04-04 16:59:42 +01:00
Tobie Morgan Hitchcock
94ffc054a7 Fix clippy warnings 2022-04-01 23:28:54 +01:00
Tobie Morgan Hitchcock
2bf5075dc4 Fix bug with DEFINE and PERMISSIONS statement formatting 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
bf1a833a79 Don’t set meta field on records 2022-04-01 12:23:49 +01:00
Tobie Morgan Hitchcock
9f7527c01a Make simple value fetching functions synchronous 2022-03-25 21:15:55 +00:00
Tobie Morgan Hitchcock
2f033aa996 Remove unused functionality 2022-03-25 21:11:17 +00:00
Tobie Morgan Hitchcock
b3c4f982ec Fix clippy lint errors 2022-03-25 20:31:45 +00:00
Tobie Morgan Hitchcock
e92134c92d Ensure we can retrieve subsequent object fields 2022-03-25 18:45:14 +00:00
Tobie Morgan Hitchcock
87840e3e05 Implement GROUP BY clauses 2022-03-25 18:43:36 +00:00
Tobie Morgan Hitchcock
c2c25f68cf Change array manipulation function workings 2022-03-24 13:03:15 +00:00
Tobie Morgan Hitchcock
6017d424eb Implement FETCH clauses 2022-03-23 14:02:41 +00:00
Tobie Morgan Hitchcock
4c95db254a Add datastore key type for graph edges 2022-03-23 14:02:41 +00:00
Tobie Morgan Hitchcock
f674ea0544 Implement ORDER BY clauses 2022-03-23 14:02:41 +00:00
Tobie Morgan Hitchcock
3370b20c38 Only allow simple fields for SPLIT, ORDER, and GROUP clauses 2022-03-23 14:02:03 +00:00
Tobie Morgan Hitchcock
5ae5046987 Implement REMOVE statements 2022-03-20 14:27:59 +00:00
Tobie Morgan Hitchcock
9778600304 Ensure all index data is removed when defining an index 2022-03-20 14:27:03 +00:00
Tobie Morgan Hitchcock
cb740dfcb0 Ensure transaction does not deadlock in DEFINE statements 2022-03-20 14:26:31 +00:00
Tobie Morgan Hitchcock
24752a75d9 Enable support for numbers and strings in record ids 2022-03-18 07:24:36 +00:00
Tobie Morgan Hitchcock
73df91a438 Use BigDecimal for large number handling 2022-03-17 21:55:32 +00:00
Tobie Morgan Hitchcock
5d554d07d3 Use char instead of str for parsing where possible 2022-03-16 23:53:31 +00:00
Tobie Morgan Hitchcock
97c0e50654 Parse numbers as either integers or decimals 2022-03-16 23:19:50 +00:00
Tobie Morgan Hitchcock
636eee4a25 Don’t treat all numbers as decimals unless necessary 2022-03-16 21:15:13 +00:00
Tobie Morgan Hitchcock
dc2b436131 Simplify common number parsing 2022-03-16 21:04:22 +00:00
Tobie Morgan Hitchcock
f13aafe576 Ensure numbers are parsed inside (bracket expressions) 2022-03-16 20:49:26 +00:00
Tobie Morgan Hitchcock
1b0477ae29 Ensure numbers are parsed properly
This change fixes a bug where `100test` would be parsed as a number, and the parser would subsequently fail. Now the value is only parsed as a number if it is immediately followed by an allowed character - otherwise it will fail, and the value `100test` will be parsed as an ident instead.
2022-03-16 15:50:08 +00:00
Tobie Morgan Hitchcock
232b35a304 Ensure numbers do not overflow numeric bounds 2022-03-16 15:40:26 +00:00
Tobie Morgan Hitchcock
03af33796a Fix arithmetic and boolean binary expression order
Previously the expression operations happened right-to-left so `1 - 2 - 3 - 4 - 5` was actually calculated as `(1 - (2 - (3 - (4 - (5)))))`.  Now the expressions are calculated according to BODMAS, with boolean expressions calculated last.
2022-03-13 00:18:23 +00:00
Tobie Morgan Hitchcock
0f6d700f6b Implement initial logic for DEFINE statements 2022-03-07 18:15:57 +00:00
Tobie Morgan Hitchcock
64c02896dd Implement record storing and fetching 2022-03-07 18:11:44 +00:00
Tobie Morgan Hitchcock
77844ab06b Convert error names according to clippy recommendations 2022-03-06 22:21:37 +00:00
Tobie Morgan Hitchcock
d1c2daaee4 Apply cargo clippy lint recommendations 2022-03-05 14:42:58 +00:00
Tobie Morgan Hitchcock
38c7ae206e Enable parallel iteration of records 2022-02-27 00:01:19 +00:00
Tobie Morgan Hitchcock
16da3e9b3b Improve performance of function processing 2022-02-26 20:25:07 +00:00
Tobie Morgan Hitchcock
ec698e85de Add keyword to queries for PARALLEL execution 2022-02-26 16:53:38 +00:00
Tobie Morgan Hitchcock
cd545c2edd Remove unused code 2022-02-26 15:09:30 +00:00
Tobie Morgan Hitchcock
63113f83c3 Ensure types can be serialized/deserialized to the datastore 2022-02-26 00:34:05 +00:00
Tobie Morgan Hitchcock
1eddf94e8d Improve code and logic in iterator 2022-02-23 13:56:54 +00:00
Tobie Morgan Hitchcock
7f47fad02b Remove unimplemented script parsing functionality 2022-02-23 13:20:00 +00:00
Tobie Morgan Hitchcock
02d7154189 No need for explicit references 2022-02-23 11:21:06 +00:00
Tobie Morgan Hitchcock
7710451d7b Remove serde serialization field skipping
Due to a bug in msgpack-rust (https://github.com/3Hren/msgpack-rust/issues/86), in order to have correct serialization<->deserialization of data, we need to ensure all fields are serialized even when empty. This will affect the output size of the data, but will ensure that once serialized, the data is deserialized without issue.
2022-02-23 11:18:46 +00:00
Tobie Morgan Hitchcock
19909885e9 Remove old code comments 2022-02-22 19:08:40 +00:00
Tobie Morgan Hitchcock
7d5dc66555 Ensure we parse datetimes and durations in JSON requests 2022-02-22 19:08:22 +00:00
Tobie Morgan Hitchcock
d4566ff6ea Improve performance with query path analysis
Instead of creating a new Vec<_> for every embedded path part, we now use a reference when calling get/set/del on a value’s data. This means we aren’t creating and copying the Vec items each and every time we traverse down a path.
2022-02-22 19:05:58 +00:00
Tobie Morgan Hitchcock
cf707bf5e3 Remove crypto::bcrypt functions 2022-02-22 16:34:09 +00:00
Tobie Morgan Hitchcock
c28057f8ef Allow flat query expressions
Instead of having to specify [*] or * to get/set/del values in embedded arrays, it now supports access embedded values using a flat style for arrays.
2022-02-22 16:33:43 +00:00
Tobie Morgan Hitchcock
ca6974a5a8 Update code to remove geometry deprecation warnings 2022-02-22 16:30:02 +00:00
Tobie Morgan Hitchcock
d5c53b7791 Extract core surrealdb code into separate library 2022-02-22 14:16:50 +00:00