10.0 Release Notes

Contents

Release Notes Information

This document includes information on CUBRID 10.0(Build No., 10.0.0.1376). CUBRID 10.0 includes all of the fixed errors and improved features that were detected in the CUBRID 9.3 and were applied to the previous versions.

For details on CUBRID 9.3 or earlier, see http://www.cubrid.org/manual/93/en/release_note/index.html.

For details on CUBRID 2008 R4.3 or less, see http://release.cubrid.org/en.

Overview

CUBRID 10.0 is the major upgrade version of CUBRID 9.3.

CUBRID 10.0

  • provides snapshot isolations based on MVCC protocol
  • significantly improves performance and scalability
  • supports TIMEZONE data types and functions
  • supports BINARY charset for string types
  • includes many SQL extensions and functions/operators
  • fixes a large number of critical bugs

The database volume of CUBRID 10.0 is not compatible with that of CUBRID 9.x and earlier versions. Therefore, if you use CUBRID 9.3 or earlier, you must migrate your databases. Regarding this, see Upgrade.

Driver Compatibility

  • The JDBC and CCI driver of CUBRID 10.0 are compatible with the DB server of CUBRID 9.1, 9.2, 2008 R4.1, R4.3 or R4.4.
  • To upgrade drivers are highly recommended.

We strongly recommend to also upgrade your drivers to use CUBRID 10.0. Some new features, especially for TIMEZONE data types are only supported with 10.0 drivers.

For more details on changes, see the following. Users of previous versions should check the Behavior Changes and New Cautions sections.

New Features

  • added charset and collation to system catalogs. (added _db_charset and db_charset. db_collation, db_class and db_attribute are modified) (CUBRIDSUS-10948)
  • added checksumdb utility to check a replication inconsistency (CUBRIDSUS-6214)
  • added CRC32 function (CUBRIDSUS-15470)
  • added JDBC constructor(CUBRIDTimestamptz) and setter(setTimestamptz) (CUBRIDSUS-15407)
  • added KILL statement (CUBRIDSUS-13845)
  • added PERCENTILE_DISC and PERCENTILE_CONT function which can be used as an aggregate or analytic function (CUBRIDSUS-11089)(CUBRIDSUS-11088)
  • added restoreslave utility (CUBRIDSUS-10843)
  • added several options to checkdb utility (CUBRIDSUS-11292)
  • added SHOW CRITICAL SECTION statement (CUBRIDSUS-14037)
  • added SHOW JOB QUEUE statement (CUBRIDSUS-14036)
  • added SHOW THREADS statement (CUBRIDSUS-14038)
  • added SHOW TIMEZONES statement (CUBRIDSUS-14186)
  • added SHOW TRANSACTION TABLES statement (CUBRIDSUS-14039)
  • added SLEEP function (CUBRIDSUS-14217)
  • added SYS_GUID function (CUBRIDSUS-6555)
  • added vacuumdb utility and check for not vacuumed records completely lost to checkdb utility (CUBRIDSUS-14751)
  • adopt MVCC(Multi-Version Concurreny Control) protocol and provides snapshot isolation(CUBRIDSUS-14097)
  • DEFAULT keyword for SET SYSTEM PARAMETERS statement resets to the default value of system parameter (CUBRIDSUS-15529)
  • improved ha_make_slavedb script to use it with ease (CUBRIDSUS-10842)
  • introduced BINARY charset for string (CHAR, VARCHAR, ENUM) types (CUBRIDSUS-16066)
  • supports COMMENT for schema objects such as table, column, view, index, JSP, trigger, serial and user. system catalogs were modified to show its comment (CUBRIDSUS-12367)
  • supports NATURAL JOIN (CUBRIDSUS-12401)
  • supports systemtap for dynamic tracing and performance analysis (CUBRIDSUS-11626)
  • supports TIMEZONE data types and functions (CUBRIDSUS-5765)
  • supports CREATE OR REPLACE PROCEDURE/FUNCTION (CUBRIDSUS-6542)
  • supports CASCADE CONSTRAINTS for DROP TABLE statement (CUBRIDSUS-9830)
  • supports CREATE TABLE IF NOT EXISTS statement (CUBRIDSUS-12366)

