Skip to content

Release Notes

David Amos edited this page Nov 22, 2024 · 88 revisions

NOTE: Release notes are moving to the RelationalAI website.

November 22, 2024 12:00PM PT - 2024.11.17-087db490-1

Bug Fixes

  • Fixes an issue that caused an some engines to experience an unrecoverable engine is upgrading error when an engine upgrade failed to initialize.

November 20, 2024 4:00PM PT - 2024.11.17-087db490

New Features and Enhancements

  • In version 2024114-2a37e311-1, we changed the instance family for the RELATIONAL_AI_ERP_COMPUTE_POOL provisioned by new RAI Native App installs to CPU_X64_XS instead of CPU_X64_S.

    In this release, older apps with CPU_X64_S compute pools will be automatically migrated to CPU_X64_XS. This reduces the number of Snowflake credits consumed by the application without affecting performance.

Bug Fixes

  • Changes to a data stream’s source object’s columns will now result in the stream being quarantined instead of leaving the stream in a broken state. You may resume the quarantined stream to synchronize the schema changes with models built using the RAI Python API.
  • A transaction metadata not found error is no longer raised when a transaction is aborted.

Deprecations and Removals

  • The deprecated relationalai.app.finalize_install() procedure has been removed. The work that this procedure was responsible for is performed by app.activate().

November 13, 2024 4:00pm PT - 2024.11.10-4f524894

New Features and Enhancements

You can now configure engines to automatically suspend after a period of inactivity:

  • The api.create_engine() procedure has a new engine_config parameter that accepts a JSON object, like {'auto_suspend_mins': 60, 'await_storage_vacuum': false}, for configuring how many minutes an engine must be inactive before being suspended and whether or not garbage collection tasks must complete before suspending the engine. If engine_config is NULL, the engine is configured with auto_suspend_mins set to 0, and the engine will not be automatically suspended.

  • The default value for auto_suspend_mins will change from 0 to 60 minutes in a future release. To avoid unexpected behavior, we recommend creating engines with an explicit auto_suspend_mins value. Beginning with version 0.6.0 of the RAI Python API, engines auto-created by the API will be configured with auto_suspend_min set to value of the auto_suspend_min configuration key, or 60 minutes if the key is missing.

  • An api.alter_engine_auto_suspend_mins() procedure has been added to alter an existing engine’s auto_suspend_mins configuration parameter. Note that this procedure only works for engines created using the new api.create_engine() procedure mentioned above.

  • Use the new api.resume_engine() procedure to resume a suspended engine. Beginning with version 0.6.0 of the RAI Python API, suspended engines will be resumed automatically when Python queries are executed.

  • The api.engines view, as well as the table returned by api.get_engine(), now include an AUTO_SUSPEND_MINS and AWAIT_STORAGE_VACUUM columns that contain the configured values for each engine. The new SUSPENDS_AT column shows the timestamp of the next scheduled suspension for inactive engines.

Fixes

  • Fixed a bug that periodically resumed the app warehouse while the Native App was deactivated.

Nov 6, 2024 4:00pm PT - 2024.11.4-2a37e311-1

New Features and Enhancements

  • New RAI Native App installations will provision the compute pool named RELATIONAL_AI_ERP_COMPUTE_POOL for the RAI SPCS service as a CPU_X64_XS instance family of nodes. For existing installations, this compute pool was provisioned as a CPU_X64_S instance family and those will be automatically migrated to the new instance family in an upcoming release. This change reduces the number of Snowflake credits consumed by the SPCS service without affecting service operations or performance.
  • Application logs have been expanded with more details for improved support.

Oct 30, 2024 3:00pm PT - 2024.10.27-a1d39013

New features and enhancements

  • The engine upgrade process was improved:
    • While a new version of the RelationalAI Native App is being rolled out to a consumer account, it is now possible for transactions to run on engines that are already using the latest version of the app. In previous versions, new transactions were rejected during the upgrade process, even on engines that were already using the latest version.
    • You can now create engines on pools that are in the process of being upgraded. These new engines will be created with the latest version.

Fixes

  • Fixed an issue where the api.engines view could raise errors when used while an engine is simultaneously being deleted.
  • Comparisons between zero values now return the correct results. For example, 0.0 = -0.0 now returns true and 0 = -0 also now returns true. Note that 0 = 0.0 returns false because the types do not match.

Oct 23, 2024 4:00pm PT - 2024.10.19-953019ad

Rollout Schedule

  • us-east-1: Oct 23, 2024, 4:00 PM PT - 8:00 PM PT
  • us-east-2: Oct 23, 2024, 4:00 PM PT - 8:00 PM PT
  • us-west-2: Oct 24, 2024, 5:00 AM PT - 9:00 AM PT

