Commit graph

23 commits

Author SHA1 Message Date
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
Tobie Morgan Hitchcock
185eb91f22 Allow raw SQL subqueries without surrounding brackets
Related to #247
Related to #225
Related to #1319
2023-02-20 14:24:37 +00:00
Tobie Morgan Hitchcock
275cf18a3a Enable RETURN statements in subqueries
Related to #1319
2023-02-19 19:47:34 +00:00
Tobie Morgan Hitchcock
f7dd73212d Make SQL subquery behaviour understandable and consistent
Closes #1408
Closes #1441
2023-02-19 17:34:18 +00:00
Tobie Morgan Hitchcock
84b026679f Update clippy linting tests 2023-02-03 11:47:07 +00:00
Allen Lantz
d1055e6088
Implement hashed implementation of Uniq<Array> (#1310) 2022-10-27 05:23:24 -07: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
Finn Bear
88100854a8
Limit computation depth in functions, futures, and subqueries. (#241) 2022-10-06 17:35:03 +01:00
Finn Bear
45e1a9adce
Refactor, optimization, cleanup (#1288) 2022-10-04 22:51:18 +01:00
Tobie Morgan Hitchcock
13bedf6ce1 Allow using subquery Record IDs embedded within other records 2022-09-25 10:56:57 +01:00
Tobie Morgan Hitchcock
37a3efc81b Allow for spacing around subquery statements 2022-06-15 08:49:57 +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
143da56728 Implement SQL Array as a newtype tuple struct 2022-05-04 23:37:57 +01:00
Tobie Morgan Hitchcock
a4e07f693b Make certain functions private to crate 2022-05-01 23:25:53 +01:00
Tobie Morgan Hitchcock
64eedd413f Use consistent coding style 2022-04-04 23:23:31 +01:00
Tobie Morgan Hitchcock
9f7527c01a Make simple value fetching functions synchronous 2022-03-25 21:15:55 +00:00
Tobie Morgan Hitchcock
f674ea0544 Implement ORDER BY clauses 2022-03-23 14:02:41 +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
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
d5c53b7791 Extract core surrealdb code into separate library 2022-02-22 14:16:50 +00:00
Renamed from src/sql/subquery.rs (Browse further)