Behavior Changes

  • a subquery is not allowed in ORDER BY FOR clause (CUBRIDSUS-13210)
  • changed 64bit as the default build target (CUBRIDSUS-16770)
  • changed 64bit as the default build target of make_locale.sh (CUBRIDSUS-17755)
  • changed 64bit as the default build target of make_tz.sh (CUBRIDSUS-15812)
  • changed ALTER INDEX and DROP INDEX statement require table name to which the index belongs (CUBRIDSUS-11308)
  • changed a partitioning key must be part of the primary key's and the all the unique indexes' definition (CUBRIDSUS-13412)
  • changed behavior of preparedStatement.setBoolean method (CUBRIDSUS-14857)
  • changed clients not to read cubrid.conf file in the current working directory (CUBRIDSUS-10929)
  • changed not to allow altering an ordinary column to a shared and vice versa (CUBRIDSUS-11135)
  • changed REPLACE and GROUP_CONCAT functions to regard an empty parameter as an empty string rather than NULL even if oracle_style_empty_string system parameter is on (CUBRIDSUS-9864)
  • changed server will not be started when java_stored_procedure = on and $CUBRID/java/jspserver.jar is missing (CUBRIDSUS-9846)
  • changed to sort the result sets of SHOW INDEX by (key_name, seq_in_index) (CUBRIDSUS-12021)
  • changed type of DEFAULT column for CCI_SCH_ATTRIBUTE of cci_schema_info function as string (CUBRIDSUS-13898)
  • CURDATE(), CURRENT_DATE, CURRENT_DATE(), CURRENT_DATETIME, CURRENT_DATETIME(), NOW(), CURTIME(), CURRENT_TIME, CURRENT_TIME(), CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP() now refer to session time and date (CUBRIDSUS-17377)(CUBRIDSUS-17343)(CUBRIDSUS-17337)(CUBRIDSUS-16222)
  • database volume of 10.0 is not compatible with that of 9.x and earlier versions (CUBRIDSUS-11317)
  • fixed cci_get_data function to set the returned value as NULL when the value is NULL and type is CCI_A_TYPE_STR, CCI_A_TYPE_SET, CCI_A_TYPE_BLOB or CCI_A_TYPE_CLOB (CUBRIDSUS-8104)
  • fixed CCI_GET_RESULT_INFO_IS_NON_NULL to return 0 when an argument is not a column (CUBRIDSUS-8106)
  • fixed Connection.connect and cci_connect_with_url distinguish the user name and its password is omitted from an empty string(u2018u2019) (CUBRIDSUS-11383)
  • fixed ha_copy_log_timeout system parameter only works win SYNC log copy mode (CUBRIDSUS-16990)
  • fixed not to allow a serial for an auto increment to be cached (CUBRIDSUS-16264)
  • fixed not to allow dropping an user account when there is an active user (CUBRIDSUS-16937)
  • fixed ResultSet.findColumn to return the value of the first matching column when several columns have the same name (CUBRIDSUS-7374)
  • fixed to force strict increasing order of each partition for a range partition (CUBRIDSUS-15360)
  • fixed to ignore cubrid_broker.conf in the current working directory where broker starts (CUBRIDSUS-14207)
  • fixed to return an error when an out-of-range value is given as default value for float, double, monetary type column (CUBRIDSUS-7720)
  • fixed UPDATE STATISTICS statement to be propagated to slave and replica nodes (CUBRIDSUS-12550)
  • changed the default isolation as "READ COMMITTED"
  • removed 3 isolation levels such as "REPEATABLE READ SCHEMA, READ UNCOMMITTED INSTANCES", "READ COMMITTED SCHEMA, READ UNCOMMITTED INSTANCES" and "READ COMMITTED SCHEMA, READ UNCOMMITTED INSTANCES" (CUBRIDSUS-14377)
  • restrict the limit for the length of partition expression as 1K (CUBRIDSUS-17772)
  • restrict the max value of max_clients parameter as 2000 (CUBRIDSUS-14894)
  • UPDATE STATISTICS now works with sampling based. WITH FULLSCAN clause computes statistics with the entire records. (CUBRIDSUS-11962)
  • supports for using attribute references in UPDATE statement. The behavior can be changed with update_use_attribute_references parameter (CUBRIDSUS-8202)

