With the launch of RisingWave v1.5, the RisingWave team once again introduces remarkable features and updates. This release focuses on extending the capabilities of existing SQL commands and introducing new functions. Follow along as we showcase some of the standout features.

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 clause
    This 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 PROCESSLIST command].


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:

Conclusion

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 release notes.

Look out for next month’s edition to see what new, exciting features will be added. Check out the RisingWave GitHub repository to stay up to date on the newest features and planned releases. Sign up for our monthly newsletter if you’d like to keep up to date on all the happenings with RisingWave.

Follow us on Twitter and Linkedin, and join our Slack community to talk to our engineers and hundreds of streaming enthusiasts worldwide.

Avatar

Emily Le

Developer Advocate

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