V3.2.3 BP9
Version information
- Release date: July 14, 2023
- Version: V3.2.3 BP9
- RPM version: oceanbase-3.2.3.3-109000182023071410
Enhanced features
- MySQL data types are optimized. Specifically, the NCHAR and NVARCHAR data types and the
SELECT N'xxx'syntax are supported.
Behavioral changes
- In this version, the optimization of IN predicate extraction is disabled by default. If large IN queries exist in the business SQL statements and the execution time or memory consumption of these large IN queries causes a bottleneck in the business system, you can set the value of the
_enable_in_range_optimizationparameter toTrueto enable the optimization of IN predicate extraction.
Parameter changes
| Parameter | Change type | Default value | Description |
|---|---|---|---|
| max_trx_2pc_retry_interval | New | 30s | A cluster-level parameter that specifies the maximum message retry interval during the two-phase commit of transactions. If many transaction participants exist, set this parameter to an appropriately large value based on the actual situation. |
| _optimizer_better_inlist_costing | New | False | A tenant-level parameter that specifies whether to enable IN expression optimization for the optimizer. |
| _enable_in_range_optimization | New | False | A tenant-level parameter that specifies whether to optimize the query range of IN predicates. |
Bug fixes
- Fixed the issue where the query performance became poor due to a large number of IN queries were transformed into range queries when too many IN predicates and IN list values existed.
- Fixed the issue where the memory usage of the SYS500 tenant was high because the liboblog cleanup task was not triggered due to a Time Stamp Counter (TSC) clock rollback.
- Fixed the issue where a
core dumpof the observer process might occur when a stored procedure that containedCursorForLoopwas debugged in OceanBase Developer Center (ODC). - Fixed the issue where a
core dumpmight occur when SQL statements whose constants were commented using/*!*/were used for query. - Fixed the issue of physical restore failure when using the
TIMESTAMPorTIMESTAMP WITH LOCAL TIME ZONEdata types as primary keys in a table in Oracle mode, after enabling TDE encryption, writing data, and archiving the generated clogs. - Fixed the issue of stack overflow caused by excessive loop iterations in stored procedures with
GOTO(Oracle mode) orITERATE(MySQL mode) statements. - Fixed the issue where when the
getBigDecimalAPI of JDBC V1.1.10.6 was used in Oracle mode, a loss of significance occurred afterScalewas set to0. - Fixed the issue where a
core dumpmay occur when the PL debug feature was used on the SUSE platform. - Fixed the issue where when a comment that contained two hyphens (--) was displayed in more than one line, the data in the next line was mistakenly considered as a comment.
- Fixed the issue where when a single subpartition of a subpartitioned table was pruned, Error 5284 was returned while executing an SQL statement by using parallel data manipulation language (PDML).
- Fixed the issue where when the
alter table add partitionoperation was executed by using the prepared statement (PS) protocol, if an expression for boundary values of a new partition required implicit Cast conversion, the partition addition operation would fail in the new engine. - Fixed the issue where an out-of-memory (OOM) error was returned during package compilation after a memory leak occurred in PL Resolve View.
- Fixed the issue where the load became unbalanced after nodes were added.
- Fixed the issue where a stored procedure intermittently returned Error 4201.
- Fixed the issue where the 4000
common errorwas returned for anUPDATEoperation that contained subqueries. - Fixed the issue where some data was missing during migration because added subpartitions were not displayed in the
DBA_OBJECTSview. - Fixed the issue where Error 6210 was returned during SQL execution because session variables were not recovered.
- Fixed the issue where Error 4013 was returned for the SYS500 tenant because the occupied memory space could not be released. This issue occurred because clogs were recycled without being archived when the archiving disk was full.
- Fixed the issue where Error 5226 was returned when the usage of the plan cache reached the limit because plan cache eviction failed.
- Fixed the issue of generating a large query range and causing SQL execution error
4019 Size Overflowin an equijoin scenario where both tables had IN conditions. This issue occurred because duplicate IN predicates were not being eliminated. - Fixed the issue where the selected execution plan was not the optimal plan because PS Cursor used the old engine.
- Fixed the issue where in Oracle mode, the scale and precision of the data returned by the
ResultSetMetaDataAPI were inconsistent with those returned in Oracle Database. - Fixed the issue where an error might return during cross-user schema identification if no database was specified for public synonyms in Oracle mode. Fixed the issue where executing an
insert into selectstatement in Oracle mode, without hitting any partition, would result in an Oracle tenant executing the insertion of 0 rows successfully, but the OBServer node would throw an error. - Fixed the issue where in MySQL mode, the output sequence of the
WM_CONCATfunction was inconsistent with that in Oracle mode. - Fixed the issue where backup pieces were not deleted as expected when an automatic cleanup task was normally scheduled.
- Fixed the issue where the error
Entry not existwas returned when theCREATE RESOURCE UNITstatement was executed. - Fixed the issue where Error 4016 was returned if the base table of the trigger contained hidden columns.
- Fixed the issue where Error 4029 was returned if DDL operations were performed on a table that was involved in remote SQL execution.
- Fixed the issue where an error was returned during a package call because the plan cache was not hit after the
OCI_ATTR_FETCH_ROWIDattribute was set. - Fixed the issue where tenant parameters could not be specified if the number of timer tasks on the node exceeded 32 when many tenants existed.
- Fixed the issue where the error
clog role change timeoutwas returned when the leader elected by RootService failed to assume its role because the NTP clock was ahead of time by 2s after a hot migration triggered by a hardware threat on the ECS host. - Fixed the issue where after the tenant allowlist (ob_tcp_invited_nodes) was set to
1.1.1.1/24, the logon by using1.1.1.1failed. - Fixed the issue where if the package was recompiled by using
ALTER PACKAGEwhen Error 4007 was returned during package compilation, the error message changed tounknown error message. the system doesn't declare this msg. - Fixed the issue where it took a long time to generate an execution plan for the
INSERT ALLstatement. - Fixed the issue where Error 4016 was returned during SQL execution because of a bug in the SQL rewriting module. SQL execution becomes normal after the
no_rewritehint is added. - Fixed the issue where a core dump occurred on an OBServer node during the parallel execution of an SQL statement because the OBServer node failed to obtain a valid server ID when it started after the cluster was scaled out.
- Fixed the issue of inaccurate estimation of the number of physical rows on the storage engine.
- Fixed the issue where an error was returned for a ROWNUM query in Oracle mode.
- Fixed the issue where OceanBase Database Proxy (ODP) could not obtain routing information when two synonyms were nested.
- Fixed the issue where the optimization by using indexes failed because an IN clause that contained multiple parameters could not be transformed to OR conditions.
- Fixed the issue where a major compaction for the standby tenant timed out due to a TSC time exception in the system.
Considerations
- MySQL version number formats, such as 5.7.25-OceanBase-v3.2.3.1, are supported in OceanBase Database since V3.2.3 BP4. Use the latest versions of components.
- OBServer nodes support prepared statement (PS) text since OceanBase Database V3.2.3 BP5. It is supported by ODP since V3.2.7.1.
- Default column values can be obtained to implement accurate routing since OceanBase Database V3.2.3 BP6. ODP supports this feature since V3.2.9.
- Storage encryption by using Key Management Service (KMS) is supported since OceanBase Database V3.2.3 BP6. To use this feature, upgrade liboblog to V3.2.4 or later and then upgrade OceanBase Database to V3.2.3 BP6.
- To use versions later than OceanBase Database V3.2.3 BP8, upgrade JDBC to V1.1.10.7 or later.
- To upgrade OceanBase Database to V3.2.3 BP9, make sure that the version of OceanBase Cloud Platform (OCP) is V3.3.2 or later.
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
V3.2.3 BP8
Version information
- Release date: April 15, 2023
- Version: V3.2.3 BP8
- RPM version: oceanbase-3.2.3.3-108000062023041511
Enhanced features
- In the case of node crash or leader switchover, the fast failure of SQL queries can be triggered to reduce the response latency.
- OBStack is integrated into the OBServer installation package to obtain information about thread stacks in a lightweight and real-time manner.
- The
_enable_reserved_user_dcl_restrictionparameter is provided to control whether general users can modify built-in users.
Parameter changes
| Parameter | Change type | Default value | Description |
|---|---|---|---|
_max_trx_ctx_count |
New | 700000 | The maximum number of transaction contexts allowed for a single participant. This is a cluster-level parameter. Value range: [100000, MAX). |
ob_query_switch_leader_retry_timeout |
New | 0 | The longest retry time allowed for a failed query, in microseconds (us). This is a tenant-level parameter. Value range: [0, unlimited). The value 0 indicates that the retry timeout check is disabled. |
_with_subquery |
New | 0 | The policy that the optimizer uses to control common table expressions (CTEs). This is a tenant-level parameter. Valid values: 0, 1, 2.
|
_xsolapi_generate_with_clause |
New | true | Specifies whether the optimizer extracts CTEs. This is a tenant-level parameter. Valid values: true, false. |
_optimizer_group_by_placement |
New | true | Specifies whether to enable the GROUP BY PLACEMENT rewrite algorithm of the optimizer. This is a tenant-level parameter. Valid values: true, false. |
_enable_reserved_user_dcl_restriction |
New | false | Specifies whether built-in users can be modified only by built-in users. This is a cluster-level parameter. Valid values: true, false. |
Bug fixes
- Fixed the issue where the query range extraction failed and the query results were incorrect if a
WHEREclause contained four or more indexed columns that met the following conditions: the first column is an equivalent predicate, the second column a range predicate, the third column an IN expression, and the fourth column a random predicate. - Fixed the issue where when a subpartition was queried, the OBServer node returned empty routing information during the processing of default parameter exceptions. This issue caused the obproxy process to perform random routing and increases the query time.
- Fixed the issue where in an XA transaction, the rollback of a failed nested SQL statement resulted in scheduler context leakage, which accumulated to exceed the upper limit and caused the unavailability of the transaction service on the corresponding node.
- Fixed the issue where in a nested loop join, the execution plan failed if the
TEMP TABLE TRANSFORMATIONoperator existed or pushdown predicates were generated for non-base table conditions. - Fixed the issue where in a multi-table join, the
unexpected operator typeerror was returned if the right table of a nested loop join operator used a global index and the Broadcast to Host Distribution (BC2HOST) algorithm was used. - Fixed the issue where if any indexes existed on columns C1, C2, and C3, and the SQL statement contained the
(C1 = ? OR C1 = ? ...) AND C2 IN (...) AND C3 ...clause, the range extraction failed, resulting in incorrect results. - Fixed the issue where if you use a collection constructor in PL to initialize the memory for collection variables, the memory cannot be released when PL exits. This is because the memory lifecycle is managed at the tenant level and causes memory leaks.
- Fixed the issue where if too many user-defined functions (UDFs) were compiled at a time, statement memory was consumed for type checking and memory bloat occurs.
- Fixed the issue where memory leaks occurred during the parsing of the
SELECTpart in theINSERT ALLstatement. - Fixed the issue where some indexes were abnormal after a successful physical restore.
- Fixed the issue where the following error was reported when you access a view that has a synonym:
ORA-04063: view 'xxx' has errors. - Fixed the issue where the plan cache could not be hit due to incorrect settings of parameterized SQL IDs, which increased the execution time of the
INSERTstatement. - Fixed the issue where inaccurate error messages were returned if multiple layers of error stacks were nested in PL.
- Fixed the issue where it took a long time to acquire a plan because the
UPDATE IGNOREstatement was not handled during expression precomputation. - Fixed the issue where in Oracle mode, information about DBLink-related views could not be displayed by running the
DESCcommand. - Fixed the issue where in Oracle mode, when you use the
TO_NUMBERfunction to convert a value of the NCHAR data type, theInternal errormessage was returned. - Fixed the issue where a syntax error was reported when the old engine or PX engine executed a stored procedure that contained the
MERGE INTOstatement where a DBLink was used to connect to a secondary cluster of the destination database. - Fixed the issue where
SEQUENCE.NEXTVALin the parallel DML (PDML) plan could not be executed in parallel. - Fixed the issue where if column C1 is an indexed column, the
WHEREclause containsC1 in (xx) and C1 in (yy), and the number of parameters exceeds 128, the execution triggers memory leakage. - Fixed the issue where an error was reported during the execution in the following scenario: OCI is used to connect to the database and the attribute
OCI_ATTR_FETCH_ROWIDis set. A trigger that contains theSELECT ... FOR UPDATEstatement is defined in the data table. The DML statements and theSELECT ... FOR UPDATEstatement are sent to different servers for execution, and the DML statements hit the plan cache. - Fixed the issue where if a query statement contains two or more IN expressions and at least one vector expression, and both IN expressions have indexes, the extraction of query range fails and an error is reported.
- Fixed the issue where when an SQL statement that contains a
last_insert_id()expression in theWHEREclause is executed to query the primary key column or an index column, a full-table scan is performed during the query if thelast_insert_id()expression is not precomputed. - Fixed the issue where if a row of a partitioned table contains a large object that overflows the storage capacity, an error is reported during the query.
- Fixed the issue where in DBLink scenarios, unnesting errors occurred due to an incomplete unnesting mechanism for nested joins.
Considerations
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
- The fourth digit in the version number V3.2.3 BP4 of OceanBase Database is increased to 1. The fourth digit in the version number is for internal use and indicates the technical solution for the product upgrade.
- OceanBase Database supports text editing by using prepared statements since V3.2.3 BP5. OceanBase Database Proxy (ODP) supports this feature since V3.2.7.1.
- Since OceanBase Database V3.2.3 BP6, the default values of a column can be obtained to improve the routing accuracy. ODP supports this feature since V3.2.9.
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- KMS storage encryption is supported since OceanBase Database V3.2.3 BP6. To use this feature, you must upgrade Libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.
V3.2.3 BP7
Version information
- Release date: January 19, 2023
- Version: V3.2.3 BP7
- RPM version: oceanbase-3.2.3.3-107000092023011911
Enhanced features
- The
FROM_BASE64()andTO_BASE64()functions are supported in MySQL mode. - The GRANT syntax can be used to grant privileges on the
DBMS_RESOURCE_MANAGERsystem package. - The access performance of the
information_schema.table_constraintsvirtual table is improved.
Compatibility changes
The value range of the internal_sql_execute_timeout parameter is changed to [1000us, 1h]. The maximum value is changed from 10min to 1h, and the default value is still 30s.
Fixed issues
- Fixed the issue where some tables created by using CTAS were mistakenly deleted.
- Fixed the issue where memory leak occurred when indexes were created on JSON generated columns.
- Fixed the issue of incorrect execution results in the
MERGE INTOstatement when the plan was cached in the plan cache. - Fixed the issue where errors were returned when the LPAD function processed special characters whose ASCII codes were 0x03, 0x04, 0x05, and 0x06.
- Fixed the issue where the error
field list ambiguously definedwas returned during PS execution when the SQL subqueries contained the same column names. - Fixed the issue where the out-of-bounds exception of
dbms_sql.column_valuecaused anextend_sizeerror, which further caused memory allocation and access errors. - Fixed the issue where the
INSERT IGNORE INTOstatement might be hung up if a freeze or minor compaction was triggered during the execution this statement. - Fixed the issue where after a maintenance operation was performed on a template-based subpartition, such as partition creation, the newly created partition could not be found in
DBA/ALL/USER_TAB_SUBPARTITIONS. - Fixed the issue where an error was returned in an attempt to access
JSON PATH SEEKof an internal subnode in an emptyJSON object. This issue was not only involved injson_extractscenarios but also scenarios whereJSON pathswas used, such asJSON PATH:where col1->'$."data"."a"' = '123'in aWHEREcondition.
Considerations
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
- The fourth digit in the version number V3.2.3 BP4 of OceanBase Database is increased to 1. The fourth digit in the version number is for internal use and indicates the product compatibility upgrade version.
- OceanBase Database supports text editing by using prepared statements since V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
- Since OceanBase Database V3.2.3 BP6, the default values of a column can be obtained to improve the routing accuracy. ODP supports this feature since V3.2.9.
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- KMS storage encryption is supported since OceanBase Database V3.2.3 BP6. To use this feature, you must upgrade libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.
V3.2.3 BP6
Version information
- Release date: November 15, 2022
- Version: V3.2.3 BP6
- RPM version: oceanbase-3.2.3.3-106000102022111521
Enhanced features
- You can change the AccessKey ID and AccessKey Secret during data backup and restore. The backup feature of OceanBase Database allows you to specify an Alibaba Cloud Object Storage Service (OSS), Tencent Cloud Object Storage (COS), or Huawei Object Storage Service (OBS) bucket as the backup destination. However, you cannot modify the
access_idoraccess_keyparameter of the backup destination during the backup. If the AccessKey ID or AccessKey Secret is changed, you must stop the log backup and change the backup directory. Therefore, this version provides theALTER SYSTEM change external_storage_dest PATH[=]'xxx?host=xxx' set ACCESS_INFO[=]'access_id=xxx&access_key=xxx';command for you to modify the AccessKey ID and AccessKey Secret of the backup destination. The relevant content in GConf is updated and saved accordingly. Observe the following considerations when you use this command:- Before you run the command to update the AccessKey ID and AccessKey Secret for accessing the OSS, COS, or OBS bucket, we recommend that you stop the ongoing second backup task. We also recommend that you delete the old AccessKey ID and AccessKey Secret one hour later after you run the command.
- If you modify the AccessKey ID and AccessKey Secret during a second backup task, and the task is stuck, you must forcibly cancel the task and change the directory to resume the task.
- You can specify the query range in an IN expression to improve the query performance. An IN expression can be considered a special equality expression. When a filter predicate contains an index, OceanBase Database first searches for data in the specified range in the indexed table based on the range determined by the predicate, thus avoiding full table scanning and improving the query efficiency.
- Table API supports the Filter() and QueryAndMutate() functions. If you call only the Filter() function, it supports the LT, GT, LE, GE, NE, and EQ comparison operators. The FilterList() function is also supported. You can specify multiple Filter() functions in a FilterList() function by using the AND and OR relational operators.
- Scalar functions are supported. A scalar function is a function that returns one value per row. For example, the ABS() function takes a numeric column as the argument and returns the absolute value of each value in the column. For example,
SELECT {FN ABS(-1)} FROM DUAL;. - Partition routing is optimized. OceanBase Database Proxy (ODP) can obtain the default value of a column, which improves the routing accuracy.
- Data security is enhanced. The Transparent Data Encryption (TDE) feature is integrated with Alibaba Cloud Key Management Service (KMS).
Bug fixes
- Fixed the issue where Error 4013 was returned because the checksum values of the primary table and the index table were inconsistent when the
SELECT FOR UPDATEstatement and a major compaction task were executed in parallel. - Fixed the issue where a major compaction task timed out when a NULL value was written for the LOB data type during the major compaction.
- Fixed the issue where the
INSERToperation on a temporary table timed out and exited without releasing the memory. - Fixed the issue where in Oracle mode, Error 4016 was returned during the execution of a hierarchical query due to different parameter values.
- Fixed the issue where in a public cloud environment, microblock prefetching increased I/Os when repeated I/O requests were sent and caused idle I/Os.
- Fixed the issue where the OBServer node failed due to the abnormal closure of a cursor when the entity of the cursor was simultaneously used by multiple sessions at a high concurrency.
- Fixed the issue where Error 5889 was returned during the execution of the
GOTO LABELstatement in a loop. - Fixed the issue where the execution of the
ALTER SYSTEM BACKUP DATABASEstatement timed out because the schema information of the node was too much. - Fixed the issue where the progress of an Extended Architecture (XA) transaction was slow and all tenant threads were occupied due to the large number of participants in the transaction commit process, which caused excessive traffic of remote procedure calls (RPCs) between OBServer nodes.
- Fixed the issue where when an SQL statement was executed in PS mode in an Oracle tenant, the following error message was returned because the value of the bound variable was not real:
field list ambiguously defined. - Fixed the issue where when an SQL statement was executed in an Oracle tenant, the
ORDER BYclause supported only valid columns. Constants or aliases were unsupported. - Fixed the issue where when a DDL statement was executed in PL, the data in the temporary table was not cleared.
Considerations
OceanBase Database V3.2.3 BP4 and later are compatible with the MySQL version number format, such as 5.7.25-OceanBase-v3.2.3.1. We recommend that you use the latest supporting tools.
The fourth digit in the version number of OceanBase Database V3.2.3 BP4 is increased to 1. The fourth digit in the version number is for internal use and indicates the product compatibility upgrade version.
We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
The OBServer supports text editing by using prepared statements since OceanBase Database V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
OceanBase Database V3.2.3 BP6 and later can obtain the default values of a column to improve the routing accuracy. This feature is supported by ODP V3.2.9 and later.
OceanBase Database V3.2.3 BP6 and later support KMS storage encryption. To use this feature, you must upgrade libloblog to V3.2.4 or later, and then upgrade OceanBase Database to V3.2.3 BP6.
Notice
OceanBase Database V3.2.3 BP5 can be directly upgraded to V3.2.4, but OceanBase Database V3.2.3 BP6 cannot. Instead, it can be upgraded to V3.2.4 BP1.
V3.2.3 BP5
Version information
- Release date: September 9, 2022
- Version: V3.2.3 BP5
- RPM version: oceanbase-3.2.3.2-105000062022090916
Enhanced features
- Prepared statements are supported in SQL texts. The Prepared Statement API uses the binary protocol and achieves higher execution efficiency than the interactive SQL API. To use the Prepared Statement API, perform the following steps: ○ Use the PREPARE statement to prepare an SQL statement for execution.
PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2))'; ○ Use the EXECUTE statement to execute the prepared statement.SET @a = 3; SET @b = 4; EXECUTE stmt1 USING @a, @b; ○ Use the DEALLOCATE PREPARE statement to release the prepared statement.DEALLOCATE PREPARE stmt1; - Independent I/O subprocesses of external storage media are supported for backup and restore. During the backup and restore process of OceanBase Database, I/O APIs of underlying storage media (external media) are called, such as the read/write APIs of Network File System (NFS) and Object Storage Service (OSS). To prevent the risk of OBServer node crash due to unstable read and write operations on external media, the storage I/O API for backup and restore is decoupled. Independent subprocesses are used to narrow the impact scope of faults. You can enable this feature by using the tenant-level parameter
enable_ob_esi_process. - In MySQL mode, the ADDTIME() function is supported to add the specified time interval to the given date and time. For example,
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');. - In MySQL mode, the DAYNAME() function is supported to return the name of the workday of the given date. For example,
SELECT DAYNAME('2018-01-8') - Log output is optimized. Unnecessary lbt log entries are deleted from created partitions.
Compatibility changes
- The cluster-level parameter
enable_ob_esi_processis added. ESI is short for External Storage Interface. This parameter specifies whether independent subprocesses of external storage media are used for backup and restore. The default value is FALSE. For example,alter system set enable_ob_esi_process = true;. - The cluster-level parameter
ob_esi_session_timeoutis added. This parameter specifies the timeout period of the active resources for the independent I/O subprocesses of external storage media. The value range is[10s, 30m]. The default value is 1m. For example,alter system set ob_esi_session_timeout = 40s; - The cluster-level parameter
ob_esi_rpc_portis added. This parameter specifies the communication port between the independent I/O subprocess of the external storage medium and the OBServer. The value range is(1024, 65536). The default value is 2501. For example,alter system set ob_esi_rpc_port = 10088; - The upper limit of window functions is changed. A maximum of 32 window functions is allowed in OceanBase Database in both Oracle and MySQL modes. In Oracle mode, the number of allowed window functions is no longer limited and is consistent with that in Oracle. In MySQL mode, the number of named window functions cannot exceed 127.
Bug Fixes
- Fixed the issue where when the
UNION ALLoperator generated a local execution plan, Error 4225 was returned because no leader check was performed for the queried partitions. - Fixed the issue where on the ARM platform, an OBServer node could not start due to the compatibility issue of the libunwind library on Kylin OS and Unity Operating System (UOS).
- Fixed the issue where when batch jobs were run, minor compactions were frequently triggered due to high memory usage of the SqlExecutor module, which then caused the tenant performance to degrade drastically.
- Fixed the issue where in Oracle mode, if the character set of the tenant was set to GBK, Error 4285 was returned when the
UTL_I18N.STRING_TO_RAWfunction was executed because the character set specified for parameters is invalid. - Fixed the issue where during the two-phase commit of an XA transaction, the RPC traffic was heavy due to an excessive number of participants in the commit process, which slowed down the advancement of the transaction.
- Fixed the issue where major compactions in the system were suspended after Error 4013 was returned because the checksums of the data table and index table were inconsistent.
- Fixed the issue where the cluster restart timed out due to an excessive number of schema history records.
- Fixed the issue where when a type was created, the field
AUTHIDwas incorrectly displayed asAS THID. - Fixed the issue where backup files could not be restored because the consistency timestamp in the backup files was different from that in restore verification.
- Fixed the issue where if you set the parameter type to
object typewhen you create a procedure, the parameter is directly generated by the construction method when the procedure is executed, and a warning is generated, indicatinginternal error code, arguments: -5180, Incorrect argument type to variable. - Fixed the issue where if a backup task failed to be forcibly canceled, the backup status stayed in
Stopping. - Fixed the issue where in the primary-standby deployment mode, records in the virtual table
__all_server_event_historyexpanded fast due to the frequent execution of theALTER SYSTEM CHANGE TENANToperation on the primary database. - Fixed the issue where custom aggregate functions could not be called across schemas.
- Fixed the issue where Error ORA-00904 was returned when a cursor in PL was triggered by using the ROWID alias.
- Fixed the issue where in MySQL mode, when the SQL mode was set to
NO_ZERO_DATEorSTRICT_ALL_TABLES, the query results returned by using theSTR_TO_DATEfunction were different from those in MySQL. - Fixed the issue where Error 1074 was returned when the
CREATE TABLE AS SELECT JSON_ARRAYstatement was used to create a table. - Fixed the issue where in Oracle mode, the system returned an error indicating PL primary key conflicts when the
OCI_BATCH_ERRORShandle was executed by using OBCI. - Fixed the issue where in MySQL mode, a large number of CPU resources were consumed when ArcGIS expressions were executed in parallel. As a result, the client terminated the execution of the SQL statement. However, the background thread continued the execution.
- Fixed the issue where when the
__min_full_resource_pool_memoryparameter was set to an abnormal value, the OBServer node could still be started.
Considerations
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- The fourth digit in the version number V3.2.3 BP4 is increased to 1. The fourth digit in the version number is an internal version number and indicates the technical solution for the product upgrade.
- We recommend that the number of partitions created on a single OBServer does not exceed 100,000.
- The OBServer supports text editing by using prepared statements since OceanBase Database V3.2.3 BP5. ODP supports this feature since V3.2.7.1.
V3.2.3 BP4
Version information
- Release date: August 5, 2022
- Version: V3.2.3 BP4
- RPM version: oceanbase-3.2.3.1-20220805104621
Enhanced features
- Table-level hints can be set in parallel. For exmple,
select/*+ parallel(a 2) */ * from t1 a;. - The debugging stability is enhanced for stored procedures. Debugging on the ARM platform is supported.
- Adding partitions is supported in specific scenarios. You can add partitions at the beginning or in the middle of RANGE-partitioned tables. When you add a partition, make sure that no data is written to this partition. You can enable this feature by using the tenant-level parameter
_enable_add_between_range_partitions.
Compatibility changes
- The display of version numbers is changed. You can use the
select version()function to query the version number compatible with MySQL, such as 5.7.25-OceanBase-v3.2.3.1. You can customize the settings of compatible version numbers. You can use theselect ob_version()function to query the version number of OceanBase Database, such as V3.2.3.1. - In MySQL mode, the definition and acquisition of the system variable
have_query_cacheare supported. The value of this system variable is alwaysNO. - In MySQL mode, the
NO_ZERO_DATEandERROR_FOR_DIVISION_BY_ZEROmodes are added, and theNO_AUTO_CREATE_USER, andNO_ENGINE_SUBSTITUTIONmodes are supported. - In Oracle mode, the value of the
data_lengthfield in theALL_TAB_COLUMNSview is compatible with the field length in Oracle. - In Oracle mode, the length of a created variable array must be a positive integer.
- The cluster-level parameter
_enable_fuse_row_cacheis added. This parameter specifies whether to use the snapshot version to check whether the row cache is invalid. The default value isFALSE.
Supported components
The MySQL-compatible version numbers in MySQL mode are displayed since OceanBase Database V3.2.3 BP4. The following table lists the versions of the required components. |Component|Version| |---|----| |ODP| V3.2.3.2| |OCP |V3.3.2| |ODC |V3.3.3| |OMS |V3.3.1| |OBCI |V2.0.2| |ECOB |V1.1.6| |JDBC |V2.2.10.2| |OBClient |V2.1.1.3| |ob_loader_dumper |V3.0.1|
Bug fixes
- Fixed the issue where the observer process unexpectedly exited in Oracle mode while processing a query that used the
ORA_ROWSCNpseudocolumn. - Fixed the issue where if you do not specify to rebuild the global indexes when you drop or truncate a partition, the subsequent locality change may be suspended.
- Fixed the issue where after physical backups were restored, the latest data records could not be queried due to inconsistent log IDs.
- Fixed the issue where when you call a member procedure in a user-defined type, the system reports an error indicating that the number of parameters is incorrect.
- Fixed the issue where when you create a DBLink to query data in a table in Oracle mode, an error occurs if the Oracle character set is set to
WE8ISO8859P1. - Fixed the issue where when the locality of a tenant was inconsistent with that of the tables, the restore of the tenant failed.
- Fixed the issue where when the ROLLUP operator contained columns of the INTERVAL DAY type, the returned results were incorrect.
- Fixed the issue where an error occurred when the
CONVERTfunction was used to convert non-binary data. - Fixed the issue where an OBServer node stopped providing services due to a deadlock caused by the failure in applying for memory for log printing.
- Fixed the issue where the query results returned for analytic functions that use the ORDER BY NULL keywords were inconsistent with those of MySQL and Oracle databases.
- Fixed the issue where when a partition was truncated, the system returned the 4016 timeout error.
Considerations
- Since OceanBase Database V3.2.3 BP4, the MySQL version number format is supported, such as 5.7.25-OceanBase-v3.2.3.1. Use the latest components as required.
- The fourth digit in the version number V3.2.3 BP4 is increased to 1. The fourth digit in the version number is for internal use and indicates the technical solution for the product upgrade.
- We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
V3.2.3 BP3
Version information
- Release date: June 22, 2022
- Version: V3.2.3 BP3
- RPM version: oceanbase-3.2.3.0-20220622171245
Enhanced features
- The SM4 algorithm is supported for transparent data encryption (TDE).
- In Oracle mode, default values of column fields can be defined by using the Sequence function.
- Stored procedures support the definition and use of struct functions.
- The performance of the Limit operator is improved. The Limit operator can be pushed down to the Join operator.
- You can specify a character set for files by using the
SELECT INTOstatement.
Added parameters
- The cluster-level parameter
_load_tde_encrypt_engineis added. This parameter specifies whether to load the qualified encryption engine provided by BabaSSL for data encryption. The default valueNONEindicates that no encryption engine is loaded. When the parameter is set to"antssm_sm4", the encryption engine is loaded. To use the encryption engine, you must install the encryption software module in advance.
Bug fixes
- Fixed the issue where logs were generated excessively with the size overflow issue.
- Fixed the issue where the observer process unexpectedly exited due to an
array index out of boundserror in the fast parse phase. - Fixed the issue where when a prepared statement was enabled in Oracle mode, the return value of the
NUMTODSINTERVAL()function was truncated to a specific precision. - Fixed the issue where after deadlock detection was enabled, memory usage of LockWaitMgr in the sys tenant soared.
- Fixed the issue where a character set conversion error occurred in Oracle mode when a DBLink was created to query data in the Oracle database.
- Fixed the issue where when a lock conflict occurred during the execution of a stored procedure, the SQL statements that have been executed were not rolled back.
- Fixed the issue where duplicate data was returned for queries in the parallel execution framework, because the pushdown of the predict failed.
- Fixed the issue where a syntax error occurred when a hint was specified in the
UPDATEclause of theMERGE INFOstatement. - Fixed the issue where an error occurred when the
DBMS_JOBpackage was used to create a scheduled task in Oracle mode, and a value was assigned to theINTERVALparameter to extract the date. - Fixed the issue where a compilation error was returned when the
SELECT INFOstatement was used in a stored procedure in Oracle mode to define a cursor. - Fixed the issue where when the plan cache reached the upper limit, the execution of setAutoCommit failed after the client restarts.
- Fixed the issue where an error occurred when a trigger was executed in MySQL mode by using an
INSERTstatement to insert an object into a column of the SET data type. - Fixed the issue where the
queue_timefield was displayed as a negative value in thev$sql_auditview. - Fixed the issue where Error 4013 was frequently returned when
SELECTstatements were concurrently executed after I/O throttling was enabled. - Fixed the issue where an error occurred when an array element in a stored procedure directly called a member function.
- Fixed the issue where the renamed files were not persistently stored on the disk because clog files were migrated upon a server failure.
Considerations
- For V3.2.2 and later, if the value of the
ob_enable_batched_multi_statementparameter is set toTruein batch processing scenarios such as BenchmarkSQL TPC-C benchmark, the performance is degraded. We recommend that you use the default valueFalse. - We recommend that the number of partitions created on a single OBServer node does not exceed 100,000.
V3.2.3 BP2
Version information
- Release date: May 30, 2022
- Version: V3.2.3 BP2
- RPM version: oceanbase-3.2.3.0-20220530152606
Enhanced features
- The export of table data directly to an Alibaba Cloud Object Storage Service
(OSS)bucket by running theSELECT INTOcommand is supported. - The
DETERMINISTICattribute is supported for stored procedures and methods in MySQL mode.
Bug fixes
- Fixed the issue where the local index scheduling job did not end when it was complete, which led to log spamming.
- Fixed the issue where after a session was killed, the record of the session still existed in the
__all_virtual_processlisttable. - Fixed the issue where the execution of SQL statements returned Error 4013 because the OBServer node and the client used different character sets.
- Fixed the issue where when a minority of replicas failed, the obtained information about the replica table was incorrect because of the delayed update of the location cache.
- Fixed the issue where the query of the
information_schema.columnsview in MySQL mode by using a null condition returned incorrect column values. - Fixed the issue where it took quite some time to get the value of
data_sizein a scan of the__all_virtual_storage_stat tabletable.
V3.2.3 BP1
Version information
- Release date: April 29, 2022
- Version: V3.2.3 BP1
- RPM version: oceanbase-3.2.3.0-20220429172811
Enhanced features
- The keyword
DISTINCTROWis supported in MySQL mode.
Compatibility changes
- The value range of the
high_priority_net_thread_countparameter is changed to 0-64.
Bug fixes
- Fixed the adaptation issue between the DBLink and ODP by adding the cluster name.
- Fixed the issue where the leader was immediately switched after a
DELETEtransaction was committed. This issue led to transient data inconsistency in read-only queries that were executed on the new leader because the transaction information was not fully obtained in time.
V3.2.3
Version information
- Release date: April 18, 2022
- Version: V3.2.3
- RPM version: oceanbase-3.2.3.0-20220418212020
Overview
OceanBase Database V3.2.3 improves the compatibility and performance of the database kernel and enhances quality assurance to meet the production requirements of customers. Core enhancements include:
Enhanced compatibility with MySQL
Sequence objects, common table expressions (CTEs), CHECK constraints, character set settings in the CAST function, GET DIAGNOSTICS statements in stored procedures, and the SEND_LONG_DATA(24) protocol are supported.
Enhanced compatibility with Oracle
Database links to Oracle (DBLink) are supported. This version allows you to set initial values for sequence objects and introduces the DBMS_LOB.COMPARE system package function.
Optimized performance
Table API queries, NLJ operators for partitioned tables, and regular expressions are optimized.
Improved stability
Data integrity verification for backup files is enhanced, and selectivity computing logic is optimized.
New features
Enhanced compatibility
Compatibility with MySQL
Supports sequence objects.
Project delivery results show that business systems of customers are highly dependent on sequence objects. To simplify adaptation during business migration and improve the convenience of migration, in MySQL mode, OceanBase Database supports sequence objects and the
CREATE/ALTER/DROP SEQUENCEoperations. It allows you to perform the CURRVAL and NEXTVAL operations and reset the values of the objects. The value range of an object is INT64_MIN to INT64_MAX.Supports common table expressions (CTEs).
A CTE is a temporary result set that is not stored. It is usually referenced multiple times during a query. The
CONNECT BYstatement can be replaced with a CTE in some scenarios. The CTE syntax of OceanBase Database is compatible with MySQL 8.0. OceanBase Database supports recursive and non-recursive CTEs.Supports CHECK constraints.
CHECK constraints are intended to maintain user-defined integrity and are usually used to check acceptable data or data formats of specified columns in a table. In earlier versions of OceanBase Database, the CHECK clause is parsed but not executed and is only used for partition pruning and optimization. This is consistent with that of the CHECK clause in MySQL 5.7. In this version, the behavior and restrictions of CHECK constraints are modified to be compatible with MySQL 8.0. You can use the
CREATE/ALTER/DROP TABLEstatements to create, modify, and destroy CHECK constraints.Supports character set settings in the CAST function.
A character set parameter is added to the CAST function. This allows you to convert any type of value into a value of the specified type and character set, as shown in the sample statement:
SELECT CAST(1 AS CHAR CHARACTER SET UTF8MB4) FROM DUAL.Supports the
GET DIAGNOSTICSstatement.Stored procedures usually use the
GET DIAGNOSTICSstatement to process or debug programs. TheGET DIAGNOSTICSstatement allows applications to check diagnostic information generated by SQL statements. In addition to the handler context, it obtains current diagnostic information to check the execution of SQL statements.Supports the SEND_LONG_DATA(24) protocol.
OceanBase Database supports stream processing of data by using
PrepareStatment. When you set theuseServerPrepStmtsparameter of JDBC toTrueand use thesetAsciiStream/setBinaryStream/setCharacterStream/setBlob/setClobfunction to set column values, the data is sent to the destination (OBServer or ODP) in batches by using a SEND_LONG_DATA(24) protocol command. When the Execute_statement(23) command is received, the destination reads the cached data and continues with the next message interaction.Supports subqueries in stored procedures.
OceanBase Database enhances SQL capabilities of stored procedures and allows you to execute subquery statements in stored procedures.
Compatibility with Oracle
Supports database links to Oracle (DBLinks).
DBLink is a built-in query client that allows business applications to access a remote database in the same way DBLink accesses a local database during SQL query execution. OceanBase Database adopts the Oracle Call Interface (OCI) driver to connect to Oracle databases in read-only mode. OceanBase Database supports access to table objects, displays query plans, and optimizes most built-in operators such as
SCAN,SORT, andJOINof Oracle databases.OceanBase Database allows you to set initial values for sequence objects.
You can reset the initial values of sequence objects or set the initial values to specified values. For example,
ALTER SEQUENCE S1 RESTART WITH 3.Supports the DBMS_LOB.COMPARE system package function.
OceanBase Database supports BLOB and CLOB data types and supports comparison of complete or partial LOB data.
Performance optimization
Optimizes Table API queries.
Table API data interaction is optimized from the blocking query mode to the non-blocking query mode. This prevents a query request from exclusively occupying a worker thread and affecting the overall processing efficiency of the cluster. After executing a bulk scan and sending the results to the client, the worker thread of the query request starts to execute another query task, without waiting for interactive requests from the client. After optimization, the batch query throughput of the Table API is increased by approximately 300%.
Optimizes NLJ operators for partitioned tables.
This optimization improves the reuse of the associated
Rescan,Table Scan, andMergeoperators, the caching of macroblock metadata, and the selection of code-level execution paths. The NLJ performance is increased by 60% and the batch query performance by 40% in running the Sysbench benchmark.Optimizes regular expressions.
When executing regular expressions, OceanBase Database calls regular expressions from third-party libraries for parsing and matching. If the business data volume is large, additional locked resource conflicts caused by the initialization of regular expressions increase the latency. To resolve this issue, OceanBase Database optimizes the context reuse logic for regular expressions to reduce the frequency of calling regular expressions from third-party libraries. This improves the processing performance of a single-query regular expression that involves millions of rows of data by approximately 500%.
Enhanced stability
Enhances data integrity verification for backup files.
Data backup is an important capability for improving database reliability and protecting data security. However, the correctness of data cannot be ensured due to uncontrollable factors such as damage and aging of storage devices. Therefore, OceanBase Database enhances the verification of backup data. This allows you to initiate data verification tasks by cluster, tenant, or shard. You can recompute macroblock verification values and intra-block data organization relationships and compare them to identify damaged data blocks at the earliest opportunity. This helps reduce the impact of data damage. In addition, OceanBase Database optimizes the concurrency and scheduling logic to improve verification performance.
Optimizes the selectivity computing logic.
OceanBase Database optimizes the selectivity computing logic to reduce redundant memory usage in the log plan and the frequency of querying statistics. In addition, OceanBase Database optimizes the logic of producing and maintaining NULL numbers and MIN/MAX values to improve the selectivity computing accuracy. OceanBase Database also optimizes the histogram processing logic to reduce the selectivity computing error in scenarios where base table predicates are not used.
Compatibility changes
Parameters
| Parameter | Default value | Change type | New default value | Description |
|---|---|---|---|---|
| trace_log_slow_query_watermark | 100 ms | Modified | 1s | Specifies the execution time threshold for queries. A query whose execution time exceeds this threshold is recorded as a slow query in trace logs. The default value is changed to 1s to prevent massive logs from affecting the performance when the system is overloaded. |
| enable_merge_by_turn | True | Modified | False | Specifies whether to enable the multi-zone rotating compaction strategy. This strategy is disabled for business applications in most scenarios to speed up compactions. |
| clog_sync_time_warn_threshold | 100 ms | Modified | 1s | Specifies the time threshold of transaction log synchronization between the leader and follower. If the synchronization time exceeds the threshold, alerts are sent. The default value is modified based on the performance of business applications in most scenarios. |
| clog_sync_time_warn_threshold | 5 | Modified | 100 | Specifies the number of minor freezes between two major freezes. The default value is increased to avoid business jitters caused by frequent major compactions. |
Behavioral changes
In MySQL mode, the behavior of CHECK constraints is changed to be compatible with MySQL 8.0. The earlier versions are compatible with MySQL 5.7.
Compatible with MySQL 5.7: CHECK constraints with duplicate names are not allowed in the same table but are allowed in different tables of the same database.
Compatible with MySQL 8.0: CHECK constraints with duplicate names are not allowed in the same table or in different tables of the same database.
An earlier version may contain CHECK constraints with duplicate names. After you upgrade OceanBase Database to this version, you must modify the duplicate names.
In Oracle mode, OceanBase Database returns an error if you update a field in the UPDATE statement multiple times, which is the same in Oracle.
Upgrade notes
Upgrade from V3.2.1 or V3.2.2 to V3.2.3 is supported.
Upgrade from V3.1.2 to V3.2.3 is supported. You must download the software packages V3.2.0, V3.2.1, and V3.2.2 and upload them to OceanBase Cloud Platform (OCP).
Upgrade from V2.2.77 is supported. You must upgrade OceanBase Database to V3.1.2 first and then to V3.2.3.
Supported components
The following table describes the recommended versions of components used with OceanBase Database V3.2.3.
| Component | Version |
|---|---|
| ODP | V3.2.3 |
| OCP | V3.2.3 |
| ODC | V3.2.3 |
| OMS | V3.3.0 |
| OBCI | V2.0.2 |
| ECOB | V1.1.6 |
| JDBC | V2.2.9 |
| OBClient | V2.1.1.2 |
| OBLOADER/OBDUMPER | V2.3.0 |
Bug fixes
Fixed the issue where clog files could not be opened when system file handles were insufficient.
Fixed the issue where an error occurred if you use the
CREATE TABLE ASstatement to create a partitioned table in MySQL mode.Fixed the issue where restored tenant statistics could not be updated for a long time. This caused inaccuracy of the SQL plan.
Fixed the issue where the length of a table name in MySQL mode was inconsistent with the maximum length in a MySQL database.