Improvements and Bug fixes

  • fixed to reduce failover time (CUBRIDSUS-16045)
  • performance enhancement of replication (CUBRIDSUS-6162)
  • added additional warnings regarding connection status into cas sql log for troubleshooting (CUBRIDSUS-12212)
  • a query has a statement set operator whose subquery includes false where clause incorrectly returned a semantic error (CUBRIDSUS-12326)
  • binary values from database are displayed in JDBC as hex (CUBRIDSUS-18057)
  • cci_schema_info function call follows a CREATE TABLE statement may fail to browse the schema information (CUBRIDSUS-13617)
  • changed policy selecting a deadlock victim to choose a transaction did less amount of work (CUBRIDSUS-14790)
  • changed the separator of LOB paths for Windows as u2018\u2019 (CUBRIDSUS-11391)
  • changed to restrict the range of a port to unsigned short (CUBRIDSUS-8539)
  • cubrid heartbeat utility now allows to execute copylogdb, applylogdb and status command to a remote host (CUBRIDSUS-14318)
  • DEFAULT value of u2018u2019 was shown as NULL from db_attribute.default_value (CUBRIDSUS-12406)
  • extend statistics and statdump to track time (CUBRIDSUS-17445)
  • fixed a build issue of dbi.h for gcc under cygwin (CUBRIDSUS-12329)
  • fixed a build issue of Windows regarding a reference to cci_get_cas_info function (CUBRIDSUS-14000)
  • fixed ACCESS_LOG_MAX_SIZE parameter of cubrid_broker.conf to work on Windows (CUBRIDSUS-14232)
  • fixed a client crash of INSERT ODKU statement (CUBRIDSUS-16648)
  • fixed a client crash regarding an unexpected error like interrupt during query parsing (CUBRIDSUS-14509)
  • fixed a client crash when an invalid index is given as input to CREATE/ALTER INDEX (CUBRIDSUS-13899)
  • fixed a client crash when SHOW CREATE VIEW refers a view which includes a base table dropped (CUBRIDSUS-11618)
  • fixed a client crash while executing a query including a method or a JSP (CUBRIDSUS-15037)
  • fixed a client crash while restarting a connection (CUBRIDSUS-15165)
  • fixed a crash of Windows version (CUBRIDSUS-15133)
  • fixed a crash recovery failure when a crash happens during a volume is added (CUBRIDSUS-18118)
  • fixed adddate and subdate function to consider leap years (CUBRIDSUS-18104)
  • fixed a false detection of unique constraint violation for a partition table (CUBRIDSUS-14134)
  • fixed a loose index scan issue (CUBRIDSUS-13812)
  • fixed ALTER INDEX REBUILD statement to ignore the given properties and re-create the index as it is (CUBRIDSUS-12624)
  • fixed ALTER TABLE ADD SUPERCLASS statement with INHERIT clause failed to be replicated (CUBRIDSUS-11409)
  • fixed ALTER TABLE to understand PRIMARY KEY and NOT NULL constraint are given together (CUBRIDSUS-13234)
  • fixed a memory leak on CCI driver and an issue on cci_datasource_borrow function (CUBRIDSUS-17300)
  • fixed an error case that system thread to copy log read a log record that was not written yet while the master node terminates (CUBRIDSUS-15755)
  • fixed an error message of STR_TO_DATE function when a parameter of the function is omitted (CUBRIDSUS-9798)
  • fixed an incorrect view transformation when a view includes a statement set operator and LIMIT clause (CUBRIDSUS-10265)
  • fixed an issue applylogdb skipped to replicate logs when either db_ha_apply_info.committed_rep_pageid or committed_rep_offset is null (CUBRIDSUS-16288)
  • fixed an issue of a statement set query with overflow records (CUBRIDSUS-17841)
  • fixed an issue of cub_master for Windows cannot successfully start (CUBRIDSUS-14421)
  • fixed an issue of MERGE statement which includes DELETE clause (CUBRIDSUS-16658)
  • fixed an issue of non-atomic deallocation of volume pages. The volume header and the page bitmaps might not match. (CUBRIDSUS-18027)
  • fixed an issue regarding a series of partial rollback to the multiple nested savepoints (CUBRIDSUS-7908)
  • fixed an issue to insert or update an updatable view which includes LIMIT clause (CUBRIDSUS-10853)
  • fixed an issue to return incorrect result for an outer join or hierarchical query includes a JSP (CUBRIDSUS-14073)
  • fixed an unbounded wait which lead to time out to get a connection via cci_datasource_borrow() function (CUBRIDSUS-14064)
  • fixed an union compatibility issue regarding set data types (CUBRIDSUS-11790)
  • fixed a parsing error of an invalid query which includes an aggregation or analytic function in WHERE clause (CUBRIDSUS-14905)
  • fixed a parsing error of u201cSELECT * FROM (t1 JOIN t2)u201d style query (CUBRIDSUS-6045)
  • fixed a parsing error when a string typed argument is given as TO_CHAR function which is a partition key expression (CUBRIDSUS-15112)
  • fixed applylogdb to also show server error message when it fails schema replication (CUBRIDSUS-11426)
  • fixed a query has a statement set operator whose subquery includes false where clause was incorrectly folded. ORDER BY and LIMIT clause of a subquery for a statement set query were ignored for some cases (CUBRIDSUS-12326)
  • fixed a query parsing error where a query includes a JAVA stored procedure or a method and GROUP BY clause (CUBRIDSUS-12856)
  • fixed a race condition of server regarding an invalid session state (CUBRIDSUS-15223)
  • fixed a race condition of server when multiple clients are simultaneously executing DDLs (CUBRIDSUS-15026)
  • fixed a reserved word to be used as an alias without quoting (CUBRIDSUS-8909)
  • fixed a server crash when an interrupt happens (CUBRIDSUS-13886)
  • fixed a stand-alone mode of client crash when a method or a JSP is nested in a query (CUBRIDSUS-15590)
  • fixed a transactional inconsistency when a long committing transaction is followed by a short transaction and a crash happens before the former commits (CUBRIDSUS-17881)
  • fixed cci_get_class_num_objs function to also work for a view (CUBRIDSUS-7734)
  • fixed checkdb to consider a record that does not satisfy a filter index predicate (CUBRIDSUS-13686)
  • fixed CHR function with binary charset (CUBRIDSUS-17783)
  • fixed collation in domain of an host variable which was set to default one, disregarding the collation of actual value or collation inferred (CUBRIDSUS-14787)
  • fixed collation setting in ENUM type (CUBRIDSUS-16702)
  • fixed deadlock between DDLs by acquiring SCH_M_LOCK from beginning when executes ALTER, DROP table (CUBRIDSUS-13540)
  • fixed incorrect error message when a copylogdb starts twice (CUBRIDSUS-12043)
  • fixed incorrect handling of a drive name of lob-base-path for Windows createdb (CUBRIDSUS-10590)
  • fixed incorrect management of transaction status when a CAS is changed to another right after connected to an application and has a request that does not transit its status (CUBRIDSUS-13265)
  • fixed incorrect range merging optimizations (CUBRIDSUS-17449)
  • fixed INSERT ODKU into a partition table to detect duplicated values to be inserted/updated (CUBRIDSUS-16067)
  • fixed installdb utility to add default lob path to the directory file(databases.txt) (CUBRIDSUS-14816)
  • fixed issues some DDLs were not replicated to slave (CUBRIDSUS-16827)(CUBRIDSUS-11430)
  • fixed JDBC and CCI drivers to create log directories when a logging parameter is set (CUBRIDSUS-11320)
  • fixed kill session statement of CSQL interpreter to show the number of transactions terminated (CUBRIDSUS-14288)
  • fixed loaddb to accept an exported schema definition which is longer than 8K (CUBRIDSUS-7890)
  • fixed loaddb to show an additional error message when an error occurred during object loading (CUBRIDSUS-7905)
  • fixed MEDIAN function returned an incorrect result when the argument includes CAST operator (CUBRIDSUS-13916)
  • fixed memory leak of SA mode (CUBRIDSUS-14141)
  • fixed MERGE statement which includes DELETE clause in UPDATE clause suffered a run-time error (CUBRIDSUS-15691)
  • fixed not to add a new volume if there is a volume has enough pages (CUBRIDSUS-16219)
  • fixed not to allow SET DEFAULT NULL to a column which has NOT NULL constraint (CUBRIDSUS-8035)
  • fixed not to block a SELECT operation during the entire period of creating an index (CUBRIDSUS-9576)
  • fixed not to print -970 error which is a notification of HA mode change when ha_mode is off (CUBRIDSUS-12336)
  • fixed not to raise an additional fatal error when creating a database fails (CUBRIDSUS-14647)
  • fixed not to refer an obsoleted cache entry to a view or trigger in clients to execute a prepared query (CUBRIDSUS-14856)
  • fixed NullpointerException of XAConnection (contributed by Marcus Haarmann) (CUBRIDSUS-14678)
  • fixed partition whose key is an expression to correctly infer its data type (CUBRIDSUS-15106)
  • fixed race conditions of server when simultaneous update statistics requests are executing (CUBRIDSUS-13718) (CUBRIDSUS-16773) (CUBRIDSUS-17000)
  • fixed rpm package regarding the default user account (CUBRIDSUS-13842)
  • fixed several anomalies regarding referential integrity (CUBRIDSUS-12781) (CUBRIDSUS-12782) (CUBRIDSUS-12783) (CUBRIDSUS-12784)
  • fixed several deadlock chances (CUBRIDSUS-10332)(CUBRIDSUS-5084)(CUBRIDSUS-5011)(CUBRIDSUS-5008)(CUBRIDSUS-5004)(CUBRIDSUS-9469)
  • fixed several race conditions and crashes due to concurrent UPDATE STATISTICS operations (CUBRIDSUS-16773)
  • fixed several recovery issues on a volume header and system page regarding page allocation and deallocation (CUBRIDSUS-17835)
  • fixed temp_volume_path system parameter works (CUBRIDSUS-9484)
  • fixed the owner of a partitioned table also owns partitions even if DBA changes a table as a partitioned (CUBRIDSUS-11407)
  • fixed to abort installation of 64bit build on 32bit Windows (CUBRIDSUS-13822)
  • fixed to add extra checking of connection properties (CUBRIDSUS-7581)
  • fixed to allow a quoted reserved word in GROUP BY clause (CUBRIDSUS-13468)
  • fixed to allow conversion of string in scientific notation to BIGINT type (CUBRIDSUS-14254)
  • fixed to allow dropping an unique index without mentioning UNIQUE (CUBRIDSUS-9352)
  • fixed TO_CHAR and TO_NUMBER function to understand the EUCKR padding (CUBRIDSUS-17953)
  • fixed to close scans when an hierarchical query suffers an error during execution (CUBRIDSUS-17951)
  • fixed to consider codeset for monetary symbols (CUBRIDSUS-17942)
  • fixed to consume permanent temp volumes and then add a temporary temp volume (CUBRIDSUS-17989)
  • fixed to correctly handle the maximum value of timestamp on Windows 32bit build (CUBRIDSUS-9398)
  • fixed to create, alter and drop an index of a table to update the statistics of the entire indexes of the table (CUBRIDSUS-12053)
  • fixed to detect an incorrect combination of multiple levels of backup volumes are given to restoredb (CUBRIDSUS-13646)
  • fixed to fire UPDATE triggers instead of DELETE triggers when UPDATE statement moves a record from a partition to another (CUBRIDSUS-12472)
  • fixed to omit ON clause for explicit inner join (CUBRIDSUS-8714)
  • fixed to raise a proper error for an invalid query refers INST_NUM or ORDERBY_NUM (CUBRIDSUS-12843)
  • fixed to re-cache view definition when a base table or a nested view of the view suffers a change (CUBRIDSUS-17971)
  • fixed to recover replication failure by unexpected deletion of db_ha_apply_info catalog table (CUBRIDSUS-12065)
  • fixed to reduce the memory usage of restoredb with multiple levels of backups (CUBRIDSUS-11868)
  • fixed to return an error when an invalid argument of CONV function is given (CUBRIDSUS-9434)
  • fixed to return an error when return_null_on_errors=no and plus or minus operator is used with zero date (CUBRIDSUS-9449)
  • fixed to show index name when violates an unique constraint (CUBRIDSUS-14946)
  • fixed to show the detailed error message when service parameter of cubrid.conf is invalid (CUBRIDSUS-9256)
  • fixed to show the name of the index where an unique constraint is violated while loading it (CUBRIDSUS-11739)
  • fixed to trim a trailing blank of session commands for CSQL interpreter (CUBRIDSUS-13266)
  • fixed to update max_val of auto increment column when the type of column changes (CUBRIDSUS-13154)
  • fixed UTC_TIME function considers daylight saving time (CUBRIDSUS-9328)
  • introduced -t and -N option of csql (CUBRIDSUS-14406)
  • LIMIT, ORDER BY clause were ignored during view transformation when a view includes UNION ALL as well as them (CUBRIDSUS-8059)
  • multiple DDL statements that are not separated by a semicolon were not replicated to slave (CUBRIDSUS-16954)
  • on-line backup occasionally failed due to a concurrent DDL (CUBRIDSUS-7335)
  • revised SHOW INDEX HEADER statement (CUBRIDSUS-13637)
  • revised the error message when the given address or the name of server for cci_connect functions is invalid (CUBRIDSUS-11253)
  • SHOW CREATE TABLE now shows the reference column name of a foreign key (CUBRIDSUS-12184)
  • SHOW LOG HEADER statement shows MVCC-related information (CUBRIDSUS-14709)
  • SHOW SLOTTED PAGER HEADER statement shows MVCC-related information (CUBRIDSUS-14780)
  • unloaddb missed to export a reverse index of a table which also has an unique index (CUBRIDSUS-12476)
  • UPDATE, DELETE and MERGE statements will no longer claim aggregate functions from subqueries. SELECT statements will no longer claim aggregate functions from subqueries found in the WHERE clause. (CUBRIDSUS-11685)
  • UPDATE is now allowed on updatable views that contain joins, given that the user updates only one of the tables joined in the view (CUBRIDSUS-8110)
  • UTC_DATE function now considers daylight saving time (CUBRIDSUS-14774)