New features and enhancements

  • Added support for FixedDecimal and Int128 number types for many trigonometric operators: sin, sinh, asin, asinh, cos, cosh, acos, acosh, tan, tanh, atan, and atanh.
  • Added automated cleanup of outdated log files in the app_state.client_log_stage based on a 30 day retention period. This will reduce storage costs and ensure compliance with data retention policies. No customer action is required to enable this feature.

Fixes

  • Fix bug in cdc_status where it would fail if there were multiple entries for the CDC engine returned through api.engines due to incomplete cleanup of the resources associated with older incarnations of the CDC engine.
  • Fix a bug in delete_engine where it did not fail when dropping engine service was not successful

Deprecated features

  • The deprecated procedures app.resume_service() and app.suspend_service() were removed, app.activate() and app.deactivate() should be used instead (documentation).

Oct 17, 2024 4:00pm PT - patch-2024.10.14-d7ccec64-4_279d55e8

Hotfix Oct 18, 2024 5:00 am PT

  • Fixed an issue that blocked upgrades for accounts that had both the RelationalAI Service running and CDC enabled.

New features and enhancements

  • Ongoing transactions will be marked as aborted when an engine is deleted or under upgrading.
  • The application now manages the engine used to run CDC transactions, instead of requiring the user to create an engine and instructing the application to use it. See updated documentation around CDC Stream Management.
    • The relationalai.app.resume_cdc() and relationalai.app.suspend_cdc() continue to be the way to manage CDC functionality. The CDC engine is not immediately created when CDC is resumed, it will instead be created when there is data to replicate to the RelationalAI App through Data Streams.
    • Adjust CDC engine size with the relationalai.app.alter_cdc_engine_size(size string) procedure. The default size is HIGHMEM_X64_S. relationalai.app.cdc_status() has been updated to describe whether CDC is enabled and details about the engine (configured name and size, and current status).
    • Existing user-created engines assigned to CDC are retained but are no longer used for CDC, and can be deleted/continued to be used for other purposes as appropriate.
    • Calling relationalai.app.setup_cdc() is no longer necessary, and will invoke resume_cdc() instead. setup_cdc() is now deprecated and will be removed in a future release.
    • CDC starts suspended by default upon installation.
    • The CDC engine does not generate RelationalAI surcharges, and is not meant for user submitted transactions.

Fixes

  • relationalai.app.finalize_upgrade, used in the Native App upgrade process, no longer attempts to resume CDC if it is not enabled.

Deprecated features

  • The compute_pool argument is ignored for overloads of relationalai.api.create_engine that have it, and engines will be hosted in application managed pools instead of the provided pool. These overloads will be removed in a future release, and versions of create_engine that don’t take the compute pool arguments should be used instead.
  • relationalai.app.create_service() is deprecated and will be removed in a future release. relationalai.app.activate() should be the procedure to use instead in future instances, and when relationalai.app.create_service() is called relationalai.app.activate() will be invoked instead.

Oct 9, 2024 11:00am PT - 2024.10.7-f9b6c377

New features and enhancements

  • Added support for FixedDecimal and Int128 number types for some math operators: sqrt, cbrt, log, and sign.

Deprecated features

  • It is no longer necessary to call app.finalize_install after installing the Native App, this procedure will be fully removed in a later release.
  • app.start_service was fully removed from the application, app.activate should be used instead.

Oct 2, 2024 11:24pm PT - 2024.9.30-fbb9456f

Breaking changes

  • The transitive_closure of a given node now includes the node itself if there exists a path from the node to itself. For example: 1) the transitive_closure of a node in a directed cycle now includes the node; 2) the transitive_closure of a node with a self loop, and no other edges, now includes the node; 3) the transitive_closure of a node in a directed path graph, with no other edges, does not include the node; and 4) the transitive_closure of a fully isolated node, i.e. one with no edges, does not include the node.

New features and enhancements

  • The relation reachable_from, which for a given node provides the set of nodes reachable from that given node, has been added to the graph library. Note that this relation is similar to, but subtly different from, transitive_closure; the key difference is that a given node is always reachable from itself, independent of whether there is a path from the node to the node.
  • Documentation of the graph library’s diameter_range relation was improved, clarifying that diameter_range returns the diameter range for the largest (weakly) connected component (instead of infinity) if the graph is disconnected.

Fixes

  • Restored app.suspend_service() and app.resume_service() with stub implementations that warn callers of their deprecation. These procedures will be removed in a later release. The relationalai.app.activate() and relationalai.app.deactivate() procedures should be used instead of manage the application’s resources (docs).
  • An example for the graph library’s adamic_adar relation has been fixed.
  • An example for the graph library’s preferential_attachment relation has been fixed.

Sept 25, 2024 8:30pm PT - 2024.9.23-75ddeed2

