# 7.8 Release Notes

> **📝 Note**: - To deploy a SingleStore 7.8 cluster, refer to the [Deploy SingleStore Guide](https://docs.singlestore.com/db/v9.1/deploy.md).
> - To make a backup of a database in this release or to restore a database backup to this release, follow [this guide](https://docs.singlestore.com/db/v9.1/manage-data/back-up-and-restore-data.md).
> - NEW RESERVED PREFIX for tables: `_$!$`
>
>   Starting with the 7.8 release, there is a new reserved prefix for column names: `_$!$` This is reserved for internal use only. Before you upgrade to SingleStore 7.8, SingleStore recommends that "\_$!$" is not used as a prefix of column names in your existing tables. If there are existing column names starting with this prefix, you should consider renaming them to avoid potential issues in the future.
>
>   This is not mandatory. DDL commands will not allow the creation of new tables with that prefix, but DML commands will still allow users to access existing objects with that prefix.

## Release Highlights

> **📝 Note**: For a list of all new features and bug fixes, see the [maintenance release changelog.](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/7-8-release-notes/maintenance-release-changelog.md)

## Elasticity

* **New Feature**: SingleStore now supports Flexible Parallelism, which allows multiple cores on the same node to access the same database partition.

  With Flexible Parallelism, as database partitions are created they are divided into sub-partitions. As a query runs on a leaf node, multiple cores working on behalf of the query can process different sub-partitions of a partition in parallel. As an example, if you are currently at one partition per core with Flexible Parallelism, doubling the size of your cluster and then rebalancing will result in two cores for each partition. As a result, a simple query that scans and aggregates all the data in a single partition will now execute more quickly than it did before.

  Added new engine variables used for enabling and configuring Flexible Parallelism: `sub_to_physical_partition_ratio`, `query_parallelism_per_leaf_core`, and `expected_leaf_core_count`. The existing engine variable `node_degree_of_parallelism` is deprecated.

  For more information, see [Flexible Parallelism](https://docs.singlestore.com/db/v9.1/introduction/distributed-architecture/flexible-parallelism.md).

## Programmability and Developer Productivity

* **New Function**: Added the `ISNUMERIC` [function](https://docs.singlestore.com/db/v9.1/reference/sql-reference/conditional-functions/isnumeric.md), used to determine whether the provided expression is a valid numeric type.
* **New Function**: Added the `SESSION_USER` [function](https://docs.singlestore.com/db/v9.1/reference/sql-reference/security-management-commands/current-user.md), used to return the user name you specified when connecting to the server, and the client host from which you connected.
* **New Function**: Added the `SET` [function](https://docs.singlestore.com/db/v9.1/reference/sql-reference/user-defined-variables/set.md), used to initialize a user-defined session variable.
* **New Function**: Added new [vector functions](https://docs.singlestore.com/db/v9.1/reference/sql-reference/vector-functions/using-vector-functions.md), namely `VECTOR_ELEMENTS_SUM`, `VECTOR_KTH_ELEMENT`,` VECTOR_NUM_ELEMENTS`, `VECTOR_SORT`, and `VECTOR_SUBVECTOR`.
* **Enhancement**: Added support for `TRIM` [string function](https://docs.singlestore.com/db/v9.1/reference/sql-reference/string-functions/trim.md). `TRIM` is now multi-byte safe which means the result of an operation using `TRIM` is either a valid string or an unmodified string.

## Storage and Transaction Management

* **Enhancement**: Unlimited storage databases now support the `BACKUP … WITH SPLIT PARTITIONS` command.
* **New Command**: The `DROP MILESTONE` command is used to delete a milestone of a currently attached database.

## Other Improvements and Fixes

* Improved performance for columnstore seeks into string columns – now it is no longer necessary to scan an entire segment to look up the data for a string value for a row when seeking to find that one row.
* A new clause "AS new\_db\_name" has been added to the `RESTORE DATABASE` command which allows the use of the full original backup path if trying to restore to a new database name.
* New Function: `SECRET` - Added the ability to hide credentials from queries. Passing credentials in queries can leave them exposed in plain text during parameterization and they can be seen in logs and the process list. To counter this, you can use the `SECRET` function (similar in function to `NOPARAM`). `SECRET` takes a string (such as a password or other sensitive information) and replaces it with the literal string "\<password>" during parameterization. The string is unchanged for the query however.
  ```sql
  CALL db.do_something_useful('root', SECRET('super-secret-password'));
  ```
  See [SECRET](https://docs.singlestore.com/db/v9.1/reference/sql-reference/string-functions/secret.md) for more information.
* **Enhancement**: Added per privilege transferability from one user to another via the new `TRANSFERABLE` clause and `SYSTEM_VARIABLES_ADMIN` grant in the `REVOKE` security management command.  A new engine variable, `privilege_transfer_mode`, must be set to `per_privilege` for this functionality to work as expected.  Also, this new functionality will affect the results of the `SHOW GRANTS` command. If the `privilege_transfer_mode` engine variable remains on the default value of `grant_option`, then the output is one row and can include the `WITH GRANT OPTION` privilege. If the value of `privilege_transfer_mode` is `per_privilege`, then the output can be two rows. The first row will display the non-transferable privileges. The second row will display the transferable privileges.
* **Enhancement**: Added new `EXPLAIN` and `PROFILE` reproduction clause syntax. `EXPLAIN REPRO` outputs the explain information in JSON format and provides important debugging information. `EXPLAIN REPRO` will work for `SELECT` queries only.  The `PROFILE REPRO` syntax will replace the need to set the engine variable `set_profile_for_debug` to `on`. The engine variable will continue to be supported for backward compatibility.
* **Enhancement**: Added ability to match a [computed column expression](https://docs.singlestore.com/db/v9.1/create-a-database/using-persistent-computed-columns.md) and the same expression appearing in a query, to improve query performance, especially for indexed computed JSON fields. The enhancement promotes data independence between the physical and application layer.&#x20;
* Spilling for `GROUP BY` statements is enabled by default starting in 7.8. Added an additional engine variable, `spilling_minimal_disk_space`. If a node has less disk space than `spilling_minimal_disk_space` (default is 500MB), queries on that node that require spilling will fail instead of spilling to disk.
* [Materialized CTEs](https://docs.singlestore.com/db/v9.1/query-data/advanced-query-topics/with-common-table-expressions.md) are now on by default and no longer considered a preview feature.
* Reduced the memory usage of `approx_count_distinct` by using a more compact representation.
* Existing queries are no longer recompiled on minor upgrades (from 7.8.x to 7.8.y for example).
* Added `ALTER_TIME`, `ALTER_USER`, and `CREATE_USER` to the [information\_schema.TABLES](https://docs.singlestore.com/db/v9.1/reference/information-schema-reference/cluster-component/tables.md) table, to show the time of the latest update the table, the user who made the change, and the user who created the table. For existing tables, the `ALTER_TIME` value will be NULL until the table is altered. For new tables, `ALTER_TIME` will be the same as `CREATE_TIME`.
* Added `FLAGS` column to the `information_schema.VIEWS` table, to indicate whether a view is a Table Valued Function (TVF). A value of `IS_TABLE_VALUED_FUNCTION` indicates a TVF.
* An internal component, the LLVM code generation framework, was updated to version 10 from version 3.8. This improves performance of query compilation for DELETES on tables with a very large number of columns.

## In this section

* [Maintenance Release Changelog](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/7-8-release-notes/maintenance-release-changelog.md)

***

Modified at: July 30, 2024

Source: [/db/v9.1/release-notes/singlestore-memsql/7-8-release-notes/](https://docs.singlestore.com/db/v9.1/release-notes/singlestore-memsql/7-8-release-notes/)

(An index of the documentation is available at /llms.txt)