Cautions

Existing Cautions

Locale(language and charset) is specified when creating DB

It is changed as locale is specified when creating DB.

CUBRID_CHAERSET environment variable is removed

As locale(language and charset) is specified when creating DB from 9.2 version, CUBRID_CHARSET is not used anymore.

[JDBC] Change zero date of TIMESTAMP into '1970-01-01 00:00:00'(GST) from '0001-01-01 00:00:00' when the value of zeroDateTimeBehavior in the connection URL is "round"(CUBRIDSUS-11612)

From 2008 R4.4, when the value of the property "zeroDateTimeBehavior" in the connection URL is "round", the zero date value of TIMESTAMP is changed into '1970-01-01 00:00:00'(GST) from '0001-01-01 00:00:00'. You should be cautious when using zero date in your application.

Recommendation for installing CUBRID SH package in AIX(CUBRIDSUS-12251)

If you install CUBRID SH package by using ksh in AIX OS, it fails with the following error.

0403-065 An incomplete or invalid multibyte character encountered.

Therefore, it is recommended to use ksh93 or bash instead of ksh.

$ ksh93 ./CUBRID-9.2.0.0146-AIX-ppc64.sh
$ bash ./CUBRID-9.2.0.0146-AIX-ppc64.sh

CUBRID_LANG is removed, CUBRID_MSG_LANG is added