Breaking changes

  • The transitive_closure of a node in a directed graph no longer includes the node itself.
  • The preferential_attachment of a pair of nodes where at least one of them is an isolated node, will return zero. This change means that, now, for every pair of nodes in the graph, we will get a numerical result (as opposed to {} / false previously)
  • cosine_similarity over directed graphs was previously based on neighbors (both in- and out-neighbors); it is now based solely on out-neighbors, matching the behavior of jaccard_similarity.
  • weighted_cosine_similarity previously produced incorrect results in some cases, and was not consistent with cosine_similarity; it is now consistent with cosine_similarity and produces correct results in all known cases. Results will change in most cases.

New features and enhancements

  • Added the relationalai.app.activate() and relationalai.app.deactivate() procedures as a one-call interface to turn application functionality and application compute consumption on and off (docs). This includes the RelationalAI service, engines, CDC functionality, and the underlying Snowflake warehouses and compute pools.
  • The relationalai.api.engines view now has a new version column describing the engine version for each entry.

Deprecated features

  • It is no longer possible to create the RelationalAI service using user-created compute pools and warehouses. The relationalai.app.start_service(...) procedure now ignores all arguments and executes relationalai.app.create_service() instead. Those manually created resources can be dropped/repurposed as appropriate.
  • The deprecated relationalai.app.suspend_service and relationalai.app.resume_service procedures have been removed.
  • A future release will remove the ability to specifically create/start the RelationalAI SPCS service, removing the create_service, start_service, and drop_service procedures from the relationalai.app schema. The new activate() and deactivate() procedures should be used instead.

Fixes

  • The RelationalAI service will no longer be unintentionally resumed after being suspended.

Sept 18, 2024 10:30am PT - 2024.9.13-3c7cf8df

Breaking changes

  • ::graphlib::betweenness_centrality’s node-sampling strategy was changed to improve approximation accuracy. For graphs with fewer than one hundred nodes, results should not change. For most graphs with more than one hundred nodes, results should not change substantially. For some graphs with more than one hundred nodes, results may change substantially, with that change representing a significant improvement in approximation accuracy.
  • ::graphlib::pagerank previously could produce NaNs over graphs with zero-weight edges. This has been fixed; pagerank should no longer produce NaNs over such graphs.

Known issues

  • If engines existed while the RelationalAI service has been dropped, those engines will not be usable for around 30 seconds after the RelationalAI service has fully started up. Submitting a transaction to those engines will yield an error stating that the engine is provisioning.

Sept 11, 2024 10:36am PT - 2024.9.9-08058e12

Breaking changes

  • The weighted jaccard similarity algorithm (::graphlib::weighted_jaccard_similarity) no longer produces explicit zero scores; results are now sparse, rather than dense with explicit zeros.

Known issues

  • If engines existed while the RelationalAI service has been dropped, those engines will not be usable for around 30 seconds after the RelationalAI service has fully started up. Submitting a transaction to those engines will yield an error stating that the engine is provisioning.

Sept 04, 2024 06:30pm PT - 2024.9.1-451ebb5f

Breaking changes

  • The transitive_closure of a node in an undirected graph no longer includes the node itself.
  • is_reachable no longer indicates that a node is reachable from itself in undirected graphs.
  • reachable_from no longer indicates that a node is reachable from itself in undirected graphs.
  • degree_centrality now produces 0.0 for isolated nodes without self loops, instead of NaN.
  • degree_centrality now produces 1.0 for isolated nodes with self loops, instead of inf.
  • jaccard_similarity over directed graphs previously produced scores based on neighbor counts, inconsistent with weighted_jaccard_similarity, which produces scores based on out-neighbor counts over directed graphs. jaccard_similarity over directed graphs now produces scores based on out-neighbor counts, consistent with the corresponding behavior of weighted_jaccard_similarity.

Aug 27, 2024 11:50pm PT - hotfix-2024.8.26-5e0f6d55-1_46671580

New features and enhancements

  • This release includes minor updates and improvements to enhance the overall performance and stability of the system.

Fixes

  • Mitigate the engine provision issue caused by a Snowflake release change.
  • Action: Customers must upgrade their engines if any HIGHMEM_X64_S size engines are running in their account.

Aug 21, 2024 9:30pm PT - hotfix-2024.8.19-308fe90c-1_e02ce924 (with Breaking Changes)

Breaking changes

  • Please see the note on graphlib::is_connected in the Fixes section below.

Fixes

  • Fixed a bug that caused Data Streams to be stuck in the DELETING state.
  • graphlib::is_connected previously indicated that empty graphs are disconnected, counter to convention. graphlib::is_connected now indicates that empty graphs are connected.

Aug 15, 2024 5:15pm PT - hotfix-2024.8.11-7ae2aaf2-1_a2c0d8c4 (with Breaking Changes)

