Highlights of RisingWave v1.5: The Open-Source Streaming Database

Highlights of RisingWave v1.5: The Open-Source Streaming Database

If you are interested in the full list of v1.5 updates, see the release note.

Major updates to ALTER commands

This month brings in a myriad of new ALTER commands, allowing you to make changes to objects in your database as well as the database itself. With it, also comes new clauses that you can include with the commands. Let us briefly go over these new, exciting updates.

New ALTER commands

Previously, you could only alter sources, tables, and users. Now the ALTER command also applies to connections, databases, functions, materialized views, schemas, and views, offering you much more control over your databases and database objects. For instance, the following SQL query changes the user and schema of the materialized view mv1 .

ALTER MATERIALIZED VIEW mv1
OWNER TO new_user;

ALTER MATERIALIZED VIEW mv1
SET SCHEMA schema2;

New clauses

Three new clauses are also introduced with this update. They include:

  • SET SCHEMA clauseThis clause allows you to move the database object into a different schema. Any dependent objects are moved as well, if applicable. The SET SCHEMA clause can be used when altering connections, functions, materialized views, sinks, sources, tables, and views.

  • OWNER TO clause This clause changes the owner of the specified database object. You can use this clause when applying the ALTER command to databases, materialized views, schemas, sinks, sources, tables, and views.

  • RENAME TO clause The RENAME TO clause allows you to change the name of the specified object. This clause can be applied when altering users, connections, databases, functions, materialized views, schemas, sinks, and views.

These new updates offer you more flexibility and adaptability to meet the changing needs of a streaming database.

For more details:

Support for SHOW PROCESSLIST and KILL

To assist you with monitoring the health of the database, we now support the SHOW PROCESSLIST command, which displays the session’s current workload. It provides a list of statements that are currently being executed by the system. Here is an example of what you might see. The output table shows the ID, user, host, database, elapsed time, and statement associated with the processes.

SHOW PROCESSLIST;
------RESULT
 Id | User |      Host       | Database | Time |                 Info
----+------+-----------------+----------+------+---------------------------------------
 56 | root | 127.0.0.1:57542 | dev      | 6ms  | SELECT c FROM sbtest1 WHERE id=197719

If there is an issue with one of the running queries, you can use the KILL command to stop the process by specifying the ID.

dev=> KILL 56;
KILL

The combination of these two commands offers you the ability to diagnose and fix performance issues affecting your session.

For more details:

  • see the [SHOW PROCESSLISTcommand].

New JSON functions

We are excited to unveil more new JSON functions this month! Let us go over some of these functions.

JSONPath functions

This update introduces a set of JSON functions that accept JSONPath expressions as input. JSONPath is a query language that extracts data from JSON data. In RisingWave, JSONPath expressions are parsed as varchar types and not jsonpath types, but this does not affect the usage of the functions.

The new JSONPath functions and operators introduced include: @?, @@, jsonb_path_exists, jsonb_path_match, jsonb_path_query, jsonb_path_query_array, and jsonb_path_query_first. Here is an example of jsonb_path_exists, which checks if the JSONPath expression returns any item from the given JSON value.

jsonb_path_exists('[{"a": 1}, {"a": 2}, 3]', 'lax $[*].a', '{}') → t

JSON build functions

The jsonb_build_array and jsonb_build_object functions are also included in this update. These functions build a JSON array and object, respectively, given a variadic argument list. Here is an example of jsonb_build_object.

jsonb_build_object('foo', 1, 2, row(3,'bar')) → {"foo" : 1, "2" : {"f1":3,"f2":"bar"}}

The list of input arguments consists of alternating keys and values, so foo and 2 become keys. The keys are converted to text while values are converted as per to_jsonb.

For more details:

Create multiple CDC tables with the same MySQL source

We now have an updated and more convenient method to create multiple CDC tables using the same MySQL source. Previously, if you wanted to ingest CDC data from different tables in the same database, you would call the CREATE TABLE command and specify the database credentials multiple times. This process has been simplified with this version update.

Now you can use the CREATE SOURCE command to establish a connection with the desired database and then use the CREATE TABLE command to ingest data from individual tables within the database. This means that the database credentials only need to be specified once when establishing the connection, streamlining the process. Furthermore, this feature supports incremental and lock-free snapshot loading.

For more details:

These are just some of the new features included with the release of RisingWave v1.5. To see the entire list of updates, please refer to the detailed (https://www.risingwave-labs.com/slack?__hstc=32235681.25e2c16d83245fd21429e8d1b780a47c.1692637175278.1697232675775.1697659305484.23&__hssc=32235681.3.1697659305484&__hsfp=1531353701) community to talk to our engineers and hundreds of streaming enthusiasts worldwide.

The Modern Backbone for Your
Event-Driven Infrastructure
GitHubXLinkedInSlackYouTube
Sign up for our to stay updated.