Commit graph

473 commits

Author SHA1 Message Date
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
Finn Bear
f2bb4f64af
Limit time and memory available to Javascript functions (#1270) 2022-09-29 08:42:06 +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
Fabiano Frizzo
26c1cff9f1
Fix typo in function definition for math::round (#1260) 2022-09-28 01:48:46 +01:00
Finn Bear
cddef8ca19
Refactor - optimizations and cleanup. (#1255) 2022-09-27 22:35:30 +01:00
Rushmore Mushambi
9c0f9a381e
Feature gate more http functions (#1252) 2022-09-27 18:02:49 +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
7f66592808 Fix key scan range iteration in RocksDB storage engine
Closes #1221
2022-09-26 03:33:30 +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
016455025c Ensure LET statements throw errors correctly on failure 2022-09-25 10:56:57 +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
Finn Bear
fba743ef0b
Don't let surf panic on invalid URIs (#1205) 2022-09-24 01:25:05 +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
Finn Bear
825ccf0986
Separate sync and async fns again (#242) 2022-09-22 16:49:17 +01:00
Tobie Morgan Hitchcock
4ca579160c Ensure datetimes with milliseconds are parsed correctly
Closes #250
2022-09-22 02:33:12 +01:00
Finn Bear
6dbe4d0807
Limit maximum potential cost of crypto::bcrypt functions (#239) 2022-09-21 03:47:21 +01:00
Finn Bear
b3ec3b4d8e
Use a dedicated executor thread for CPU-intensive functions (#186) 2022-09-21 02:27:28 +01:00
Finn Bear
de7d9299fd
Refactor function dispatch (#125) 2022-09-21 01:57:33 +01:00
James
13b14380c6
Fix anomalies in math functions (#222)
Co-authored-by: tsunyoku <mbruhyo@gmail.com>
2022-09-20 08:26:38 +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
Sven Taute
94dc566d3f
Fix bug in time::month() (#215) 2022-09-19 02:35:54 +01:00
Tobie Morgan Hitchcock
340af01227 Ensure is::uuid() function returns expected result
Closes #210
2022-09-18 17:44:14 +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
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
Stephen Gilboy
63d8034a60
Return permissions error when automatically creating a table without authorization (#178)
Closes #177
2022-09-17 03:05:02 +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
a8497ff6b3 Fix tests for improved logging of field and index errors 2022-09-10 06:17:03 +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
fde0c55d34 Improve error logging for field and index errors
Closes #113
2022-09-10 05:59:08 +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
10f01f365f Add session::sd() SQL function for retrieving session auth data 2022-09-05 00:57:09 +01:00
Tobie Morgan Hitchcock
491806aa75 Add scope data to $session object 2022-09-05 00:55:51 +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
Finn Bear
3d83f086a6
Fix unbounded resource usage in crypto and rand SQL functions (#94) 2022-09-02 16:19:01 +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
Tobie Morgan Hitchcock
c97fd62d70 Don’t cast NONE or NULL values to a fields data type
Closes #73
2022-09-01 01:34:31 +01:00
Finn Bear
8f6d21c1fc
Refactor and optimize functions and Value operators (#80) 2022-09-01 01:27:52 +01:00
Tobie Morgan Hitchcock
308004aacf Improve unique index duplicate value error messages
Closes #75
2022-08-31 20:00:22 +01:00
Tobie Morgan Hitchcock
395d8e5b8c Ensure arrays sort before objects in Record IDs 2022-08-31 14:38:14 +01:00
Finn Bear
8907f0aa14
Make RocksDB integration more, if not completely, sound (#77)
Closes #76
2022-08-31 14:18:23 +01:00
Finn Bear
a9c6806745
Ensure integer ranges are parsed correctly (#81) 2022-08-31 14:00:43 +01:00
Tobie Morgan Hitchcock
906b969b90 Don’t use writeable TiKV transactions when we don’t need to 2022-08-30 22:35:29 +01:00
Tobie Morgan Hitchcock
58591f82dc Ensure we use the correct transaction type (optimistic/pessimistic)
Closes #79
2022-08-30 22:34:55 +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
Finn Bear
b18b3cef3e
Refactor, optimization, and cleanup of code (#71) 2022-08-29 02:47:33 +01:00
Finn Bear
42d8260966
Ensure string::words SQL function handles multiple spaces correctly (#72) 2022-08-29 02:46:15 +01:00
Tobie Morgan Hitchcock
f8535b0546 Remove redundant clone 2022-08-29 00:06:24 +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
e6d3c1e977 Add initial RocksDB storage implementation 2022-08-28 14:35:30 +01:00
Tobie Morgan Hitchcock
c0217078f5 Improve documentation of Rust crate 2022-08-28 14:08:08 +01:00
Finn Bear
3043538fdf
Accept Record IDs in type::table() SQL function (#69)
Closes #68
2022-08-28 10:46:20 +01:00
Tobie Morgan Hitchcock
48e0380dbe Ensure math::sum() returns a number when being called on a non-array value
Closes #65
2022-08-27 01:02:29 +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
Tobie Morgan Hitchcock
0519ca60bc Return an error if the specified datastore is not able to be initiated 2022-08-21 20:28:54 +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
c10865bda5 Simplify toString function in JavaScript classes 2022-08-19 16:10:16 +01:00
Tobie Morgan Hitchcock
5f1156341c Store JavaScript classes in separate directory 2022-08-19 16:08:30 +01:00
Tobie Morgan Hitchcock
292d35280c Use default export as main JavaScript function 2022-08-18 08:33:21 +01:00
Tobie Morgan Hitchcock
500368958f Ensure errors are caught when defining JavaScript classes 2022-08-17 23:00:53 +01:00
Tobie Morgan Hitchcock
9c0fbf51f9 Remove JavaScript global surrealdb placeholder package 2022-08-17 22:50:19 +01:00
Tobie Morgan Hitchcock
890f2f527f Add a placeholder for JavaScript fetch() function 2022-08-17 22:46:45 +01:00
Tobie Morgan Hitchcock
35010b21ae Simplify casting function signatures 2022-08-17 22:45:31 +01:00
Tobie Morgan Hitchcock
bcaea757c2 Add SQL session functions 2022-08-17 22:45:31 +01:00
Tobie Morgan Hitchcock
2945b7d724 Separate out synchronous and asynchronous SQL functions 2022-08-17 22:45:31 +01:00
Tobie Morgan Hitchcock
038246f054 Ensure JavaScript functions are not converted to empty objects 2022-08-16 19:27:59 +01:00
Yusuke Kuoka
1d3880d652
Initial implementation of SurrealDB KVS for FoundationDB (#37)
Referenced in discussion #25 

Closes #38
2022-08-15 19:35:41 +01:00
Tobie Morgan Hitchcock
d73b19a84c Fix linting errors in Rust 1.63.0 2022-08-12 17:42:01 +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
405a1e7b8d Ensure http SQL functions run correctly in WebAssembly 2022-08-10 17:49:32 +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
bac8aa31a3 Implement config definition caching within a transaction
Closes #21
2022-08-08 20:44:35 +01:00
Tobie Morgan Hitchcock
863830cf3f Ensure FIELD definitions are not output two in SQL export
CLoses #16
2022-08-05 15:46:49 +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
3c57496655 Ensure aliased GROUP BY fields are output correctly 2022-07-30 22:57:30 +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
54f7395555 Add initial integration tests 2022-07-28 10:00:06 +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
d6269bbe3d Ensure http module only builds when feature is enabled 2022-07-27 09:15:35 +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
db3115fc7c Add surrealdb module as a global object in JavaScript runtime 2022-07-24 01:15:26 +01:00
Tobie Morgan Hitchcock
3dc29e1228 Add initial ES6 JavaScript modules implementation with ‘os’ module 2022-07-24 01:15:26 +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
e9476b9f85 Add ability to handle quickjs errors ourselves 2022-07-24 01:15:25 +01:00
Tobie Morgan Hitchcock
5c0a0ca556 Add ability to specify durations with years 2022-07-23 20:28:52 +01:00
Tobie Morgan Hitchcock
81bad3211d Improve command-line logging 2022-07-19 09:28:24 +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
0d05446976 Ensure TiKV transactions do not panic when a transaction is dropped 2022-07-18 18:56:08 +01:00
Tobie Morgan Hitchcock
c9ad4e60ce Implement http SQL functions 2022-07-17 19:58:27 +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
90dfa9f49f Ensure LIMIT BY clause does not cause query to fail 2022-07-09 19:44:15 +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
63d099e305 Fix code comment typo 2022-07-07 10:55:59 +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
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