Breaking changes

  • Please see the note on graphlib::triangle_community in the Fixes section below.

New features and enhancements

  • New procedures & functions were added to help with upgrading all customer engines to the latest version:
    • call relationalai.app.upgrade(): Starts the engines upgrade process in the background.
    • select * from relationalai.app.upgrade_status: Returns the current status of the upgrade.
    • select * from relationalai.app.upgrade_status_details: Returns the current status of the upgrade per engine.
    • call relationalai.app.finalize_upgrade(): Concludes the upgrade.
  • Enable high throughput disks for select customers.

Fixes

  • Prevent the app’s internal Task from waking up a suspended RAI Service.
  • graphlib::triangle_community does not support directed graphs, but previously could produce non-empty results when given a directed graph. triangle_community now consistently produces empty results when given a directed graph.
  • The edge list in an example in graphlib::louvain’s documentation (of a heavy dumbbell embedded in a six-clique) was corrected.

Aug 08, 2024 6:30pm PT - 2024.8.4-3ba20eef

New features and enhancements

  • Engines can now be hosted on resources created and managed by the application, using the relationalai.api.create_engine(<name>, <size>) procedure. The existing variants of the relationlai.api.create_engine() procedure that take the name of a user-provided compute pool can still be used, but are now deprecated and will be entirely removed in a future release.
    • To do so, the app now requires the CREATE WAREHOUSE and CREATE COMPUTE POOL privileges. To transition existing installations to the RAI Service hosted on app-managed resources, run the commands below; this will result in a brief downtime of the app (~2-5 minutes).
      grant create compute pool on account to application relationalai;
      grant create warehouse on account to application relationalai;
      call relationalai.app.drop_service();
      call relationalai.app.create_service();
      -- to move each engine to be hosted on app-created resources:
      -- note name and size
      call relationalai.api.delete_engine(<name>);
      call relationalai.api.create_engine(<name>, <size>);
      
    • A procedure relationalai.api.alter_engine_pool_node_limits(<size>, <min>, <max>) has been added to help manage limits on how many of each engine size can be created with the application.

Fixes

  • A bug has been fixed where certain uncommon type conversions caused a system internal error.

July 31, 2024 12:47pm PT - 2024.7.29-89bd1051

New features and enhancements

  • This release includes minor updates and improvements to enhance the overall performance and stability of the system.

July 25, 2024 8:55am PT - 2024.7.21-16d66adf

New features and enhancements

  • The RAI Service can now be run with resources created and managed by the application (a X-SMALL warehouse and 1-node CPU_X64_S compute pool) , using the relationalai.app.create_service() procedure. To do so, the app now requires the CREATE WAREHOUSE and CREATE COMPUTE POOL privileges. The existing relationlai.app.start_service(<compute pool>, <warehouse>) procedure using user-provided resources can still be used, but it is now a deprecated path and will be entirely removed in a future release.
    • To transition existing installations to the RAI Service hosted on app-managed resources, run the commands below; this will result in a brief downtime of the app (~2-5 minutes).
grant create compute pool on account to application relationalai;
grant create warehouse on account to application relationalai;
call relationalai.app.drop_service();
call relationalai.app.create_service();
  • Lowered the memory and cpu resources for engines of the HIGHMEM_X64_S and HIGHMEM_X64_M sizes based on snowflake recommendations.

July 18, 2024 12:31pm PT - hotfix-2024.7.15-7710f36e

Fixes

  • Resolved a vulnerability that could lead to tokens being logged.

July 11, 2024 11:00am PT - 2024.7.7-3793050c

New features and enhancements

  • While using api.exec to start a transaction, if the response size exceeds the Snowflake response limit, RAI will return an error directly instead of a Snowflake error.
  • The abs function now supports Period types (Year, Month, Day, Millisecond, etc.)
    • Example: equal(abs[^Day[-5]], ^Day[5])

Fixes

  • Improved the error message for cases where the arity of a vararg native cannot be determined. Previously, this threw an INTERNAL_COMPILER_ERROR. It now throws an UNKNOWN_ARITY error.

July 03, 2024 9:30am PT - 2024.7.1-3596ea5d

New features and enhancements

  • Fixed an issue where the first set of concurrent transactions against a newly created database could fail.
  • Deleting the CDC engine using api.delete_engine(<engine>, true) will now suspend CDC as well.
  • Added two new columns last_transaction_id and errors to the results of api.get_data_stream to improve Data Stream debuggability.
  • Added a api.data_stream_errors view to expose Data Stream errors.

Fixes

  • CoreRel deprecation warnings now have their own code of COREREL_DEPRECATION instead of presenting as a PARSE_PROBLEM.

June 28, 2024 1:30pm PT - 2024.6.24-0b8f1e67 (with Breaking Changes)