From version 9.1, CUBRID_LANG environment variable is no longer used. To output the utility message and the error message, the CUBRID_MSG_LANG environment variable is used.

Modify how to process an error for the array of the result of executing several queries at once in the CCI application(CUBRIDSUS-9364)

When executing several queries at once in the CCI application, if an error has occurs from at least one query among the results of executing queries by using the cci_execute_array function, the cci_execute_batch function, the error code of the corresponding query was returned from 2008 R3.0 to 2008 R4.1. This problem has been fixed to return the number of the entire queries and check the error of each query by using the CCI_QUERY_RESULT_* macros from 2008 R4.3 and 9.1.

In earlier versions of this modification, there is no way to know whether each query in the array is success or failure when an error occurs; therefore, it it requires certain conditions.

...
char *query = "INSERT INTO test_data (id, ndata, cdata, sdata, ldata) VALUES (?, ?, 'A', 'ABCD', 1234)";
...
req = cci_prepare (con, query, 0, &cci_error);
...
error = cci_bind_param_array_size (req, 3);
...
error = cci_bind_param_array (req, 1, CCI_A_TYPE_INT, co_ex, null_ind, CCI_U_TYPE_INT);
...
n_executed = cci_execute_array (req, &result, &cci_error);

if (n_executed < 0)
  {
    printf ("execute error: %d, %s\n", cci_error.err_code, cci_error.err_msg);

    for (i = 1; i <= 3; i++)
      {
        printf ("query %d\n", i);
        printf ("result count = %d\n", CCI_QUERY_RESULT_RESULT (result, i));
        printf ("error message = %s\n", CCI_QUERY_RESULT_ERR_MSG (result, i));
        printf ("statement type = %d\n", CCI_QUERY_RESULT_STMT_TYPE (result, i));
      }
  }
