CUBRID 2008 R3.0 Release Note

Below you will see the detailed overview of the new CUBRID 2008 R3.0 Beta release.

Table of Contents

  1. OVERVIEW
  2. INFORMATION ABOUT CUBRID 2008 R3.0
  3. WHAT’S NEW IN CUBRID 2008 R3.0
  4. WHAT'S NEW IN CUBRID MANAGER 2008 R3.0 VERSION
  5. CAUTION

^ Top of page

1. Overview

^ Top of page

Information

This document contains information about the CUBRID 2008 R3.0 version. To see the most current version of the release notes, go to CUBRID Open Source Project site (http://www.cubrid.org).

^ Top of page

Revision History

Changes in these release notes of CUBRID 2008 R3.0 are as follows:

Date

Description

July, 2010

CUBRID 2008 R3.0 Release

^ Top of page

References

The documents distributed with the CUBRID 2008 R3.0 product are as follows:

Document

Description

Release Note

Contains new and changed features of this release of CUBRID.

Manual

Contains Quick Start Guide, CUBRID Architecture, SQL Guide, Tuning Guide, Administrator's Guide, CUBRID Manager Guide and API reference.

^ Top of page

Bug Report and User Feedback

CUBRID welcomes your active participation in bug reporting and looks forward to your candid feedback. You can register bug reports and feedback at the following sites.

Document

Description

Bug Report

CUBRID Open Source Project: http://sourceforge.net/projects/cubrid

User Feedback

CUBRID Open Source Project: http://sourceforge.net/projects/cubrid

CUBRID website: http://www.cubrid.org/forum

^ Top of page

Additional Information

You can find useful information about CUBRID in the following sites.

Information

Site

CUBRID Product

http://www.cubrid.org/about

CUBRID License

http://www.cubrid.org/license

CUBRID User Documents

http://www.cubrid.org/documentation

^ Top of page

2. Information about CUBRID 2008 R3.0

^ Top of page

Features of CUBRID 2008 R3.0 Release

In the CUBRID 2008 R3.0 Release, various operators, functions, and statements are extended to enable the easier and more convenient creation of CUBRID-based applications. In addition, cubrid compactdb utility has been enhanced, and the CUBRID HA feature has been stabilized to improve the operating convenience of the service.

Extending SQL Syntax
- CREATE statement extension: Supports table creation through the schema replication of an existing table or total data replication
- INSERT statement extension: Supports multi-record input and REPLACE statement
- SELECT statement extension: Supports LIMIT clause and the extension of GROUP BY clause syntax
- ALTER statement extension: Extends the designation of the position of a column to add, and the addition or deletion of an index or a
- It also supports TRUNCATE statement, prepared statement, etc.
Adding Operator and Function
- Supports logical operator, comparison operator, and bitwise operator
- Adds various mathematical functions, date/time data functions, and date output format specifiers
- Adds various string functions
- Adds more than 20 functions to PHP API
Improving Operating Convenience
- CUBRID HA feature stabilization
- An option is added to the cubrid compactdb utility to enable online database space compacting.

For more information, see Changes in CUBRID 2008 R3.0.

^ Top of page

Supporting Platforms and System Requirements

The platforms compatible with the CUBRID 2008 R3.0 and hardware/software requirements for installation are as follows:

Supporting Platforms

Required Memory

Required Disk Space

Required Software

Windows 32/64 Bit (XP, 2003, Vista)

1G or higher

500MB or higher

- JRE 1.5 or higher

(required when CUBRID Manager or Java stored procedure is used)

- .NET Framework 2.0 or higher

(required when CUBRID Service Tray is used)

- Microsoft Visual C++ 2008 Redistributable Package

Linux 32/64 Bit (Linux kernel 2.4 and glibc 2.3.4 or higher)

1G or higher

500MB or higher

- JRE 1.5 or higher

(required when CUBRID Manager or Java stored procedure is used)

You can download the Microsoft Visual C++ 2008 Redistributable Package from the following link. Check the installation language.

For x86:

http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf

For x86_64:

http://www.microsoft.com/downloads/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6

^ Top of page

License

The GPL v2 license or later is applied to the CUBRID server engine, and the BSD license is applied to the CUBRID Manager and interface (API). For more information, see License Guide in the CUBRID website.

^ Top of page

Version Compatibility and Operability

^ Top of page

Compatibility between applications and CUBRID Manager

- Applications that use the earlier versions of JDBC, PHP, CCI or C API can access the CUBRID 2008 R3.0 database. However, you should link to the library of CUBRID 2008 R3.0 to use the added/improved features of JDBC, CCI or PHP interfaces.

- CUBRID Manager ensures backward compatibility with CUBRID 2008 R2.1 version servers or higher. You should link to the CUBRID JDBC library that matches each server version.

- Please note that query results may be different compared to the earlier version because new reserved words have been added and the specifications for some queries have been changed. For more information, see Cautions on Upgrade^ Top of page

Database Compatibility

When upgrading the version of a server, it is necessary to migrate the database of an earlier version. For more information, see Database Migration Procedures.

^ Top of page

Interoperability

If the CUBRID DB server and its broker server are separately operated, their interoperability is guaranteed, even when their operating systems are different. However, the CUBRID version and the OS version must be the same. For example, the 64-bit DB server for Linux is interoperable with the 64-bit broker server for Windows, but it is not interoperable with the 32-bit broker server.

^ Top of page

How to install CUBRID 2008 R3.0

^ Top of page

On Linux

An installation package for Linux is provided as a script that includes Linux RPM, tar.gz and binary. For more information about installation, see [Getting Started with CUBRID > Installing and Running CUBRID > Installing and Running on Linux].

^ Top of page

On Windows

An installation guide for Windows is provided and you can simply install CUBRID using the installation wizard. For more information about installation, see [Getting Started with CUBRID > Installing and Running CUBRID > Installing and Running on Windows].

^ Top of page

Configuring CUBRID and OS environment variables

Before you start CUBRID, you must configure the CUBRID and OS environment variables. In particular, before you start CUBRID Manager and Java stored procedures, it is necessary to configure JAVA

environment variables. To learn how to configure the environment variables, see Getting Started with CUBRID> Before You Start CUBRID > Configuring the Environment Variable and SQL Guide> Java Stored Functions/Procedures> Environment Settings.

^ Top of page

How to upgrade to CUBRID 2008 R3.0

^ Top of page

Cautions for upgrade
Checking added reserved words and identifiers which are not allowed

The following reserved words are added because SQL statements are extended and more functions/operators are supported, and the special characters which cannot be included in an identifier are changed. Even though those identifiers are used in the earlier version, an error may occur after upgrade. For more information, see Database Migration Procedures, SQL Guide> Reserved Words and SQL Guide> Identifier.

Item

Identifiers which are not allowed in CUBRID 2008 R3.0

Added reserved words

DATABASE, DAY_MILLISECOND, DAY_SECOND, DAY_MINUTE, DAY_HOUR, DISTINCTROW, DIV, DO, DUPLICATE, HOUR_MILLISECOND, HOUR_SECOND, HOUR_MINUTE, LOCALTIME, LOCALTIMESTAMP, MINUTE_MILLISECOND, MINUTE_SECOND, MOD, ROLLUP, SECOND_MILLISECOND, TRUNCATE, XOR, YEAR_MONTH

An operator to use a reserved word as an identifier

double quotes ("), square brackets ([ ]), grave operator (`)

Special characters which cannot be included in an identifier

%, !, |, ^, ~

Checking if any modification is required for an application

Because the execution method of some functions and SQL queries has been changed, their query results may be different compared to the earlier version. The following queries return different results compared to the earlier version.

Query type which returns a different result compared to the earlier version

Earlier version

CUBRID 2008 R3.0

Detailed information

NULL is entered in the AUTO_INCREMENT column.

NULL is saved.

Automatically increasing value is saved.

Shortcut

NO ACTION is defined for ON UPDATE/ON DELETE ACTION on a foreign key.

No action

Same action as RESTRICT

Shortcut

Return value type of the POWER function

Depending on parameter type

DOUBLE type

Shortcut

12-hour format is used as the „HH? or „Hh32? specifier in the TO_CHAR function.

Expression range: 0~11

Expression range: 1~12

Shortcut

Conversion result of 2-digit year value

01~99 ? 0001 ~ 0099

00~69 ? 2000~2069

70~99 ? 1970~1999

Shortcut

Comparison/arithmetic operation of date/time data type

Comparison is possible only for the same types.

Subtraction is possible only for the same types.

Comparison is possible between DATE, TIMESTAMP, and DATETIME types.

Subtraction is possible between DATE, TIMESTAMP, and DATETIME types.

Shortcut

URL String information in JDBC

A question mark before the property can be omitted.

A question mark must be specified before the property.

Shortcut

Checking parameter changes

The following parameters are changed, so be careful when applying a configuration file.

Parameter Name

Changes

Detailed information

INSERT_EXECUTION_MODE

Ranges of parameter value extended.

Shortcut

ANSI_QUOTES

PIPES_AS_CONCAT

ONLY_FULL_GROUP_BY

Added (default value: yes)

Added (default value: yes)

Added (default value: no)

Shortcut

Saving the existing configuration file

Archive the existing configuration files that are in the $CUBRID/conf directory (cubrid.conf, cubrid_broker.conf, cm.conf) and the database location file (databases.txt).

Migrating a Database

A CUBRID 2008 R3.0 version database is not compatible with a database in a lower version of CUBRID. Therefore, you need to migrate the existing database to one of CUBRID 2008 R3.0 (see Database Migration Procedures).

Reconfiguring environments for replication or HA

For more stable operation, it is recommended to migrate DBs and to reconfigure HA environment in a system where the earlier version replication is used. In addition, for the system where the Linux Heartbeat-based HA feature is used, which is provided in versions earlier than CUBRID 2008 R2.2, it is recommended to reconfigure the system to DB migration and CUBRID Heartbeat-based HA environment. (See the Migration Procedures in HA Environment)

^ Top of page

Database Migration Procedures

You can execute migration by using the <CUBRID>/bin/migrate_r30 utility. See the following execution guide. During the execution, you can detect if reserved words added to CUBRID 2008 R3.0 are among the identifiers used in the existing version of database by using the check_reserved.sql reserved word detection script which is distributed separately through the download page.

You can also execute migration by using cubrid unloaddb/loaddb utility. See Administrator's Guide> database migration for more information.

Step

Linux Environment

Windows Environment

C1 step:

Stop CUBRID Service

% cubrid service stop

Select CUBRID Service Tray > [Exit].

C2 step:

Execute reserved words detection script

Execute the following command in the directory where the reserved word detection script is located. Execute migration or identifier modification by checking the detection result. See SQL Guide> identifier.

% csql -S -u dba -i check_reserved.sql

C3 step:

Back up the existing DB

Back up the database in case you wish to restore to the existing version while using CUBRID 2008 R3.0, and store the backup file in a separate directory (R22_backup). (C2a)

% mkdir R22_backup

% cubrid backupdb -S –D R22_backup

Store the existing databases.txt file and the configuration files located in the conf directory in a separate directory. (C2b)

Uninstall the earlier version of CUBRID. Note that when you are prompted with the question “Do you want to delete all the existing version of databases and the configuration files?," make sure to select "No" to protect the existing databases.

C4 step:

Install 2008 R3.0

See How to install CUBRID 2008 R3.0 in this document.

C5 step:

Run the migration tool

Stop the server by selecting CUBRID Service Tray> [CUBRID Server]>[Stop].

Copy the databases.txt stored in step (C2b) to the directory in which 2008 R3.0 is installed. (C5a)

Execute the migrate_r30 utility as shown below. (C5b)

% migrate_r30

C6 step:

Back up 2008 R3.0 version DB

Back up only when the database version is R1.x. If the existing version is R2.x, you may skip this step.

% cubrid backupdb -S

C7 step:

Configure CUBRID environment and start CUBRID Service

Modify the configuration file. At this time, you can use the configuration file that you stored in C2b step.

% cubrid service start

% cubrid server start

CUBRID Service Tray > [CUBRID Server] > [Start]

^ Top of page

Database migration procedures in HA environment

If CUBRID 2008 R2.0 or R2.1 version HA feature was used, the Linux Heartbeat package used in that version is not used anymore. Therefore, it is recommended to set up a new HA environment after executing server version upgrade and DB migration by referring to the following guide. Meanwhile, if the HA feature in CUBRID 2008 R2.2 or a later was used, you can simply execute server upgrade and DB migration.

A scenario will be described below, in which the current service is stopped to perform an upgrade in the environment where a broker, a master DB and a slave DB are operating respectively at different servers. For a scenario in which upgrade is performed without stopping the service, see a separate guide document.

Step

Description

h3 step:

Stop HA-related services and remove the existing Linux Heartbeat

% cubrid broker stop

% service heartbeat stop

% chkconfig --del heartbeat

% pkill -u user1 -f "cub_master"

h4~H6 steps:

Run C2-C6 steps in the master server

Run CUBRID upgrade and database migration in the master server and back up the 2008 R3.0 database.

H7 step:

Install CUBRID 2008 R3.0 in the slave server

See How to install CUBRID 2008 R3.0 in this document.

H8 step:

Restore the backup copy of the master server in the slave server.

Restore the 2008 R3.0 database backup copy (testdb_bk*) of the master server, which is created in H6 step, in the slave server.

% scp user1@m_server:~/DB/testdb/testdb_bk0v000 .

% scp user1@m_server:~/DB/testdb/log/testdb_bkvinf ./log/.

% cubrid restoredb testdb

H9 step:

Reconfigure HA environment and start HA mode

Configure the HA start script (cubrid-ha) and the configuration file (cubrid.conf). See Administrator's Guide> CUBRID HA Environment Configuration.

Start DB in the HA mode in the master and slave servers. See Administrator's Guide> CUBRID HA Environment Configuration.

[root@m_server~]# service cubrid-ha start

[root@s_server~]# service cubrid-ha start

h30 step:

Install CUBRID 2008 R3.0 in the broker server and start a broker

See How to install CUBRID 2008 R3.0in this document.

Configure the broker and start the broker. See Administrator's Guide> CUBRID HA Environment Configuration.

% cat cubrid_broker.conf

ACCESS_MODE=RW


% cubrid broker start

^ Top of page

How to reconfigure replication

- In an environment where replication is used, it is recommended to set up a redundancy environment by using the HA feature for more stable operation. After server version upgrade and database migration, you can set up a new HA environment.

- Development of replication functionality will be discontinued in the future (Outdated and Deprecated Feature).

^ Top of page

3. What’s New in CUBRID 2008 R3.0

^ Top of page

New features - SQL syntax extension related

^ Top of page

CUBRIDSUS-3590 Supporting CREATE TABLE statement extension and table replication
Supporting the creation of a table which has the same schema as an existing table

To help create a new table simply by replicating the schema of an existing table, CREATE TABLE syntax is extended. You can define the schema of a new table more conveniently by using a CREATE TABLE … LIKE statement.

// Creating a new table simply by replicating the schema of a_tbl table

CREATE TABLE new_tbl LIKE a_tbl;

Related document: Table Definition> CREATE TABLE LIKE
Supporting the creation of a table which includes SELECT subquery result records for an existing table

To help create a table which has the result records of SELECT statement when there is a table where multiple records are inserted, CREATE TABLE syntax is extended. You can define the schema of a new table and also insert records more conveniently by using the CREATE TABLE … AS SELECT statement.

// Creating a new table by replicating the result of SELECT for a_tbl table

CREATE TABLE new_tbl1 AS SELECT * FROM a_tbl;

Related document: Table Definition> CREATE TABLE SELECT
Supporting the index creation feature during table creation

THE CREATE TABLE syntax has been extended so that you can create indexes by defining INDEX, KEY or UNIQUE INDEX in a column definition during table creation. In addition, you can define an ASC or DESC option after the target column name when defining an index. You can conveniently sort columns in GROUP BY clauses by specifying the column option.

// Defining an index upon table creation

CREATE TABLE new_tbl(

id INT,

name VARCHAR,

INDEX(id DESC, name ASC)

);

Related document: Table Definition> CREATE TABLE, column option

^ Top of page

CUBRIDSUS-3590 Creating an index for the prefix part of a string corresponding to prefix_length and changing system catalog table

When defining an index to a string type column, you can create an index for only the prefix of the string by specifying prefix_length. Related to this function, the key_prefix_length column, where prefix_length value is stored, is added to the system catalog virtual table DB_INDEX_KEY.

CREATE TABLE new_tbl ( name VARCHAR(20));

INSERT INTO new_tbl VALUES ('abc1234'), ('abcd123');

// Creating an index on 3-byte prefix for a string type column

CREATE INDEX ON new_tbl(name(3));

// Selecting the value of prefix_length defined in a system catalog

SELECT class_name, key_attr_name, key_prefix_length FROM db_index_key

WHERE class_name = 'new_tbl';

Related document: Index Definition> CREATE INDEX,system catalog virtual class> DB_INDEX_KEY

^ Top of page

CUBRIDSUS-3590 Extending INSERT syntax and supporting REPLACE statement
Extending INSERT syntax to allow the instant insertion of multiple records

YOU CAN OMIT INTO IN THE INSERT statement, AND USE VALUE instead of VALUES. In addition, the statement is extended to allow instant insertion of multiple rows by separating values to insert with a comma.

CREATE TABLE insert_tbl (A INT DEFAULT 1, B INT UNIQUE);

INSERT INTO insert_tbl VALUES (1,1), (2,2), (NULL, 3);

Extending a statement to allow the easy insertion of a default value

A statement is extended to allow specifying DEFAULT keyword in front or back of VALUES, and also specifying it directly to a column value.

// Inserting a default value

INSERT INTO insert_tbl VALUES DEFAULT;

INSERT INTO insert_tbl DEFAULT VALUES;

// Specify the DEFAULT keyword into a column

INSERT INTO insert_tbl VALUES (DEFAULT, 4),(DEFAULT,5) ;

Supporting SET clause to allow the easy insertion of a specific column value

In the INSERT statement, you can specify a specific column name and column value by using SET instead of VALUES clause.

// Inserting some of column values

INSERT INTO insert_tbl SET A=10;

Supporting the ON DUPLICATE KEY UPDATE clause to allow the insertion of duplicate values into the UNIQUE column

Even when a column value that violates the UNIQUE or PRIMARY KEY condition is inserted by using ON DUPLICATE KEY UPDATE in the INSERT statement, the other column value of the record can be updated to a new value.

// Updating a specified value upon duplicate insertion without any error

INSERT INTO insert_tbl VALUES (DEFAULT, 5) ON DUPLICATE KEY UPDATE A=2;

Supporting the REPLACE statement, which deletes and inserts a record

Similar to the INSERT statement, REPLACE statement is supported, which can update a column value to a new value even when the column value is inserted, which violates UNIQUE or PRIMARY KEY condition without specifying ON DUPLICATE KEY UPDATE clause.

// Replacing an existing record with a new one upon duplication insertion; the existing record is deleted before it is replaced.

REPLACE INTO insert_tbl VALUES (3, 5);

Related document: Data Retrieving and Manipulation> INSERT, ON DUPLICATE KEY UPDATE, REPLACE

^ Top of page

CUBRIDSUS-3590 Supporting LIMIT clause, which limits the number of target records in the SELECT, DELETE, and UPDATE statements

You can limit the number of records of execution result set in the SELECT statement by using the LIMIT clause. Likewise, you can limit the number of records for operation in the DELETE statement and the UPDATE statement.

// Outputting three records from the 2nd one in the result set

SELECT * FROM a_tbl ORDER BY a LIMIT 2,3;

// Updating the first three records which meet conditions

UPDATE a_tbl SET a=10, b=10 WHERE a IS NULL LIMIT 3;

// Deleting the first one record which meets conditions

DELETE FROM a_tbl WHERE a IS NULL LIMIT 1;

Related document: Data Retrieval and Manipulation> SELECT> LIMIT clause

^ Top of page

CUBRIDSUS-3590 Omitting FROM clause in the SELECT statement

If there is no table to refer to in the SELECT statement, the table can be omitted because syntax is extended.

SELECT 1+1;

SELECT FALSE;

Related document: Data Retrieval and Manipulation> SELECT> FROM clause

^ Top of page

CUBRIDSUS-3590 Extending syntax of GROUP BY … HAVING clause in the SELECT statement

You can specify a column alias instead of column name in the GROUP BY clause, and WITH ROLLUP modifier is supported to help output intermediate aggregation per group and total aggregation. In addition, you can suppress sorting by the GROUP BY clause by specifying ORDER BY NULL statement.

Meanwhile, if the value of ONLY_FULL_GROUP_BY parameter setting is NO, extended syntax is provided to allow the use of a hidden column, which is not specified in the GROUP BY clause, in the SELECT list.

// Specifying ORDER BY NULL not to perform sorting

SELECT dept_no, avg(sales_amount) FROM sales_tbl

GROUP BY dept_no ORDER BY NULL;

// Specify WITH ROLLUP to specify a column alias and output the group aggregation and total aggregation

SELECT dept_no AS a1, name AS a2, avg(sales_amount) AS a3 FROM sales_tbl

GROUP BY a1,a2 WITH ROLLUP;

Related document: Data Retrieval and Manipulation> SELECT> GROUP BY HAVING clause

^ Top of page

CUBRIDSUS-3590 Extending ALTER TABLE syntax and specifying column location to add
Adding and deleting index and
condition

To help change the index and definition more conveniently by using the ALTER TABLE statement, ADD INDEX clause, DROP INDEX clause, DROP PRIMARY KEY clause, and DROP FOREIGN KEY clause are also supported.

// Adding an index to the ALTER TABLE statement

ALTER TABLE a_tbl ADD INDEX (a ASC), ADD INDEX (b DESC);

// Deleting an index from the ALTER TABLE statement

ALTER TABLE a_tbl DROP INDEX i_a_tbl_a;

// Deleting a primary key from the ALTER TABLE statement

ALTER TABLE a_tbl DROP PRIMARY KEY;

// Deleting a foreign key from the ALTER TABLE statement

ALTER TABLE a_tbl DROP FOREIGN KEY fk_a_tbl_a;

Specifying a column location to add

When adding a new column by using the ALTER TABLE … ADD COLUMN clause, FIRST or AFTER keyword can be used to specify the column location.

CREATE TABLE a_tbl(a INT, b INT);

INSERT INTO a_tbl VALUES(1, 1),(2, 2);

// Indicating a position of column that is added in the ALTER TABLE statement

ALTER TABLE a_tbl ADD COLUMN c INT DEFAULT 0 AFTER a;

Related document: Table Definition> ALTER TABLE

^ Top of page

CUBRIDSUS-3590 Deleting all records by using the TRUNCATE statement

You can delete all records in a table by using the TRUNCATE statement. Because the records are deleted after all the indexes and s defined in the table are deleted, this is more advantageous than using the DELETE statement.

CREATE TABLE b_tbl(A INT PRIMARY KEY);

INSERT INTO b_tbl VALUES (1),(2),(3);

TRUNCATE b_tbl;

Related document: Data Retrieval and Manipulation> TRUNCATE

^ Top of page

CUBRIDSUS-3590 Adding trigger operation for ON UPDATE and ON DELETE operation when defining a foreign key

SET NULL option is added, which updates a foreign key value to NULL when a primary key value is updated or deleted. Meanwhile, NO ACTION option allowed changing a primary key value but did not provide any operation for a foreign key in the earlier version, but it is modified to provide the same operation as the RESTRICT option. In other words, if NO ACTION or RESTRICT option isdefined, a primary key value which is referred by a foreign key cannot be changed.

::=

ON UPDATE { RESTRICT | NO ACTION | SET NULL }

::=

ON DELETE { CASCADE | RESTRICT | NO ACTION | SET NULL }

Related document: Table Definition> CREATE TABLE> FOREIGN KEY

^ Top of page

CUBRIDSUS-3590 Supporting PREPARED STATEMENT execution at SQL level

PREPARE statement which declares an SQL statement in advance, EXECUTE statement which executes the prepared statement, and DROP PREPARE statement which deletes the prepared statement are supported, so prepared statement feature supported in SQL level. However, prepared statement is not supported in the Query Editor of CUBRID Manager, and you must enter an execution command (;xr or ;run) after writing both PREPARE statement and EXECUTE statement in the CSQL Interpreter.

PREPARE stmt1 FROM 'SELECT POWER(?,2)*PI()';

EXECUTE stmt1 USING 2;

;run

Related document: Data Retrieval and Manipulation> PREPARED STATEMENT

^ Top of page

CUBRIDSUS-3590 Supporting additional parameters to apply extended SQL syntax

Additional parameters are supported to apply extended SQL syntax or standard syntax. You can set up necessary parameters according to the SQL type or coding style to write in an application.

Related document: Database setup> statement/type parameter

Added parameters

parameter value (default)

Parameter Value

ONLY_FULL_GROUP_BY

NO

Applying extended syntax.

You can specify a hidden column that is not specified in the GROUP BY clause, in the SELECT column list.

YES

Applying standard SQL syntax.

You can only specify a column that is specified in the GROUP BY clause, in the SELECT column list.

ANSI_QUOTES

YES

Using single quotes ( „ ) as a string processing sign

NO

ALSO USING DOUBLE QUOTES ( “ ) AS A STRING PROCESSING SIGN

PIPES_AS_CONCAT

YES

Using double pipe sign ( || ) as string concatenation operator

NO

Using double pipe sign ( || ) as boolean operator OR

Related document: operator and function> logical operator

^ Top of page

New features – operator and function related

^ Top of page

CUBRIDSUS-3591 Extending logical operators

The logical operator for a Boolean operation expression is extended.

Comparison Operator

Remark

<=>

NULL Safe equal sign (new)

!=

CAN BE USED IN THE SAME WAY AS <>

IS, IS NOT

COMPARISON OPERATION FOR EXPRESSION AND BOOLEAN VALUE (TRUE, FALSE, UNKNOWN, NULL) IN A PREDICATE

Related document: operator and function> comparison operator

^ Top of page

CUBRIDSUS-3591 Extending comparison operators

Comparison operator is extended.

Logical operator

Remark

&&

CAN BE USED IN THE SAME WAY AS AND

||

CAN BE USED IN THE SAME WAY AS OR (HOWEVER, PIPES_AS_CONCAT=NO PARAMETER SETTING IS REQUIRED)

XOR

XOR SUPPORT (NEW)

!

CAN BE USED IN THE SAME WAY AS NOT

^ Top of page

CUBRIDSUS-3591 Supporting new bitwise operators and bit functions

bitwise operators and bit operation functions are supported by extending bit array literal.

Supporting Items

Remark

BIT ARRAY LITERAL

Binary (B?1010?, 0b1010) and hexadecimal (X?a?, 0xa) can be used.

BITWISE OPERATOR

&, |, ^, ~, <<, >> support (new)

BIT FUNCTION

BIT_AND(expr), BIT_OR(expr), BIT_XOR(expr), BIT_COUNT(expr) support (new)

Related document: operator and function> bit function and operator

^ Top of page

CUBRIDSUS-3591 Extended numerical operation function
Supporting additional trigonometric functions

You can calculate a radian value by using various trigonometric functions, and also convert the unit of a value into radian by using a conversion function. The following functions are added:

// Returning a radian value with a trigonometric function

COS( x )

COT( x )

SIN( x )

TAN( x )

// Returning a radian value with an inverse trigonometric function

ACOS( x )

ASIN( x )

ATAN(x[, y]), ATAN2(x[, y])

// Converting the x value with radian measure into one with degree measure

DEGRESS( x )

// Converting the x value with degree measure into one with radian measure

RADIANS( x )

// Returning the pi value as a double type

PI()

Supporting additional mathematical functions

The following functions are added for absolute value, involution value, square root and log operation.

// Returning the power value

POW( x )

// Returning the square root

SQRT( x )

// Returning the values of binary, natural, and common algorithms

LOG2( x ), LN( x ), LOG10( x )

Extending random functions to enable specifying SEED value

You can specify a seed value in every random function that is supported in CUBRID. In addition, the range of random numbers that can be created has been extended from 0~216 to 0~232.

// Generating a random integer

RAND( [seed] )

RANDOM( [seed] )

// Generating a random real number

DRANDOM( [seed] ) DRAND( [seed] )

Supporting FORMAT( ) function, which converts a numerical value into a user-specified string format

A function that converts a given value into „#,###,###.######format string is supported and you can specify a digit of a decimal fraction as a parameter.

// Separating a given value with a comma every three digit, and outputting the value to specified place

SELECT FORMAT(12000.123456,4);

======================

'12,000.1235'

Related document: Numerical operation function> RANDOM/RAND function , FORMAT function , etc.

^ Top of page

CUBRIDSUS-3591 Extending date/time functions and various output formats
Adding a function which provides calculation by specifying the time interval unit for date/time value

The difference between a given date value and a specific time can be calculated by specifying various time interval units, from millisecond to year. The following functions are added:

// Returning a value of a time interval added to a given date with ADDDATE( ) and DATE_ADD( ) function

SELECT ADDDATE('2010-06-20', INTERVAL 60 SECOND), ADDDATE('2010-06-20', 1);

============================================

'12:01:00.000 AM 06/20/2010' '06/21/2010'

// Returning a value of a time interval subtracted from a given date with SUBDATE( ) and DATE_SUB( ) function

SELECT SUBDATE('2010-06-20', INTERVAL 60 SECOND), SUBDATE('2010-06-20', 1);

============================================

'11:59:00.000 PM 06/19/2010' '06/19/2010'

// Returning difference between given values on a daily basis

SELECT DATEDIFF(SYSDATETIME, '2010-06-20');

=========================================

12

Supporting a function that converts a date/time value into a user-specified string format

A function that converts a date/time value into a user-specified string format is added. In addition, you can specify various output formats by combining new format specifiers which start with '%'.

// Outputting a given value in 'MM/DD/YYYY' string type after conversion

SELECT DATE(NOW());

======================

'07/02/2010'

// Outputting a given value in defined string type after conversion

SELECT DATE_FORMAT('2010-06-20 22:23:00', '%Y %M %W %H:%i');

======================

'2010 June Sunday 22:23'

// Outputting a given value in defined time type after conversion

SELECT TIME_FORMAT('23:59:01', '%H %h %i %s %f');

======================

'23 11 59 01 000'

Supporting a function that converts a string into a date/time value

A function that converts a string into a date/time value in a specified format is supported. You can convert a string into a date/time value by applying a suitable format specifier to the STR_TO_DATE( ) function. In addition, the TIMESTAMP( ) function is added, which converts a string into a timestamp value which is in millisecond units.

// Outputting strings in defied date/time type after conversion

SELECT STR_TO_DATE('June 20, 2010','%M %d,%Y');

===========================================

06/20/2010

// Converting string into a value with DATETIME type or outputting the result after adding time value

SELECT TIMESTAMP('2010-06-20'), TIMESTAMP('2010-06-20','13:59:59');

=====================================================================

12:00:00.000 AM 06/20/2010 01:59:59.000 PM 06/20/2010

Supporting a function which gets the current system date/time

The synonym of existing functions which get the current date/time of system is added, and a function which outputs a UNIX timestamp value is added.

// Returning current date

CURDATE(), CURRENT_DATE(), CURRENT_DATE, SYSDATE, SYS_DATE

// Returning current time

CURTIME(), CURRENT_TIME(), CURRENT_TIME, SYSTIME, SYS_TIME

// Returning current timestamp value in seconds

CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP, LOCALTIME(), LOCALTIME, LOCALTIMESTAMP(),LOCALTIMESTAMP, SYSTIMESTAMP, SYS_TIMESTAMP

// Returning current timestamp value in milliseconds

CURRENT_DATETIME(), CURRENT_DATETIME, NOW(), SYSDATETIME, SYS_DATETIME

// Returning time interval in seconds since '1970-01-01 00:00:00' UTC with the UNIX_TIMESTAMP() function

SELECT UNIX_TIMESTAMP('2010-06-20')

===============================

1276959600

Related document: date/time function and operator> ADDDATE function , STR_TO_DATE function , DATE_FORMAT function , etc.

^ Top of page

CUBRIDSUS-3591 Extending string functions
Supporting CONCAT( ) function which horizontally outputs a string that concatenates column values

The CONCAT( ) function that outputs a single string by concatenating column values, and the CONCAT_WS( ) function that outputs values by inserting identifiers between concatenated values are provided.

SELECT CONCAT('CUBRID', '2008' , 'R3.0'), CONCAT_WS('//', 'CUBRID', '2008', 'R3.0');

============================================

'CUBRID2008R3.0' 'CUBRID//2008//R3.0'

Supporting string comparison and search functions

The MID( ) function that returns a specific length of string from a given location is supported, and the LEFT( ) function or RIGHT( ) function that returns a specific length of string either from left or from right is provided.

SELECT MID('12345abcde', 6, 4), LEFT('12345abcde', 4), RIGHT('12345abcde', 4);

==========================================

'abcd' '1234' 'bcde'

The LOCATE( ) function, which returns a string that is at a given location, is provided.

SELECT LOCATE ('abc', '12345abcde');

===========

6

The FIELD( ) function, where a parameter returns a location by comparing a given string to the string, which is specified by the rest parameter, is also provided.

SELECT FIELD('abc', 'a', 'ab', 'abc', 'abcd');

=========================================

3

The STRCMP( ) function which returns 0, 1, or -1 by comparing given two strings.

SELECT STRCMP('abc', 'abc'), STRCMP('abc', 'ab'), STRCMP('abc', 'abcd');

=====================================================================

0 1 -1

Supporting additional functions that convert a string

The UCASE( ) function and LCASE( ) function which convert a string into uppercase letters or lowercase letters, respectively, are provided. In addition, the REVERSE( ) function that provides reverse conversion for a string is provided.

SELECT UCASE('CUBrid'), LCASE('CUBrid'), REVERSE('CUBrid');

==================================================================

'CUBRID' 'cubrid' 'dirBUC'

Related document: string function and operator> CONCAT function, MID function , LOCATE function , REVERSE function, etc.

^ Top of page

CUBRIDSUS-3591 Extending information functions
Supporting a function which returns database related information

An information function that returns connected database name or all database names and database user names is supported.

// Returning the connected database name

SELECT DATABASE(), SCHEMA();

// Returning all database names that are existing on servers

SELECT LIST_DBS();

// Returning database user and host names

SELECT USER(), SYSTEM_USER();

Supporting a function which returns a default value defined in a column

The DEFAULT( ) function that returns a default value defined in a given column is supported.

CREATE TABLE info_tbl(id INT DEFAULT 0)

INSERT INTO info_tbl VALUES (1);

// Returning a default value defined in a column

SELECT id, DEFAULT(id) FROM info_tbl;

===========================

1 0

Supporting a function which returns the number of affected rows by a prior query

A function which returns the number of rows that were changed (UPDATE, INSERT, DELETE) by a prior query is supported.

INSERT INTO info_tbl VALUES (4), (5), (6);

// Returning the number of changed rows

SELECT ROW_COUNT();

;xr

===============

3

Related document: information function> USER function , DEFAULT function , ROW_COUNT function , etc.

^ Top of page

CUBRIDSUS-3591 Extending conditional operation functions
Supporting ISNULL( ) and IFNULL( ) functions for NULL value comparison

A function which compares a specific column value to check if it is NULL and returns a different value according to the comparison result is supported.

CREATE TABLE case_tbl(a INT);

INSERT INTO case_tbl VALUES (1), (2), (NULL);

// 1 is returned inf expr is NULL; 0, otherwise

SELECT ISNULL(a) FROM case_tbl;

// 2 is returned if expr1 is NULL; expr1, otherwise

SELECT IFNULL(a, 'UNKNOWN') FROM case_tbl;

Supporting IF( ) and NULLIF( ) functions for parameter value comparison

A function that operates true/false or equal comparison and returns a different value according to the comparison result is supported.

// expr2 is returned if expr1 is true; expr3, otherwise

SELECT IF(a=1, 'one', 'other') FROM case_tbl;

//NULL is returned if expr1 is identical to expr2; expr1, otherwise

SELECT NULLIF(a, 1) FROM case_tbl;

Related document: conditional expression and function> IFNULL function , NULLIF function , IF function , etc.

^ Top of page

New features – Others

^ Top of page

CUBRIDSUS-3005, 3085 Supporting compactdb utility option which can perform compact database operation during database operation

In the earlier version, the cubrid compactdb utility provides only offline compactdb operation. The client/server mode execution option (-C) is supported to enable the use of the utility when the database process is running. In addition, the detail option (-I, -i, -c, -d, -p), which is available only in client/server mode, is also supported.

Related document: Database Management> Compact Database

^ Top of page

CUBRIDSUS-2923, 2961, 2972 Supporting about 20 functions for PHP API

Fetch related, field information related, and DB information related functions are supported for PHP API.

Related document: PHP API

Fetch related functions

Field related functions

DB information related functions

Other functions

cubrid_fetch_assoc( )

cubrid_fetch_field( )

cubrid_fetch_lengths( )

cubrid_fetch_object( )

cubrid_fetch_row( )

cubrid_field_flags( )

cubrid_field_len( )

cubrid_field_name( )

cubrid_field_seek( )

cubrid_field_table( )

cubrid_field_type( )

cubrid_num_fields( )

cubrid_get_client_info( )

cubrid_get_server_info( )

cubrid_get_charset( )

cubrid_get_db_parameter( )

cubrid_list_dbs( )

cubrid_data_seek( )

cubrid_free_result( )

cubrid_insert_id( )

cubrid_result( )

cubrid_unbuffered_query( )

cubrid_real_escape_string( )

^ Top of page

CUBRIDSUS-2829 insert_execution_mode Adding INSERT mode, which can be set up in the insert_execution_mode parameter

The INSERT execution mode is added because of INSERT syntax extension and REPLACE statement support. Therefore, you can set up insert_execution_mode parameter value in the combination of total 5 execution modes. In the earlier version, the INSERT execution mode provided only INSERT_SELECT, INSERT_VALUES, and INSERT_DEFAULT. But, INSERT_REPLACE and INSERT_ON_DUP_KEY_UPDATE are added in this version.

Related document: Database Server Configuration> insert_execution_mode

^ Top of page

Changed and Enhanced Features

^ Top of page

CUBRIDSUS-2855 The operation of cci_connect( ) function is changed

The operation of cci_connect( ) and cci_connect_with_url( ) which are database link related functions in the CCI library is changed. In the earlier version, when the function is called, only the connection information is saved. Therefore, you may misunderstand that connection is successful even when invalid connection information is provided. To fix this problem, validity check is performed for connection information when the function is called, and the connection handle is returned only when an actual connection is successful.

Related document: CCI API> cci_connect , cci_connect_with_url

^ Top of page

CUBRIDSUS-3391 The range of format specifier 'HH' or 'Hh32' is changed in the TO_CHAR( ) function

When you do 12-hour format by using 'HH' or 'Hh32' specifier in the TO_CHAR function, time value is displayed from 0~11 in the earlier version. However, it is displayed from 1~12 in this version. Because of this, the result of the corresponding query in an application may be different after upgrade.

Related document: Data type conversion function and operator> TO_CHAR function

^ Top of page

CUBRIDSUS-3213 The interpretation of 2-digit year value is changed

In the earlier version, 2-digit year value 01~99 is interpreted as year 0001~0099. However, 00~69 is interpreted as year 2000~2069 and 70~99 as year 1970~1999 in this version. Because of this, the result of the corresponding query in an application may be different after upgrade.

Related document: Data type conversion function> date/time Data type

^ Top of page

CUBRIDSUS-2703 The result type of POWER( ) function is changed to DOUBLE

In the earlier version, the return type of POWER( ) function was determined by a given parameter. However, the return type is always DOUBLE type, regardless of a parameter type in this version. Because of this, the result of the corresponding query in an application may be different after upgrade. In addition, POW( ) can be used as synonym.

Related document: Numerical operation function> POWER function

^ Top of page

CUBRIDSUS-2421 Preventing a sequential scan from occurring at a specific query whose conditional clause is always FALSE

In a query which executes collection operation in the SELECT statement where GROUP BY clause is included, a sequential scan is executed in a server when a conditional clause is always FALSE in the earlier version. However, in this version the algorithm is fixed so that there must be an immediate return when the conditional clause is always FALSE.

^ Top of page

CUBRIDSUS-961, 2890, 3030 Supporting the getPrimaryKeys( ) and getColumnDisplaySize( ) methods of the JDBC driver

The getPrimaryKeys( ) method which sorts and returns the column names that configures a primary key in the CUBRIDDatabaseMetaData interface of CUBRID JDBC driver. And, in the earlier version, getColumnDisplaySize( ) in the ResultSetMetaDate interface returned '0' for an integer-type column with no precision value as well as for the VARCHAR type column. However, it is fixed to return the actual column size.

^ Top of page

CUBRIDSUS-2661 Supporting DataAccessException of Spring framework in the JDBC driver

JDBC driver is improved to allow more detail Exception processing by supporting DataAccessException of Spring framework.

^ Top of page

CUBRIDSUS-1737 Supporting CUBRID execution script in the Linux environment

The cubrid.init script which enables automatic execution of CUBRID in the Linux environment is provided in the CUBRID/contrib directory. You can copy it into /etc/init.d/ and register it to the service.

^ Top of page

CUBRIDSUS-1562, 1628 Fixed to unload some tables specified in the input file even though there is no newline character

In the previous version, the unload operation would be executed normally only if a newline character (\n) was included at the end of the input file where the table list is stored when the –i option of the cubrid unloaddb utility is used to unload only some of the tables in the database. This has been fixed. The

operation is also executed normally when there is a newline character at the end, or when the newline character is used as an identifier in the middle of the line.

In addition, in the previous version, the parameter would not be applied if the enter key was not entered after one was entered at the last line of the configuration file (*.conf) in a Windows environment. This has been fixed.

^ Top of page

CUBRIDSUS-1216 Supporting a feature to reset a RW mode broker automatically after failback of the master server in HA environment

In the previous version, some CAS processes would be running to maintain the connection with the slave server until a write operation was requested or a command that initializes the broker connection was entered after the failback of the master server in HA environment. Revision has been made so that when the master server process restarts, a broker in RW mode automatically initializes the connection state and then connection is made with the master server immediately after the transaction being processed by the CAS process is terminated.

^ Top of page

CUBRIDSUS-1970 Fixed to execute an index scan in hierarchy query

In the previous version, only sequential scan was executed even when the index was defined in the target table of the hierarchy query statement. This has been fixed so that the index scan is executed.

^ Top of page

Fixed errors

^ Top of page

CUBRIDSUS-3194,3399,3434,3435 Fixed an error in which CPU use was increased by the applylogdb process in the HA environment

The CPU usage during the applylogdb process was continuously increased because of an error in an algorithm used to process a NULL page when reflecting a replication log to a slave DB in the HA environment. This error has been fixed.

In addition, replication is stopped when CPU use is increased because of the error in which the applylogdb process repeatedly reflected the log of a specific period. This error has been fixed.

^ Top of page

CUBRIDSUS-3196, 3489 Fixed an error in which the applylogdb process was restarted repeatedly and replication was not performed in the HA environment

There was an error that caused replication to be stopped when the applylogdb process was restarted repeatedly, because there was a mismatch between the replication log information of the master DB and the page information which the applylogdb process of slave DB tried to reflect in the HA environment. This error has been fixed. Such an error may occur in an environment where the database is backed up frequently even though the write operation is rarely executed.

^ Top of page

CUBRIDSUS-3106 Fixed an error that caused replication to be stopped because a specific commit log was lost

Replication is stopped because a transaction commit log is lost because of an error in which unexpected EOL (End-Of-Log) was recorded into a specific archive log in the HA environment. This error has been fixed.

^ Top of page

CUBRIDSUS-2831 Fixed an error that caused a task to be stopped when executing the backupdb utility in the client mode after configuring the HA environment

When executing the cubrid backupdb utility in the client mode (-C option) to back up a new DB created after the HA environment is configured, the backup task is stopped. The error is fixed.

^ Top of page

CUBRIDSUS-2872 Fixed an error in which there was a CUBRID heartbeat node status information mismatch in the HA environment

When configuring HA by using the CUBRID heartbeat, all the nodes configured as HA are recognized as master because of a heartbeat message receiving an algorithm error. The error is fixed.

Error version: CUBRID 2008 R2.2

^ Top of page

CUBRIDSUS-2120 Fixed an error that caused data mismatch when executing INSERT to a table where a foreign key is defined in the replication/HA environment

In the previous version, data mismatch might occur depending on the commit order of transaction A and B if a table where primary and foreign key referential constraints exist in a replication or HA environment and if transaction A and B both execute INSERT into primary and foreign key tables. This has been fixed.

^ Top of page

CUBRIDSUS-3295, 3191 Fixed an error that caused a data mismatch in the replication environment

If a master DB executes query_cancel in the CAS process during transaction and rolls back the corresponding operation, a replication log is created for the rolled-back operation, and causing a data mismatch between the master DB and the slave DB. The error is fixed.

^ Top of page

CUBRIDSUS-3135 Fixed an error that caused the size of a replication log to be increased abnormally in the replication environment

In a specific situation when there was a replication delay in a master DB, the size of a master DB replication log was increased abnormally even after the replication log is copied into a slave DB. The error is fixed.

^ Top of page

CUBRIDSUS-2638 Fixed an error that caused a query to not be executed normally after restoring database in a specific situation

If a server process is terminated before commit and also a log about the added volume that was sent to a disk after backup is executed and a new volume is added by transaction A, there is mismatch between volume information (volume info) and the actual volume file. If restoring the target database was executed in this situation, the added volume would not be restored in the earlier version. Therefore, if you executed a query to the target database, the Internal Error would be displayed. The error is fixed.

^ Top of page

CUBRIDSUS-3083 Fixed an error in which duplicate values were inserted into the UNIQUE KEY column

If you change the column values of multiple rows by using a single UPDATE statement, duplicate values would be saved into columns where the UNIQUE constraint is defined. This error has been fixed.

Error version: CUBRID 2008 R2.2

^ Top of page

CUBRIDSUS-2127 Fixed a problem in which OR operation is not applicable to a specific index key value in the join predicate

If there was empty result for the left predicate which is connected by OR in a query statement where more than two tables (where indexes are defined) are joined, an incorrect query result was returned because the right predicate was not considered. This error has been fixed.

^ Top of page

CUBRIDSUS-2062 Fixed query result error of outer join

In the previous version, executing left and right outer join queries produced different result due to malfunction of outer join query operation. This has been fixed.

^ Top of page

CUBRIDSUS-423 Fixed an error of the column name not being output in the inline-view type query results

In the previous version, there was an error in which oid value stored in the column was displayed normally but the column name was displayed as a blank when selecting the oid value from a table with an inline-view type query. This has been fixed.

SELECT * FROM (SELECT tbl_1 FROM tbl_1) A;

^ Top of page

CUBRIDSUS-3337 Fixed a query result error that occurs when a correlated sub-query that has ORDER BY clause is specified in the SELECT list

If more than two correlated sub-queries with the ORDER BY clause were specified in the SELECT list, there was an incorrect query result because of an error with the algorithm which rewrites the sub-query internally. This error has been fixed.

// Query type with which an error is reproduced

SELECT

(SELECT nvl(id2,id1) FROM t1 WHERE id = t_o.id ORDER BY id2, id1 FOR ORDERBY_NUM() = 1) AS col1,

(SELECT count(val) FROM t2 WHERE id = t_o.id and val> 0) AS col2

FROM tbl_out t_o WHERE rownum < 3;

^ Top of page

CUBRIDSUS-2742 Fixed a query result error that occurs when a subquery with FOR ORDERBY_NUM() is included

If a sub-query with a FOR ORDERBY_NUM() clause was specified in the SELECT list, there was an incorrect query result because of an error due to an algorithm that rewrites the sub-query internally. This error has been fixed.

// Query type with which an error is reproduced

SELECT

(SELECT a FROM xoo ORDER BY b ASC, a ASC for orderby_num() = 1 ) c1,

b

FROM xoo x ORDER BY order_no ASC;

^ Top of page

CUBRIDSUS-2530 Fixed level value error in a specific hierarchy query statement

When a new record was inserted in a space where another record has been deleted, an incorrect level value was displayed as the execution result of a hierarchy query statement. This error has been fixed. However, because this error is caused by heap space reuse, it will not occur if you set the dont_resue_heap parameter value to "yes."

^ Top of page

CUBRIDSUS-2149 Fixed an error in which a reference value is not updated when defining a foreign key of a ON CACHE OBJECT option on an index column

An error in which a referencing value of a column is not updated when creating a foreign key of an ON CACHE OBJECT option on the column that already has an index has been fixed.

^ Top of page

CUBRIDSUS-2603 Fixed the START WITH option error of CREATE SERIAL and ALTER SERIAL statements

In the CREATE SERIALstatement or ALTER SERIALstatement, there was no error only when the START WITH option was specified first. If it was specified in the middle, there would be an error. Now, normal operation is guaranteed regardless of the option location.

^ Top of page

CUBRIDSUS-3003 Fixed an error in which the sub-query result is not sorted when one with an ORDER BY clause is in SEQUENCE type

In the previous version, there was an error in which that the sub-query result would not be sorted by the ORDER BY clause when expressing a sub-query with the ORDER BY clause as a SEQUENCE or LIST type.

^ Top of page

CUBRIDSUS-3299 Fixed an error that created the column type incorrectly if the column name was not specified in the CREATE VIEW statement

An error of a column type that was created automatically if the column name was not specified in the SELECT statement when creating a VIEW has been fixed.

// It is created with VARCHAR(1073741823) type in earlier versions, and it is created with VARCHAR(3) type in new version

CREATE VIEW vx AS SELECT 'aaa' a FROM db_root;

// A column type is none in earlier version, and a column type is INTEGER in new version

CREATE VIEW AS SELECT 1 + 1 a FROM db_root;

^ Top of page

CUBRIDSUS-3203, 3224, 3246 Fixed an error that occurs during explicit type casting using the CAST function

The error in which .5 was not rounded up when explicitly type coercing from a NUMERIC value to BIGINT has been fixed. The error in which a blank was inserted at the end of the string when a DATETIME type is cast to a string type has been fixed.

An error in which casting would produce an incorrect value if there was a blank before or after the string when casting one to a numeric type has been also fixed.

^ Top of page

CUBRIDSUS-440 Fixed an error that the trigger information could not be retrieved in the system catalog view if a table with a trigger was dropped

In the previous version, if you deleted the table in which the trigger was defined but did not drop the trigger manually, you could retrieve the trigger from the system catalog table db_trigger, but not from the system catalog view db_trig. This error has been fixed, so now you can retrieve information on a trigger that has not been dropped in a system catalog view as well.

^ Top of page

CUBRIDSUS-1559 Fixed an error in which a COMMIT or ROLLBACK event type trigger was not unloaded

In the previous version, if a COMMIT or ROLLBACK event type trigger for which an event target table does not exist was defined, the DB unload operation was executed omitting the trigger. This error has been fixed.

^ Top of page

CUBRIDSUS-2774 Fixed malfunction of the broker_log_top utility and changed the broker log format

An error in which broker_log_top, broker_log_converter and broker_log_runner utilities did not run if a BIT type value was bound in an application has been fixed and the broker log format has been changed. For this reason, the broker log created in the CUBRID 2008 R3.0 version is not compatible with that in the lower version. Therefore, you cannot run the above broker log-related utilities for R1.x and R2.x version broker logs. Likewise, you cannot run R1.x and R2.x version broker log-related utilities for a R3.0 version broker log.

^ Top of page

CUBRIDSUS-2886 Fixed an error in which connection is failed where excessive server connections are requested through JDBC

In an environment where tens of threads connect to a server through the JDBC driver and execute INSERT, the following error message would be displayed and connection would fail. This error has been fixed.

JDBC error message

cubrid.jdbc.driver.CUBRIDException: Failed to connect to database server, 'address', on the following host(s): localhost

at cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:676)

at cubrid.jdbc.driver.CUBRIDConnection.prepare(CUBRIDConnection.java:917)

at cubrid.jdbc.driver.CUBRIDConnection.prepareStatement(CUBRIDConnection.java:137)

at worker.addr_insert(foo_address.java:170)

at worker.run(foo_address.java:44)

Broker error log

Time: 04/29/10 19:36:10.258 - ERROR *** ERROR CODE = -353, Tran = -1, EID = 1

Cannot make connection to master server.... Resource temporarily unavailable

Time: 04/29/10 19:36:10.258 - ERROR *** ERROR CODE = -677, Tran = -1, EID = 2

Failed to connect to database server, 'address', on the following host(s): localhost

Error version: CUBRID 2008 R2.0 Patch4, R2.2

^ Top of page

CUBRIDSUS-3367, 3427 Fixed ResultSet return error and cci_cursor_update( ) operation error in the Java Stored Procedure

In the previous version, there was a problem in that the operation would not work normally with the missing or invalid position of the bind variable provided. A message when accessing a result set is returned through JSP in a JDBC application that uses Java Stored Procedures. Because of this error, the cci_cursor_update( ) function also did not operate normally. This error has been fixed.

^ Top of page

CUBRIDSUS-3137 Fixed getString( ) output value error of the JDBC driver for DATETIME type values

In the previous version, a millisecond value was not output when outputting a DATETIME type value by calling the getString( ) method in a JDBC driver. This error has been fixed.

^ Top of page

CUBRIDSUS-3457 Fixed malfunction of the cci_col_get() for collection type columns

In the previous version, if the cci_col_get( ) function is used for a collection type column, the application terminates abnormally or an incorrect result is returned. This error has been fixed.

^ Top of page

CUBRIDSUS-2225 Fixed the cubrid backupdb –sp option to work normally even when tab is used as a separator in the databases.txt

When executing the cubrid backupdb utility in the replication environment, specify –r option and –sp option together for safe deletion of an archive log after backup. In the earlier version, if the DB names and DB paths were separated by a tab instead of a space in the databases.txt file, the restoring script (repl_safe_page) specified as the parameter of -sp option could not get DB path information from the file. Therefore, the option is not used for backup. In this version, the option is used normally, even when tab is used as a separator.

^ Top of page

CUBRIDSUS-2221 Fixed to validate connection requests only allowed by the cub_master process

In the previous version, there was an error in which an invalid connection request would not be detected when an external process requests a connection to a port being used by the cub_master process. To cope with the stability problem that would result due to this, the protocol of the cub_master process has been improved so that invalid connection requests are terminated immediately.

^ Top of page

CUBRIDSUS-1199 Fixed an output error of specific values during broker status monitoring

In the previous version, when an arrow key was entered while monitoring the broker status information regularly by executing the cubrid broker status –s 5 <broker_name> command, QPS(Query per Second) and LQS(Long Query per Second) values would be output as a negative number.

^ Top of page

CUBRIDSUS-2019 Fixed an error that the process woud not be restarted if the memory size of the CAS process exceeded 2G

In the previous version, if the memory size of the CAS process exceeded 2G, the PSIZE value, one of the monitoring items would be output as a negative number, which cause the process to not restart. This error has been fixed.

^ Top of page

CUBRIDSUS-2047 Fixed an error in which the size of the temporary archive log increases infinitely if the setting is media_failure_support = no

The background_archiving parameter is one that creates a temporary archive log only when media_failure_support = yes. However, in the previous version, the background_archiving parameter would be applied even when media_failure_support = no, which would cause a problem in that the size of the temporary archive log file (lgar_t) increased infinitely. This error has been fixed.

^ Top of page

CUBRIDSUS-343 Fixed an error in reloading previous queries with more than 50 lines in the CSQL

In the previous version, when you executed a query with more than 50 lines in the CSQL Interpreter, and entered the Up arrow button to reload the previous query, the server process would terminate. This error has been fixed.

^ Top of page

CUBRIDSUS-600 Fixed an error that occurs when executing the CSQL session command ;edit in a Windows Vista environment

In the previous version, the ERROR: No such file or directory message would be displayed when you run the CSQL session command ;edit in a Windows Vista environment. This error has been fixed.

^ Top of page

CUBRIDSUS-1732, 3359 Fixed CUBRID installation error in a Windows 7 environment

Revision has been made so that a message window requesting the installation of the Microsoft Visual C++ 2008 Redistributable Package is not displayed while installing CUBRID in a Windows 7 environment. An error, which is installation is stopped as displaying an alert message of "ctrlService.exe is not running", has been fixed.

^ Top of page

CUBRIDSUS-471 Fixed an error in which the results of the execution of cubrid service stop/start commands are not reflected in the CUBRID tray in a Windows environment

In the previous version, if you executed a CUBRID service command such as cubrid service start/stop/restart in a Windows command lines, such command would not be reflected in the Windows service so that the status of the CUBRID tray does not change. This error has been fixed so that now the CUBRID service command entered is reflected normally in the Windows service.

^ Top of page

4. What's new in CUBRID Manager 2008 R3.0 version

^ Top of page

New Features

^ Top of page

Extended HA features

By using the CUBRID Manager, you can execute DML operations against a slave DB in HA environment and back it up as well. In the previous version, if a failover occurred due to the master server's fault, the CUBRID Manager would perform switchover to a slave server and the database operations would be reflected to the slave server regardless of the user's intention. This error has been fixed.

^ Top of page

New keywords and UI menu support for added statements

To enable the execution of new operators, functions and extended statements in the Query Editor of CUBRID Manager, new keywords and UI menus are supported. However, the UI menus are supported only for some specific functions related to schema change (TRUNCATE TABLE, CREATE TABLE LIKE), and the menus are enabled only when you connect to CUBRID 2008 R3.0 or higher version.

Adding [TRUNCATE TABLE] and [Create Table Like] menu
Adding SET NULL foreign key option in the Create/Edit Table window

When setting up a foreign key in the Create/Edit Table window, you can set up the SET NULL option as a trigger operation for the update or deletion of a primary key.

Related document: CUBRID Manager> database> table

^ Top of page

Supporting user configuration in [Add Status Monitor]

In the [Status Monitor> Add Status Monitor] menu, you can set up chart title, figure shape, monitoring item, etc. and you can create the chart template you want.

Related document: CUBRID Manager> Status Monitor

^ Top of page

Changed and Enhanced Features

^ Top of page

Supporting configuration of remote broker host information when executing [New Query Editor]

When you select [Tool> New Query Editor] or [Toolbar> New Query Editor Icon], the database login window is displayed. You can now set up both database and broker information in this window, so entering Query Editor execution information becomes more convenient. However, the broker port can be changed only when the manager user account is admin. The default character set of a target database to execute a query is displayed. If you do not set up any character set, the character set of a system where CUBRID Manager is running is applied.

^ Top of page

Supporting user login function to [Query Automation]

When executing a specific query automatically by using [Job Automation> Query automation], the database user account and password are checked for execution authorization just before the query is executed. If user information is incorrect, the query is not executed automatically.

^ Top of page

Supporting equal sign to configure the parameter value of cm.conf

In the earlier version, only a space could be used as an identifier between parameter name and its value when configuring parameters in cm.conf. However, equal sign (“=”) can also be used in this version.

^ Top of page

Supporting an option to restore databases into a specific path

When restoring database in the [Restore Database] window, you can use [Restore Path] option to specify a directory where the restored database can be saved.

^ Top of page

Fixed errors

^ Top of page

Fixed an error in which all the tables are unloaded when executing [Unload database]

Even when you wanted to unload only some tables you selected by using the [Unload database] function, all of the tables would be unloaded. This error has been fixed.

^ Top of page

Fixed an error in which warning window for some query errors would be displayed repeatedly for subsequent queries

In the Query Editor, if multiple query statements are executed at the same time and there are errors with some queries, the warning window appears to ask if you want to continue the execution of the rest query statements. In the earlier version, the warning window would appear repeatedly for subsequent query errors even when the user selected [Do not ask next time]. This error has been fixed. Therefore, a query result is displayed only for a normal query statement excluding query statements which have an error.

^ Top of page

Fixed an error in which you cannot stop retrieving when the retrieving result exceeds 5,000 in the Query Editor

The Query Editor retrieves records in the unit of 5,000. If the retrieved records exceed 5,000, a warning window appears that allows you to select "continue" or "stop." In the earlier version, all the result records would be displayed even when you selected [No]. This error has been fixed.

^ Top of page

Fixed an error in which the CUBRID Manager would not terminate in a specific situation

If you use the CUBRID Manager for a long time, the manager stop button () would stop working in the earlier version. This error has been fixed.

^ Top of page

Fixed an error in which query result would be returned abnormally in the Query Editor in a JDK 1.5 environment

An error in which the java/sql/NClob not found message is displayed when executing a query by using the Query Manager's Query Editor in a JDK 1.5 environment has been fixed.

^ Top of page

5. Caution

^ Top of page

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

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 version. 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 –incorrect

URL=jdbc:CUBRID:127.0.0.1:31000:db1:::?althosts=127.0.0.2:31000,127.0.0.3:31000 –correct

^ Top of page

CUBRIDSUS-3564 Changed a protocol between the master and server processes and different port number must be configured if two versions are running at the same time

Due to the change of the communication protocol between the master and server processes, a master process of the CUBRID 2008 R3.0 version cannot communicate with one of a lower version and vice versa. 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 parameter in cubrid.conf so that different ports are used for each version.

^ Top of page

CUBRIDSUS-2828 @ cannot be included in the database name

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

^ Top of page

CUBRIDSUS-3267 An empty space cannot be included in a directory path in a Windows environment

In the Windows environment, if the directory path where the CUBRID is to be installed has an empty space, installation may not be successful. An empty space cannot be included in the target directory paths of DB unload/load/backup operations.

^ Top of page

CUBRIDSUS-3553 An error related manager server process occurs when building CUBRID source only

When installing CUBRID by building the source, the user must build and install CUBRID and CUBRID Manager, respectively. If you check-out the CUBRID source only and run CUBRID service or CUBRID Manager, the cubrid manager server is not installed error occurs.

^ Top of page

Caution when selecting the [Using automatic volume addition] option and creating a database in CUBRID Manager

The [Using automatic volume addition] option automatically adds a volume when DB volume goes below the user-defined “Out of Space warning rate". If this option is used, the cubrid spacedb utility is periodically (default: 5 sec.) executed to monitor free space, and the size of an error log (_spacedb.err) may be increased. The user can adjust the monitoring interval by setting up the monitor_interval parameter in the cm.conf file.

CUBRID is Free. Download Now.