Our newsletter
Explore our realses, news, events, and much more
Released on Feb 5, 2026
Features:
Bug fixes:
Performance and optimisations:
Released on Jan 16, 2026
Features:
Bug fixes:
Performance and optimisations:
Released on Dec 17, 2025
Features:
Bug fixes:
Performance and optimisations:
Storage/index format and protocol:
Observability and developer experience:
Security/networking:
Breaking changes:
Workflow improvements:
Released on Jan 27, 2026
Released on Jan 22, 2026
Features:
Security Advisories:
Note: Storable closures in future fields and functions are now disabled by default for security reasons. To enable the previous behavior, set the SURREAL_CAPS_ALLOW_INSECURE_STORABLE_CLOSURES environment variable. This change addresses the security vulnerability described in Advisory.
Released on Nov 24, 2025
Features:
Bug fixes:
Breaking changes:
CONTAINS/INSIDE planning made consistent with substring semantics - see language test example in this file with details on using the CONTAINSANY operator with indexes
Released on Sep 19, 2025
Released on Sep 16, 2025
Released on Sep 11, 2025
Bug fixes:
Improvements:
Security advisories:
Released on Jul 9, 2025
Released on Jun 26, 2025
Bug fixes:
Workflow improvements:
Security advisories:
Released on Jun 19, 2025
Released on Jun 16, 2025
Bug Fixes:
Workflow improvements:
Released on May 21, 2025
Released on May 7, 2025
This release resolves an issue identified in v2.3.0 that can corrupt the database when an UPDATE statement
is stored within a function. If you experience this issue when migrating to v2.3.0 please kindly remove those
function definitions, upgrade to v2.3.1 and then add them back.
Bug fixes:
Released on May 1, 2025
NB: We identified an issue in this release that can corrupt the database when an UPDATE statement
is stored within a function. We released v2.3.1 to address this. If you defined functions with UPDATE
statements in v2.3.0 please kindly remove those function definitions, upgrade to v2.3.1 and then add them back.
Features:
Bug fixes:
Deprecations:
The following Rust SDK APIs are now deprecated. In addition, some Capabilities methods were renamed and the previous names marked as deprecated.
IntoQuery::into_query
IntoEndpoint::into_endpoint
IntoFn::into_fn
IntoExportDestination::into_export_destination
QueryResult::query_result
QueryResult::stats
QueryStream::query_stream
IntoResource::into_resource
CreateResource::into_resource
proto::ResponseAction
remote::WsNotification
Workflow improvements:
Released on Sep 11, 2025
Bug fix:
Security advisories:
Released on Jul 9, 2025
Released on Jun 26, 2025
Bug fixes:
Workflow improvements:
Security advisories:
Released on Jun 19, 2025
Released on Jun 17, 2025
Released on May 13, 2025
Bug fixes:
[Fixed invalid "*" value for SURREAL_CAPS_[ALLOW_ARBITRARY_QUERY | ALLOW_EXPERIMENTAL]](https://github.com/surrealdb/surrealdb/pull/5890)
Released on Apr 10, 2025
Bug fixes:
Security Advisories:
Released on Feb 18, 2025
Features:
Bug fixes:
Released on Feb 11, 2025
Features:
Bug fixes:
Optimizations:
SurrealKV:
Workflow improvements:
Experimental:
Breaking changes:
Released on Sep 11, 2025
Bug fixes and improvements:
Security advisories:
Released on Jun 26, 2025
Bug fixes:
Workflow improvements:
Security advisories:
Released on Jun 19, 2025
Workflow improvements:
Released on Jun 17, 2025
Released on Apr 10, 2025
Bug fixes:
Security Advisories:
Released on Dec 18, 2024
Bug fixes:
Security advisories:
Released on Dec 10, 2024
Released on Nov 26, 2024
Released on Nov 26, 2024
Bug fixes:
SurrealKV:
Workflow improvements:
Released on Nov 21, 2024
Features:
Performance improvements:
Bug fixes:
Workflow Improvements:
Features with breaking changes:
Released on Apr 10, 2025
Bug Fixes:
Security Advisories:
Released on Oct 8, 2024
Performance improvements:
Bug fixes:
Fixed micro second parsing
Workflow Improvements:
Security advisories:
Released on Oct 3, 2024
Features:
Parser Improvements:
Bug fixes:
Fixed ID type conversion
Fixed thing parsing function
Workflow Improvements:
Released on Sep 25, 2024
Bug fixes:
Fixed error message panics
Fixed decimal parsing
Fixed version patching
Fixed CBOR Range encoding
Fixed bug with number ordering
Improvements:
Added DTrace profiling support
Released on Sep 17, 2024
After numerous alpha and beta releases over months of development, we are releasing SurrealDB v2.0.0! 🎉. The changes for this release pertain to those in between the final 2.0.0-beta-3 and other alpha versions.
NOTE: Because of changes in the underlying way SurrealDB stores data, steps are required to migrate to 2.0.0 from previous versions. Please use the following steps for any existing databases:
If you are moving from 1.x to 2.x, use the surreal fix command.
Features:
Added DEFINE ACCESS statement to grant access to resources.
Deprecated DEFINE SCOPE in favor of DEFINE ACCESS ... TYPE RECORD.
Deprecated DEFINE TOKEN in favor of DEFINE ACCESS ... TYPE JWT.
Deprecated DEFINE TOKEN ON SCOPE in favor of DEFINE ACCESS ... TYPE RECORD ... WITH JWT.
Added customizable algorithm and key when issuing tokens for records users with the WITH ISSUER clause.
Added customizable token and session duration to DEFINE USER and DEFINE ACCESS.
Removed session expiration when not explicitly defined.
Changed the INFO statement to redact secrets defined via DEFINE ACCESS.
Changed HTTP request headers expected by SurrealDB to require the surreal- prefix.
Removed the --auth flag in the CLI to enable it by default. Added --unauthenticated.
Removed the --enable-auth-level flag in CLI to enable the behavior by default. Defaults to root.
Changed authentication to expect level via the --auth-level flag or surreal-auth-* headers.
Changed the default --bind address in the CLI from 0.0.0.0 to 127.0.0.1.
Added the --no-identification-headers flag in the CLI to limit information leakage.
Added type::range function.
Added TEMPFILES clause to the SELECT statement.
Introduce resource creation checks for DEFINE statement to avoid duplicates.
Added string functions for IP string::is::ip,string::is::ipv4,string::is::ipv6.
Added string functions for HTML: string::html::encode, string::html::sanitize.
Added new math functions: math::acos, math::acot, math::asin, math::atan, math::clamp, math::cos, math::cot, math::deg2rad, math::lerp, math::lerpangle, math::ln, math::log, math::log2, math::log10, math::rad2deg, math::sign, math::sin, math::tan.
Support batch import with INSERT statement. This also extends to relationships between tables using the INSERT RELATION statement
Improved HNSW persistence
Added Range value support
Added ability to SELECT with version, CREATE with version and INSERT with version on SurrealKV
Added ENFORCED keyword to DEFINE TABLE
SCHEMAFULL tables are now TYPE NORMAL by default
Added literal types to the query language
Added the .chain() method
Added typed LET statements
Added typed function returns
Added record::exists() function
Added new functions value::diff() and value:::patch()
Array function changes and additions: array::all(), array::any(), array::filter_index(), array::find_index() functions can now take a value or a closure. Also added array::filter() and array::find() functions.
Upgraded SurrealKV to v0.3
More flexible create API for Rust SDK
Indexing operators can now take expressions
Support for mixed number types on range queries
time::epoch constant now available
Method call syntax now works on integers
Improved GraphQL record fetching
Added ALTER TABLE statement
Moved AUTHENTICATE clause to the root of DEFINE ACCESS statement to allow the clause to be used in every access method
Added OVERWRITE clause for defined resources
Added array::windows() function
Added string::is::record function
Added anonymous functions
Added typed function returns
Function return types now shown in INFO statement
Type any can now act as an optional type
Added time::is::leap_year() function
Added environment variables to configure HTTP endpoint limits & JavaScript runtime limits
Introduced savepoint capabilities
Performance improvements:
Improvements to node membership processing and garbage collection
Improvements to select count table scan
Stabilise and use parser2 for parsing.
KNN filtering with limit and KNN distance function.
Bug fixes:
Connection ID now stored inside session data
Fixed remote fields added to output result inside SELECT * queries
Fixed GHSA-gh9f-6xm2-c4j2: Improper Authentication when Changing Databases as Scope User
Fixes to issues with composite indexes
Fixed Redefining HNSW index error.
Fixed polygon serialization.
Ensured the server shuts down properly
Removed unneeded return in matching
Disabled default audience validation for JWKS
Removed panic on invalid range scan
Added table to reserved keywords
Concurrent indexing no longer fails if record updated during build
Unreachable code now returns an error
DEFINE EVENT defaults to true when no WHEN clause specified
Fixed bug in which NONE and NULL both < 1 and > 1
Create on rpc which returned an array now returns an object. Similar change made to Rust SDK
Fixed GHSA-64f8-pjgr-9wmr: Untrusted Query Object Evaluation in RPC API
Fixed importing from 1.x
Deprecated missing format inference on RPC protocol
Workflow improvements:
Added surreal fix command
Improved parser error type
Added Support for SurrealCS
Bumped async graphql version
Improved transparent API
API improvements:
Surrealkv API improvements:
Parser improvements:
Ensured UUIDs are parsed correctly
Breaking changes:
Functions string::endsWith() and string::startsWith() renamed to string::ends_with() and string::starts_with()
Changed UPDATE statement behaviour of creating records in favour of new UPSERT statement.
Experimental features:
Released on Nov 12, 2024
Released on Sep 11, 2024
Bug fixes:
Fixed GHSA-64f8-pjgr-9wmr: Untrusted Query Object Evaluation in RPC API
Released on Jul 10, 2024
Bug fixes:
Fixed GHSA-gh9f-6xm2-c4j2: Improper Authentication when Changing Databases as Scope User
Released on Jun 14, 2024
Released on Jun 6, 2024
Bug fixes:
Fixed incorrect computations on aggregations within foreign tables
Fixed surreal upgrade --nightly
Released on May 23, 2024
Bug fixes:
Make temporary table active only if the temporary directory is set
Fixes compilation issue related to temporary-directory when the feature sql2 is not enabled
Released on May 14, 2024
Features:
Added an implementation of HNSW in memory.
Added a REBUILD INDEX statement.
Added variable support in CONTENT clause for RELATE statements.
Added more information to INFO FOR SCOPE.
Added a relate method to the RPC protocol.
Added an INFO STRUCTURE statement.
Stabilised sql2 and jwks features.
Introduced an on-disk temporary table.
Added a run method to the RPC protocol.
Implemented limits for parsing depth in the new parser.
Implemented reblessive into the parser to prevent any overflows.
Increased the Minimum Supported Rust Version (MSRV) to 1.77.
Bug fixes:
Made the query planner recognise the exact operator (==).
Fixed math:min in foreign tables.
Fixed typo in function math:sum: was math::sun.
Made record IDs more flexible in the new parser.
Reverted changefeed polling frequency back to 10 seconds.
Fixed a problem with date-time parsing.
Fixed response content-type on /rpc endpoint.
Fixed decimal decoding.
Made the query planner support the IN operator.
Made the JWKS implementation more RFC 7517 compliant.
Fixed wrong count when using COUNT with a subquery.
Fixed the content type header on a CBOR HTTP response.
Fixed $value being NONE for DELETE events.
Fixed array::group in a group by query.
Performance improvements:
Added a query planner strategy for record links.
Made TreeCache more efficient on writes.
Reduced byte size of datetime and UUID types using CBOR format.
Released on Apr 20, 2024
Bug fixes:
Fix problems with if in identifiers after remove and define statements.
Fix $value being NONE for DELETE events.
Fix CBOR headers
Fix wrong count when using COUNT with a subquery
Fix IN operator should be recognised by the query planner
Fix response content-type on /rpc endpoint
When using the Rust SDK, make sure surrealdb-core is up-to-date. If not, you might get back Revision errors as a result.
Released on Apr 9, 2024
Features:
Added a warning message about debug builds in CLI start.
Moved JWKS cache storage to memory.
Overhauled force implementation.
Added DEFINE TABLE ... RELATION.
Allowed RPC calls to be made over an HTTP connection, not just WebSocket.
Allowed the highlighter to only highlight the matching searched token rather than the whole term.
Added an INCLUDE ORIGINAL option to change-feeds.
Added an insert method to the Rust SDK to allow bulk inserts.
Bug fixes:
Fixed export generating unparsable code with the new parser.
Eliminated a potential panic in MsgPack format implementation.
Fixed string::is::longitude RegEx.
Improved CBOR decoding.
Fixed relation type parsing.
Fixed handling of empty array on index.
Allowed legacy headers in CORS.
Allowed surreal upgrade to detect when upgrading to the same version and return early.
Fixed certain environment variables to allow configuration at runtime.
Reduced the byte size of datetime and uuid types using CBOR format.
Fixed array::group in a group by query.
Performance improvements:
This was one of the frequently requested features. While this was already possible using the query
method, this release adds an insert method that makes it more convenient.
Released on Mar 15, 2024
Bug fixes:
Add JWT ID claim to tokens issued by SurrealDB.
Consistently enforce session expiration.
Released on Mar 12, 2024
Features:
Introduced IF NOT EXISTS clause on DEFINE statements.
Implemented IF EXISTS for additional REMOVE statements.
Changed the KNN operator from <2> to <|2|> in the new parser and added support in the old parser for the new syntax.
Implemented WebSocket session expiration.
Added support for tables and geometries in CBOR.
Added support for parsing decimal numbers with scientific notion.
Added support for printing a warning in the CLI when using an outdated version of SurrealDB.
Added Surreal::wait_for to make it possible for the client to wait for certain events.
Added SurrealKV as an unstable feature.
Added more error message improvements for the new parser.
Bug fixes:
More consistent handling of negative numbers in record IDs.
Removed the unimplemented backup command from the CLI.
Fixed document not being available to delete permissions clause.
Ensured objects properties are recognized by the query planner.
Implemented the union strategy on unique indexes.
Performance improvements:
DEFINE statements now allow you to include an IF NOT EXISTS clause which ensures that the define statement is only run if the resource doesn't already exist. If it exists, you will get an error. Learn more about this in the documentation
The KNN operator now supports a new syntax using <| and |> instead of < and >. Learn more about this in the documentation
It's now possible to initialise the connection and run setup actions like authentication and selecting the database concurrently with other queries by making it possible to wait for the SDK to connect or select the database to use before allowing other queries to execute.
Something like this would be susceptible to a race condition before:
Now it's possible to make the client wait for either the connection to be established
or the database to be selected.
Released on Mar 7, 2024
Bug fixes:
Ensure relevant indexes are triggered when using IN in a SELECT query.
Ensure the query planner accepts Datetime and Uuid values.
Restore cosine distance on MTree indexes.
Fix regression in index data serialisation.
Ensure rquickjs builds don't stall on macOS.
Released on Feb 16, 2024
Bug fixes:
Fix an issue with WHERE clause on queries resolving record links or graph edges.
Fix MATH::SQRT_2 not parsing.
Fix a panic in span rendering.
Fix CLI output not displaying properly sometimes.
Released on Feb 13, 2024
Features:
Bump MSRV to 1.75.
In-memory index store.
Show execution time in CLI.
knn brute force.
Implement support for remote JSON Web Key Sets.
Add support for LIVE SELECT in the SDK and CLI.
Add IF EXISTS to REMOVE TABLE statement.
Add READONLY keyword to DEFINE FIELD statement.
Add alias -V and --version flags for surreal version command.
Define types for subfields when defining array fields.
Add string::semver::compare, string::semver::major, string::semver::minor, string::semver::patch, string::semver::inc::major, string::semver::inc::minor, string::semver::inc::patch, string::semver::set::major, string::semver::set::minor, string::semver::set::patch methods.
Bug fixes:
Make record id string parsing never fail early.
Prevent overflow in math::power().
Fix error message pointing to wrong character.
Respect alias for dynamic field queries with type::field.
Remove min/1000 in tx:delp.
Replace custom JWT parser causing decoding issues.
Issue with scoring on complex queries.
Limit recursion depth when parsing nested RELATE statements.
Fix a bug where a non-empty list parser would parse empty lists.
Ensure an attempt to set a protected variable returns an error.
Fix duration addition in timeout causing overflow.
Panic invoking parameters and functions without a database.
Fix a bug where the kind parser would eat whitespace.
Fix WebSocket notification sending format.
Implement missing errors for missing clauses on DEFINE-statements.
Ensure advanced DEFINE PARAM parameters are computed correctly.
Ensure path idioms are correct when looping over.
Fix json failing to parse with trailing whitespace.
Fix the five second delay in Wasm after initial connection.
Add context to live query notifications.
Fix the modulo operator on sql2 and parser1.
Improve the js-surql value conversion for numbers.
Implement revision types for client/server communication.
Fix builtin error pointing to the wrong part.
Fix a panic when invalid builtin function names are passed to the executor.
Performance improvements:
Ensure compression is only enabled when response is a certain size.
READONLY fieldReleased on Jan 16, 2024
Bug fixes:
Fix WebSocket notification sending format.
Fix missing custom claims from token parameter.
Fix URL encoding in JS functions.
Fix panic when invoking parameters and functions without a database.
Released on Jan 9, 2024
Features:
The type::is::record() function now accepts a second optional table argument, validating the record being - stored on the passed table.
Add time::micros(), time::millis() and time::from::nanos functions.
Add type::is::none() function.
Add object::entries(), object::from_entries(), object::len(), object::keys- () and object::values() functions.
Clean paths in the start command and honour ~.
CLI: Split results by comment.
Add surreal sql welcome message.
Add Debugging env flag: SURREAL_INSECURE_FORWARD_SCOPE_ERRORS.
Add SURREAL_ROCKSDB_KEEP_LOG_FILE_NUM environment variable (default 20).
Support auth levels for basic auth (behind feature flag)
Add remainder/modulo operator.
Implement string prefixes: s, r, d and u.
Add ability to cast string to a Thing/Record ID.
Analyzers to support functions.
Support of subfields for embedding indexing.
Add live query API to Rust SDK.
Add Query::with_stats() to return query statistics along with the results.
Permissions are now always displayed for visiblity
Add a --beta flag to surreal upgrade to make installing the latest beta release easier.
Bug fixes:
Fix stack overflow in graph traversal.
Bugfix - parse error for invalid leading whitespace.
Fix memory leak caused by OTEL callbacks.
Fix wrong function name export and function name parsing.
The position of the LIMIT and ORDER clauses are now interchangable.
Fix index plan for idiom param value.
Fix bug where error offset could underflow.
Query results should be consistent and representative.
Indexes used with the operators CONTAINS [ ANY | ALL ].
Forward custom thrown errors in SIGNIN and SIGNUP queries.
Fix ORDER BY RAND() failing to parse when selecting specific fields.
Fix identifiers which look like numbers failing to parse.
Change math::median indexing for even length arrays.
Pass IP & Origin onto session used by scope queries.
Fix possible corruption of MTree and incomplete knn.
Allow array::flatten() to be used as an aggregate function.
Make SELECT ONLY deterministic.
Optional function arguments should be optional.
Default table permissions should be NONE
Bugfix: Fix inconsistant record parsing
Fix time regression in surrealdb.wasm binaries.
Fix computing futures in query conditions.
Fix issue with scoring on complex queries.
Fix ML support on Windows and enable the feature in Windows binaries.
Replace the custom JWT parser causing decoding issues.
Ensure compression is only enabled when response is a certain size.
Respect alias for dynamic field queries with type::field().
Prevent overflow in math::power().
Fix error message pointing to wrong character.
Expand logic for static value validation to improve DEFAULT clause handling.
Fallback to a string when record ID parsing fails.
Ensure an attempt to set a protected variable returns an error.
Fix duration addition in timeout causing overflow.
Fix a bug where a non-empty list parser would parse empty lists.
Limit recursion depth when parsing nested RELATE statements.
Ensure REMOVE statement does not only remove the first 1000 keys.
Fix BTree deletion bug.
Replace close method on live::Stream with a Drop trait implementation.
Performance improvements:
Enable compression on the HTTP connector.
Make REMOVE [ TABLE | DATABASE | NAMESPACE ] faster for TiKV and FoundationDB.
Repetitive expressions and idioms are not anymore re-evaluated.
Improve performance of CREATE statements, and record insertion.
Improve RocksDB performance and configuration, introducing SURREAL_ROCKSDB_THREAD_COUNT, SURREAL_ROCKSDB_WRITE_BUFFER_SIZE, SURREAL_ROCKSDB_TARGET_FILE_SIZE_BASE, SURREAL_ROCKSDB_MAX_WRITE_BUFFER_NUMBER, SURREAL_ROCKSDB_MIN_WRITE_BUFFER_NUMBER_TO_MERGE, SURREAL_ROCKSDB_ENABLE_PIPELINED_WRITES, SURREAL_ROCKSDB_ENABLE_BLOB_FILES, SURREAL_ROCKSDB_MIN_BLOB_SIZE environment variables.
Improve SpeeDB performance and configuration, introducing SURREAL_SPEEDB_THREAD_COUNT, SURREAL_SPEEDB_WRITE_BUFFER_SIZE, SURREAL_SPEEDB_TARGET_FILE_SIZE_BASE, SURREAL_SPEEDB_MAX_WRITE_BUFFER_NUMBER, SURREAL_SPEEDB_MIN_WRITE_BUFFER_NUMBER_TO_MERGE, SURREAL_SPEEDB_ENABLE_PIPELINED_WRITES, SURREAL_SPEEDB_ENABLE_BLOB_FILES, SURREAL_SPEEDB_MIN_BLOB_SIZE environment variables.
Improve WebSocket performance, introduce SURREAL_WEBSOCKET_MAX_FRAME_SIZE, SURREAL_WEBSOCKET_MAX_MESSAGE_SIZE, SURREAL_WEBSOCKET_MAX_CONCURRENT_REQUESTS environment variables.
Use specific memory allocators depending on OS.
v1.1.0 introduces a new Live Query API to the Rust SDK, for powerful realtime updates in your Rust applications.
It was previously impossible to iterate over objects, so we introduced some new functions to make working with object data structures easier.
Strings can optimistically be parsed as Record IDs, Datetimes or as a UUID, if the content matches such a value. With string prefixes you get to decide what value a string holds.
SELECT ONLYThe ONLY clause is sometimes not deterministic. Selecting from an array, table or range with the ONLY clause now requires you to limit the result to 1.
Optional function arguments on custom functions are now actually optional.
Released on Dec 21, 2023
Bug fixes:
Support connecting to beta servers from the Rust SDK.
Released on Dec 14, 2023
Bug fixes:
Add a patch for GHSA-x5fr-7hhj-34j3.
Tables defined without explicit permissions have NONE instead of FULL permissions.
Table permissions are always explicitly displayed with the INFO FOR DB statement.
Released on Sep 13, 2023
After numerous beta releases crammed into just months of development, we are releasing SurrealDB v1.0.0! 🎉
Here follow some of our 1.0.0 highlights
v1.0.0 introduces new type validation methods. These new methods allow you to check which type any sort of value is on the go.
It was a previously difficult to select, create, update or delete just a single record, so we simplified it a bit.
v1.0.0 introduces Live Queries. This powerful technology allows you to write applications where you can serve realtime updates to your frontend.
With Full Text Search, you can efficiently store and index data, and search through it.
All capabilities are disabled by default. This means that by default, you are not able to use any methods, embedded scripting functions, make outbound network calls, or access the database anonymously. Down below follows a set of examples to showcase how one can configure capabilities.
Capabilities are further documented in the Capabilities documentation.
It is now possible to define multiple root users in SurrealDB. This change did require some changes in the way that you start your database however.
With this change, you will now only initially have to provide the --user and --pass flags to create the initial root user, but once the first root user exists, they will no longer by utilized.
For more information, check out the Authentication guide, and the surreal start and DEFINE USER documentation.
v1.0.0 introduces a more strict and powerful typing system. It makes things more simple to understand, and it goes a long way in preventing all kinds of weird bugs in your schemas!
DEFAULT value on field definitionsPERMISSIONS on global parameters and custom functionsScope and anonymous users previously had access to every defined global parameter and function. You can now define these resources with a PERMISSIONS clause to protect them.
FOR, BREAK and CONTINUE statementsTHROW statementDid something unexpected happen, and do you want to throw an error to the client? Now you can!
COMMENT away on resource definitions!IF ELSE statementsWe found the IF ELSE statement to be a bit bulky at times. Now, when you use a block ({}) as the body of the statement, you can skip out on the THEN and END keywords!
With fetch(), query(), value() and basically every SurrealQL function now being available within the embedded scripting functions, they are a very powerful extension to SurrealQL, and can be used to solve complex problems otherwise impossible!
Read more about them in the Embedded scripting functions documentation.
FLEXIBLE fields on SCHEMAFULL tablesSCHEMAFULL and SCHEMALESS functionality can now be used together, suitable for capturing schema-free log data.
It is now possible to run blocks of code, with support for an arbitrary number of statements, including LET and RETURN statements. This allows for writing advanced custom logic, and allowing for more complicated handling of data operations.
SurrealDB now supports the ability to define global database-wide custom functions, which allow for complicated or repeated user-defined code, to be run seamlessly within any query across the database. Custom functions support typed arguments, and multiple nested queries with custom logic.
Released on Dec 14, 2021
Features:
Enable query and session parameters to be defined on a JSON-RPC connection
Ensure subqueries can access encoding parent query and grand-parent queries
Add diff-match-patch functionality when updating document records
Separate authentication levels for Namespace and Database specific access
Aggregate views let you pre-compute analytics queries as data is written to SurrealDB. Similarly to an index, a table view lets you select, aggregate, group, and order data, with support for moving averages, time-based windowing, and attribute-based counting. Pre-defined aggregate views are efficient and performant, with only a single record modification being made for every write.
Released on Jan 21, 2021
Features:
Parameters can be used to store values or result sets
Nested subquery functionality, with scoped parameters
Nested field query notation allowing nested arrays and objects to be queried
Mathematical operators for complex mathematical calculations in queries
Advanced functions for working with arrays, strings, time, validation, parsing, and counting
Released on Dec 8, 2019
Features:
Multi-tenancy data separation, with namespaces and databases
Schemafull or schemaless tables with limitless document fields
Multi-table, multi-row, serialisable ACID transactions
Table fields, table change events, table indexes, and data constraints
Advanced data model including empty values, strings, numbers, objects, arrays, durations, and datetimes