...

From the modified version, entire queries are regarded as failure if an error occurs. In case that no error occurred, it is determined whether each query in the array succeeds or not.

...
char *query = "INSERT INTO test_data (id, ndata, cdata, sdata, ldata) VALUES (?, ?, 'A', 'ABCD', 1234)";
...
req = cci_prepare (con, query, 0, &cci_error);
...
error = cci_bind_param_array_size (req, 3);
...
error = cci_bind_param_array (req, 1, CCI_A_TYPE_INT, co_ex, null_ind, CCI_U_TYPE_INT);
...
n_executed = cci_execute_array (req, &result, &cci_error);
if (n_executed < 0)
  {
    printf ("execute error: %d, %s\n", cci_error.err_code, cci_error.err_msg);
  }
else
  {
    for (i = 1; i <= 3; i++)
      {
        printf ("query %d\n", i);
        printf ("result count = %d\n", CCI_QUERY_RESULT_RESULT (result, i));
        printf ("error message = %s\n", CCI_QUERY_RESULT_ERR_MSG (result, i));
        printf ("statement type = %d\n", CCI_QUERY_RESULT_STMT_TYPE (result, i));
      }
  }
...

In java.sql.XAConnection interface, HOLD_CURSORS_OVER_COMMIT is not supported(CUBRIDSUS-10800)