Breaking changes

  • Deprecated procedures/functions api.use_database, api.get_database, api.use_engine, and api.get_engine have been removed, along with procedure overloads that relied on these implicit values (api.load_data, api.exec, api.exec_into). Explicit arguments should be used instead.
  • Deprecated CDC management procedures in the api schema have been removed. The equivalent versions in the app schema should be used instead.

New features and enhancements

  • Introduced new engine sizes HIGHMEM_X64_S and HIGHMEM_X64_M to depreciate the engine size HighMem|S and HighMem|M.
  • Improved retry handling for transactions.
    • Abort non-retriable transactions directly.
    • Return an error if a transaction occurs during engine provisioning.
  • Improved validation during data stream creation:
    • Column type validation is now performed when data streams are created. Previously the validation would be done when the data streams ran, leading to a delayed and unobvious failure response.
    • Added a check to ensure that the target relation of a data stream is empty during data stream creation.
    • Errors due to incorrect table references have been made clearer.
  • Data streams now write a unique ID column into the target relation to make it easier and more efficient to retrieve the full set of IDs of the relation.
  • The api.get_engine UDF and api.engines view now return the compute pool that each engine service is hosted in.
  • Better support for data loading natives when used in combination with outline abstractions.

Fixes

  • Fix bug where a relative namespace path that happened to match a fully qualified namespace path would resolve the fully qualified path.
  • Improve heuristic for emitting arity mismatch diagnostics on partial applications.
  • loose_eq definition now uses ::std::mirror::try_convert so that any custom overloads of the latter will get used in evaluating loose_eq.

June 12, 2024 11:00am PT - 2024.6.9-4f839d19 (with Breaking Changes)

Breaking changes

  • Infomap’s ergodic node visit frequency calculations have changed, improving accuracy and convergence rate. Community assignments may change, nominally to an equivalent or more correct assignment.

New features and enhancements

  • Increased the database name length limit from 63 to 200.
  • Excluded engines in pre-pending state in list engines api.
  • Exposed engine name in get_transaction and list transactions apis
  • When possible, the path that was in the process of being exported is now reported when a runtime exception happens during CSV export
  • Performance improvements for label propagation, Louvain, and Infomap.

Fixes

  • Constant fold missing = missing to true
  • The mirror metamodel was incorrectly reporting some generated_from dependencies in the eval phase as declarations when they were in fact base relations - this has been corrected
  • In some cases, the range was not reported with a runtime exception when it could have been. These ranges are now present.

June 5, 2024 4:00pm PT - 2024.6.2-13c3ad48 (with Breaking Changes)

Breaking changes

  • Label propagation, Louvain, and Infomap were augmented with convergence acceleration strategies that significantly reduce end-to-end run times. These convergence acceleration strategies also change results in a manner similar in kind and degree to changing the randomization seed. (Where community structure is unambiguous, community assignments are unlikely to change. Where community structure is ambiguous, community assignments may change, nominally to an equivalently correct assignment.)

New features and enhancements

  • Enhanced retry and http return code if the engine is in pending or failed status.
  • Two new engine states were introduced: orphaned & gone. Each represents an (inconsistent) state of missing engine information.

Fixes

  • Improved handling of outlining in the presence of untyped variables
  • 0.0 = -0.0 now consistently returns true
  • Enforce that extension of declarations in other namespaces only works when that relation has already been declared in that other namespace
  • Fixed recording of consumption of engines created with the HighMem|S and HighMem|M sizes

May 29, 2024 9:44am PT - 2024.5.26-8cc76ff4

New features and enhancements

  • Improvements to the ::graphlib::directed and ::graphlib::undirected constructors. These constructors now:

    1. directly accept an edge/weight list, as they did previously, and yield the same result for valid graphs;
    2. can also accept a relation containing an :edge relation, a :node relation, both, or neither (matching our other parameterized algorithms);
    3. perform basic validation of the provided edge/weight/node relations. The following validations are currently supported:
      • node relation is exclusively arity one,
      • edge/weight relation is exclusively arity two or exclusively arity three,
      • and arity-three edge (i.e. weight) relations are functions i.e. do not contain multiple-weight edges);
    4. yield false if the constructor arguments do not validate; and
    5. can provide a report on the validation failure if :diagnostics are requested.
  • Enhanced http return codes if the RelationalAI transaction is aborted or canceled.

Fixes

  • Label propagation, Louvain, and Infomap now more gracefully handle edge cases when embedded in recursion.
  • If a relation is passed to a reduce function that does not have at least arity 1, this will emit an arity mismatch warning.

May 24, 2024 2:15pm PT - 2024.5.24-a53c93ab (with Breaking Changes)