Current CUBRID does not support ResultSet.HOLD_CURSORS_OVER_COMMIT in java.sql.XAConnection interface.

From 9.0, STRCMP behaves case-sensitively

Until the previous version of 9.0, STRCMP did not distinguish an uppercase and a lowercase. From 9.0, it compares the strings case-sensitively. To make STRCMP case-insensitive, you should use case-insensitive collation(e.g.: utf8_en_ci).

-- In previous version of 9.0 STRCMP works case-insensitively
SELECT STRCMP ('ABC','abc');
0

-- From 9.0 version, STRCMP distinguish the uppercase and the lowercase when the collation is case-sensitive.
export CUBRID_CHARSET=en_US.iso88591

SELECT STRCMP ('ABC','abc');
-1

-- If the collation is case-insensitive, it distinguish the uppercase and the lowercase.
export CUBRID_CHARSET=en_US.iso88591

SELECT STRCMP ('ABC' COLLATE utf8_en_ci ,'abc' COLLATE utf8_en_ci);
0

Since the 2008 R4.1 version, the Default value of CCI_DEFAULT_AUTOCOMMIT has been ON(CUBRIDSUS-5879)

The default value for the CCI_DEFAULT_AUTOCOMMIT broker parameter, which affects the auto commit mode for applications developed with CCI interface, has been changed to ON since CUBRID 2008 R4.1. As a result of this change, CCI and CCI-based interface (PHP, ODBC, OLE DB etc.) users should check whether or not the application's auto commit mode is suitable for this.

From the 2008 R4.0 version, the options and parameters that use the unit of pages were changed to use the unit of volume size(CUBRIDSUS-5136)

The options (-p, -l, -s), which use page units to specify the database volume size and log volume size of the cubrid createdb utility, will be removed. Instead, the new options, added after 2008 R4.0 Beta (--db-volume-size, --log-volume-size, --db-page-size, --log-page-size), are used.

To specify the database volume size of the cubrid addvoldb utility, use the newly-added option (--db-volume-size) after 2008 R4.0 Beta instead of using the page unit. It is recommended to use the new system parameters in bytes because the page-unit system parameters will be removed. For details on the related system parameters, see the below.

Be cautious when setting db volume size if you are a user of a version before 2008 R4.0 Beta(CUBRIDSUS-4222)

From the 2008 R4.0 Beta version, the default value of data page size and log page size in creating the database was changed from 4 KB to 16 KB. If you specify the database volume to the page count, the byte size of the volume may differ from your expectations. If you did not set any options, 100MB-database volume with 4KB-page size was created in the previous version. However, starting from the 2008 R4.0, 512MB-database volume with 16KB-page size is created.

In addition, the minimum size of the available database volume is limited to 20 MB. Therefore, a database volume less than this size cannot be created.

The change of the default value of some system parameters of the versions before 2008 R4.0(CUBRIDSUS-4095)

Starting from 2008 R4.0, the default values of some system parameters have been changed.

Now, the default value of max_clients, which specifies the number of concurrent connections allowed by a DB server, and the default value of index_unfill_factor that specifies the ratio of reserved space for future updates while creating an index page, have been changed. Furthermore, the default values of the system parameters in bytes now use more memory when they exceed the default values of the previous system parameters per page.

Previous System Parameter Added System Parameter Previous Default Value Changed Default Value (unit: byte)
max_clients None 50 100
index_unfill_factor None 0.2 0.05
data_buffer_pages data_buffer_size 100M(page size=4K) 512M
log_buffer_pages log_buffer_size 200K(page size=4K) 4M
sort_buffer_pages sort_buffer_size 64K(page size=4K) 2M
index_scan_oid_buffer_pages index_scan_oid_buffer_size 16K(page size=4K) 64K

In addition, when a database is created using cubrid createdb, the minimum value of the data page size and the log page size has been changed from 1K to 4K.