Breaking changes

  • The rel-compat model is no longer included in new databases and when the update libraries procedure is run, it will be removed.
    • In the last release we started emitting warnings for any usage of relations in this model. If you didn’t see anything then, you should be unaffected.
  • CoreRel deprecation warnings will be emitted for any Rel that does not conform to the CoreRel grammar.
    • Please see the cheat sheet for details on CoreRel and how to migrate old Rel to CoreRel. This link is also included in all relevant deprecation warnings.

New features and enhancements

  • Introduced two customer face engine sizes, i.e., HighMem|S and HighMem|M.
  • Introduced two more rai transaction states, i.e, Queued and Running.
  • Introduced erp profiling endpoints to allow engine profiling in SPCS.
  • Enhanced transaction aborted reasons and http return codes.
  • Libraries are now versioned. They each have a version relation (e.g. ::std::version) that can be queried, logged, and returned after library updates.
  • Improved edge case handling for label propagation, Louvain, and Infomap.
  • On-the-fly validation of edge weights for label propagation, Louvain, and Infomap. (NaN weights, +/-Inf weights, and multiple-weight edges now yield empty results and a validation failure report rather than triggering exceptions.)
  • Introduced RAI Schema feature. (https://github.com/RelationalAI/rai-sf-app-docs/wiki/Guide-%E2%80%90-Using-the-Application#rai-schemas)
  • Added new application roles to allow finer control of privileges. (https://github.com/RelationalAI/rai-sf-app-docs/wiki/Guide-%E2%80%90-Using-the-Application#application-roles)
  • Application level CDC management procedures have been moved under the app schema (setup_cdc, cdc_status, resume_cdc, suspend_cdc). The versions in the api schema will be deprecated in a later release.
  • Added a variant of exec_into that infers column names and types from the Rel query, removing the need to explicitly specify them.

Fixes

  • Power (^) now has the same error-on-overflow semantics as all other arithmetic operations.
  • Typeof no longer leaves behind runtime cruft, which could cause erroneous result filtering.

May 15, 2024 9:35am PT - 2024.5.13-374ee28b (with Breaking Changes)

Breaking changes

  • Previously, the default number of maximum iterations for PageRank was 100, now it is 20.
    • To continue to see the old behavior, you can set the maximum number of iterations manually, as follows: def result { pagerank[{(:graph, G); (:max_iter, 100)}] }
    • PyRel users should not be affected by this change.
  • Previously, the default number of maximum sweeps for Label Propagation was 1000, now it is 20.
    • To continue to see the old behavior, you can set the maximum number of iterations manually, as follows: def result { label_propagation[{(:graph, G); (:max_sweeps, 1000)}] }
    • PyRel users should not be affected by this change.
  • JSON loading will now load names as the ::std::json::Name value type instead of a meta value string.
    • Example:
      • load_json[{:data, “””{“a”: 1}”””}]
      • Previous behavior: (:a, 1)
      • New behavior: (::std::json::^Name[“a”], 1)
  • Usage of relations in the rel-compat model will now emit deprecation warnings. In the next release, we will no longer add the rel-compat model to new databases and updating libraries will remove it.

Fixes

  • A null character in a CSV header would previously cause the transaction to abort. This is now a user-facing diagnostic.
  • The restrictions for namespaces are now better enforced. It is now an error to include a namespace or import declaration inside a module or with/use block.
  • Reducing with in an initial value over an empty body would previously produce different values depending on if the empty body was statically known or dynamically known. These now both consistently return false.

May 9, 2024 10:30am PT - 2024.5.7-6f5b7a29 (with Breaking Changes)

Breaking changes

  • Engine & RAI database resource names are now case-sensitive consistently. Previously, engine names were case-insensitive and database names were case-sensitive on writes but case-insentive on reads.
  • pagerank and label propagation briefly directly accepted a graph (in addition to accepting a config relation containing a graph); this ability has been removed.
  • As an OOM prevention measure the back-end will now reject very large inputs beyond a predefined threshold, and the back-end will throw an exception if it receives the input larger than this threshold. The default threshold is 10000, and this threshold can be set via the new relconfig parameter :ast_size_exception_threshold, e.g.: def insert[:relconfig]: {(:ast_size_exception_threshold, 20000)}.

New features and enhancements

  • Engine names are now limited to 50 characters, and a 12-character engine ID has been introduced to engine metadata.
  • Improved reporting of errors originating from Snowflake
  • Louvain, Infomap, and Label Propagation now support isolated nodes.
  • A warning is now raised when the back-end receives an input with a size larger than a predefined threshold. The default threshold value is 1000, and this threshold can be set via the new relconfig parameter :ast_size_warning_threshold, e.g.: def insert[:relconfig]: {(:ast_size_warning_threshold, 5000)}.

Fixes

  • Concurrency bug causing ERP crashes has been fixed
  • Misreporting the engine status when a create database transaction fails has been fixed
  • Deletion of an engine during creation was misreported as an internal error
  • An issue where Louvain, Infomap, and label propagation would not function under certain conditions when embedded in recursion has been fixed.

Known issues

  • The Snowflake Warehouse supplied to the application must have auto_resume set to true, otherwise the RAI Service will get stuck in retry loops and not be able to perform its functions.

May 3, 2024 06:00pm PT - release-2024.05.02 (with Breaking Changes)

Breaking changes

  • load_data and CDC will now use RAI’s 128-bit integer type when mapping Snowflake integers to RAI types. Previously Snowflake NUMBER types that didn't actually fit in int64 were mapped to int64 anyways; if int64 behaviour should be preserved, the source Snowflake table should have the relevant columns converted to number(18,0) instead.

Fixes

  • Fixed an issue that kept warehouses from suspending, thus incurring unexpectedly high cost

April 19, 2024 01:49pm PT - 2024.4.17-6813b77a

New features and enhancements

  • Improved performance by using a new metadata layer with memory cache.
  • Implemented automatic engine resume functionality when transactions are requested for a suspended engine.
  • Added a api.cdc_status procedure to describe the state of CDC’s settings on the application.
  • Improved CDC telemetry.
  • Louvain now supports several parameters (sweep_tolerance, level_tolerance, max_sweeps, max_levels, and rng_seed`), its logs are richer, and its cancellation behavior is more consistent and responsive.
  • Label propagation’s :diagnostics now include termination information and a convergence summary, providing insight into the algorithm’s behavior and facilitating parameter selection and tuning.

Fixes

  • Fixed the issue where engines could not be deleted following a breaking change introduced by Snowflake in a recent release.
  • Fixed unexpected errors occurring when transaction requests were made to a pending engine.
  • An issue with Louvain’s and Infomap’s behavior on challenging graphs requiring more than two levels for convergence was caught and fixed; convergence and/or solution quality should be noticeably better on large and/or challenging graphs.
  • ::graphlib’s graph constructors, undirected_graph and directed_graph, now accept weighted edge relations containing Int128 weights (which are normalized to Float64s).

Breaking changes

  • No breaking changes in this release.

Known issues

  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

April 11, 2024 08:20am PT - 2024.4.5-e22de006

New features and enhancements

  • Increased the engine provision timeout from 20 mins to 30 mins.
  • Improved the engine provision error handling.

Fixes

  • No new fixes in this release.

Breaking changes

  • No breaking changes in this release.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream.
  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

April 05, 2024 04:30pm PT - 2024.4.3-4f097a0b-Breaking Changes

New features and enhancements

  • Implemented engine provision timeout feature. If the create_engine call exceeds 20 minutes, the create_engine API call will fail.
  • Improved label propagation cancellation responsiveness.
  • Restricted deletion of the engine assigned to CDC, unless the new force override is used:
    CALL relationalai.api.delete_engine('my_eng', true);
  • Improved overall logging, including improvements to infomap logging. (Infomap’s ergodic node visit rate calculation now heartbeats.)

Fixes

  • Filtered out internal operations in api.transactions view.
  • Improved CDC batch management by consolidating all pending batches into a single REL query per database.

Breaking changes

  • Replaced Infomap’s max_conde.nsations parameter with a max_levels parameter, providing the same functionality but more intuitively. To transition from the old parameter to the new parameter, simply replace max_condensations with max_levels and increment the associated number by one.
  • Replaced Infomap’s condensation_tolerance parameter with a level_tolerance parameter, providing the same functionality more intuitively. To transition from the old parameter to the new parameter, simply replace condensation_tolerance with level_tolerance.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream.
  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

March 28, 2024 11:50am PT - 2024.3.26-d7e78c5d

New features and enhancements

  • Improvements were made to make data streams handle changes from the source table/view more quickly.
  • The application’s CDC mechanism now groups changes together to form larger transactions for loading data into RAI when possible, which will help in catch-up scenarios where changes from the source object have accrued but have not yet been loaded into RAI.
  • Added api.transactions view to list RAI transactions. Queries will be included in a future release.
  • Added check to app.suspend_service to prevent accidentally breaking CDC by suspending the central RAI service.
  • The engines view now returns created_by, created_on, and updated_on.
  • The engine & database views include the user that created the entries ("created_by").
  • The database entries are deleted immediately from the api.databases view, i.e. no accumulation of old entries.
  • Improved cancellation responsiveness of label propagation, Louvain, and Infomap.
  • Improved logging of label propagation (all early returns paths logged, all parameters logged, additional execution checkpoints logged).
  • Reduced default number of sweeps label propagation performs to 1000.
  • Graph library has been added to the ::graphlib namespace.

Fixes

  • Data streams created on empty tables or views previously did not function, this was fixed.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream.
  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

March 15, 2024 05:00pm PT - hotfix-2024.3.11_9d549fb7

Fixes

  • Fix the issue with database upgrades that were failing when using the UPDATE_LIBRARIES.

March 13, 2024 07:50am PT - 2024.3.11-58d0777e

New features and enhancements

  • The storage layer of the engine was changed to be backed by a network attached block storage device that can deliver better performance compared to local disks.
  • The graph library API was extended. More specifically, label_propagation can now directly accept a graph to operate on in addition to a configuration relation pointing to such a graph.
  • The get_engine() procedure now returns more columns (version, created_by, created_on, and updated_on) in addition to the existing ones (name, size, status).

Breaking changes

  • None.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream.
  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

March 6, 2024 03:10pm PT - 2024.3.4-6da2a559

New features and enhancements

  • The graph library was extended with new algorithms that can compute:
    • the betweenness centrality measure, the local clustering coefficient measure, and the average clustering coefficient measure for the nodes of a graph.
    • a range estimate for the diameter of a graph.
    • the transitive closure of a graph.
  • The query optimizer was improved to avoid generating query plans that make use of cross products in certain cases.
  • Memory management under high memory utilization was made more robust.

Breaking changes

  • None.

Known issues

  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

Feb 29, 2024 10:50am PT - 2024.2.28-edda648 (with breaking changes)

New features and enhancements

  • Starting with this release, it is no longer necessary to recreate databases after an upgrade. The stored procedure relationalai.api.update_libraries should be called instead to upgrade their databases. See the guide on RAI application upgrade for more details.
  • Added the ability to pass input parameters to Rel transactions, allowing users to parameterize their queries and/or prevent having to deal with string interpolation and escaping (reference).
  • Added more SQL UDFs and Procedures for managing Rel models, e.g. listing, retrieving model code, deleting models (reference).
  • Removed restrictions on the model code passed to relationalai.api.load_model_code, previously imposed to prevent breaking out of string escaping.
  • Added the relationalai.api.cancel_transaction procedure (reference) to cancel running RAI transactions.
  • Added the relationalai.app.get_release UDF to identify the version of the deployed code in terms of the versioning described in these release notes.
  • Standardized file formats when exporting data from Snowflake (relationalai.api.load_data, or for CDC) to ensure consistent representation of data independent of any Snowflake session settings.
  • Improved observability around billing and consumption measurement mechanisms.
  • Improved label propagation's freezing/thawing strategy to reduce the likelihood of some modes of probabilistic non-convergence. (This change also impacts convergence behavior overall: convergence should require fewer, but commensurately more expensive, sweeps.)

Breaking changes

  • load_data now produces a relation with tuples of arity 3, to make the relation’s shape consistent with that of CDC. Previously load_data produced a relation of arity 4, with two of the values used together to uniquely identify a row; those two values have been combined into one value. Any Rel logic depending on the Rel relations persisted by load_data should be updated to consume this new form.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream.
  • The RAI service and its engines can get suspended due to the underlying Snowflake compute pools getting into a suspended state.

Feb 23, 2024 3:30pm PT - 2024.2.22-b21c7c0

New features and enhancements

  • Enabled connecting RAI tooling (e.g. VSCode extension and PyRel) to RAI hosted on Snowflake
  • Improved observability for graph algorithms (Label Propagation, Infomap and Louvain), including progress logging and termination status. Extend Label Propagation algorithm with more robust handling around some of the possible graph shape-dependent cases of non convergence.

Known issues

  • Deleting a RAI database that is the target of a Data Stream breaks the Data Stream, and prevents new Data Streams from being created on the source table of the original Data Stream

Feb 23, 2024 9:37am PT - 2024.2.21-655e25a (with breaking changes)

New features and enhancements

  • Documentation moved out of the Streamlit app to this GitHub Wiki, to increase usability and ease of maintenance
  • relationalai.api.exec_into now returns an object, conveying the rows returned, target table, and RAI transaction ID
  • relationalai.api.load_data now declares that it RETURNS OBJECT explicitly; it always was returning an object but previously was declared RETURNS VARIANT
  • Enable users to configure and tune graph algorithms parameters, such as maximum number of iterations for Label Propagation and Infomap (please refer to the graph algorithms library documentation for the full list of user facing parameters).

Fixes

  • Stopped logging exception details to prevent un-reviewed error/exception content from being sent automatically to the shared event table
  • Fix some attributes in list engines being mixed up
  • Ensure transaction cancellation is working as expected for graph algorithms Label Propagation, Infomap and Louvain.

Breaking changes

  • Changed interface to create data streams to no longer require passing in redundant values
    • Existing Data Streams need to be recreated
  • User access to Service Functions in the SPCS schema removed; use the corresponding functions/procedures in the API schema instead
Clone this wiki locally