Changed so that database services, utilities, and applications cannot be executed when the system parameter is incorrectly configured(CUBRIDSUS-5375)

It has been changed so that now the related database services, utilities, and applications are not executed when configuring system parameters that are not defined in cubrid.conf or cubrid_ha.conf, when the value of system parameters exceed the threshold, or when the system parameters per page and the system parameters in bytes are used simultaneously.

Database fails to start if the data_buffer_size is configured with a value that exceeds 2G in CUBRID 32-bit version(CUBRIDSUS-5349)

In the CUBRID 32-bit version, if the value of data_buffer_size exceeds 2G, the running database fails. Note that the configuration value cannot exceed 2G in the 32-bit version because of the OS limit.

Recommendations for controlling services with the CUBRID Utility in Windows Vista and higher(CUBRIDSUS-4186)

To control services using cubrid utility from Windows Vista and higher, it is recommended to start the command prompt window with administrative privileges.

If you don't start the command prompt window with administrative privileges and use the cubrid utility, you can still execute it with administrative privileges through the User Account Control (UAC) dialog box, but you will not be able to verify the resulting messages.

The procedures for starting the command prompt window as an administrator in Windows Vista and higher are as follows:

  • Right-click [Start > All Programs > Accessories > Command Prompt].
  • When [Execute as an administrator (A)] is selected, a dialog box to verify the privilege escalation is activated. Click “YES" to start with administrative privileges.

GLO class which is used in 2008 r3.0 or before is not supported any longer(CUBRIDSUS-3826)

CUBRID 2008 R3.0 and earlier versions processed Large Objects with the Generalized Large Object glo class, but the glo class has been removed from CUBRID 2008 R3.1 and later versions. Instead, they support BLOB and CLOB (LOB from this point forward) data types. (See BLOB/CLOB Data Types for more information about LOB data types).

glo class users are recommended to carry out tasks as follows:

  • After saving GLO data as a file, modify to not use GLO in any application and DB schema.
  • Implement DB migration by using the unloaddb and loaddb utilities.
  • Perform tasks to load files into LOB data according to the modified application.
  • Verify the application that you modified operates normally.

For reference, if the cubrid loaddb utility loads a table that inherits the GLO class or has the GLO class type, it stops the data from loading by displaying an error message, "Error occurred during schema loading."

With the discontinued support of GLO class, the deleted functions for each interface are as follows:

Interface Deleted Functions
CCI

cci_glo_append_data

cci_glo_compress_data

cci_glo_data_size

cci_glo_delete_data

cci_glo_destroy_data

cci_glo_insert_data

cci_glo_load

cci_glo_new

cci_glo_read_data

cci_glo_save

cci_glo_truncate_data

cci_glo_write_data

JDBC

CUBRIDConnection.getNewGLO

CUBRIDOID.loadGLO

CUBRIDOID.saveGLO

PHP

cubrid_new_glo

cubrid_save_to_glo

cubrid_load_from_glo

cubrid_send_glo

Port configuration is required if the protocol between the master and server processes is changed, or if two versions are running at the same time(CUBRIDSUS-3564)

Because the communication protocol between a master process (cub_master) and a server process (cub_server) has been changed, the master process of CUBRID 2008 R3.0 or later cannot communicate with the server process of a lower version, and the master process of a lower version cannot communicate with a server process of 2008 R3.0 version or later. Therefore, if you run two versions of CUBRID at the same time by adding a new version in an environment where a lower version has already been installed, you should modify the cubrid_port_id system parameter of cubrid.conf so that different ports are used by the different versions.

Specifying a question mark when entering connection information as a URL string in JDBC(CUBRIDSUS-3217)

When entering connection information as a URL string in JDBC, property information was applied even if you did not enter a question mark (?) in the earlier version. However, you must specify a question mark depending on syntax in this CUBRID 2008 R3.0 version. If not, an error is displayed. In addition, you must specify colon (:) even if there is no username or password in the connection information.

URL=jdbc:CUBRID:127.0.0.1:31000:db1:::altHosts=127.0.0.2:31000,127.0.0.3:31000 -- Error
URL=jdbc:CUBRID:127.0.0.1:31000:db1:::?altHosts=127.0.0.2:31000,127.0.0.3:31000 -- Normal

Not allowed to include @ in a database name(CUBRIDSUS-2828)

If @ is included in a database name, it can be interpreted that a host name has been specified. To prevent this, a revision has been made so that @ cannot be included in a database name when running cubrid createdb, cubrid renamedb and cubrid copydb utilities.