ALTIBASE HDB 6.1.1.0.4 Patch Notes Sept. 18, 2012
Table of Contents BUG-34050 Server may crash while restart because of existing prepared transactions on distributed transaction environment. 3 BUG-34051 Server doesn t check maximum number of property setting that allows multiple settings. 3 BUG-34094 ALTIBASE JDBC Applications may show symptoms similar to memory leaks if they uses ALTIBASE JDBC classes with finalizer() method implemented. 3 BUG-34115 Server or replication sender may be terminated unexpectedly if two or more replication senders use same replication log buffer. 3 BUG-34134 Installer doesn t check ALTIBASE HDB server process of user name altibase 4 BUG-34141 ALTIBASE Preprocessor APRE cannot recognize consecutive string literals spanned multiple lines. 4 BUG-34144 The direct path data utilities including dumpdp and convdp are terminated unexpectedly. 4 BUG-34145 APRE s parsing error message is improved. 4 BUG-34187 Server returns errors for using slashes and backslashes together to specify file paths on Windows platforms. 5 BUG-34206 SELECT statement returns additional unexpected columns if SELECT statement has two or more functions in PIVOT clause. 5 BUG-34208 IOException from JDBC Applications need to print low level call stack to help debugging. 6 BUG-34231 The pseudo columns such as LEVEL, ROWNUM, and SYSDATE cannot be used as column names of tables and views even if they are enclosed by double quotes. 6 BUG-34234 A property for setting default data types of host variables at target column clause of SELECT statement is added. 7 BUG-34238 SEGMENT is an internal APRE keyword and cannot be used as a column name. 7 BUG-34240 Server crash if GATHER_INDEX_STATS() procedure is called with the sampling percentage bigger than 1.0. 8 BUG-34261 Server crashes because of incorrectly used a member variable of Binary type internal representation. 8 BUG-34282 The length of user password is doubled. 8 BUG-34288 A subquery cannot be used at IF EXISTS() statement of PSM. 9 BUG-34316 GIVE_UP_TIME and GIVE_UP_XSN columns of SYS_REPLICATIONS_ system table are not reset for server restart. 10 BUG-34327 SQLDescribeParam() function is improved to process LIKE conditions. 10 2/10
BUG-34050 Server may crash while restart because of existing prepared transactions on distributed transaction environment. - Module: sm-disk-page - Category: Fatal - Reproducibility: Rare - Symptoms: ALTIBASE HDB resets UNDO segments as a part of normal startup process. If any prepared XA transactions found in startup process, the server doesn t reset the UNDO segments, but reuse them. This attempts to reuse UNDO page that is not valid causes server to crash. - Workaround: Please don t execute server restart if there are prepared XA transactions. CF. To see if prepared XA transaction exists: select count(*) from v$statement where state='prepared'; BUG-34051 Server doesn t check maximum number of property setting that allows multiple settings. - Module: mm - Category: Memory Error The maximum number of MEM_DB_DIR property is 8. If there are 10 MEM_DB_DIR properties, then server fails to startup. - Symptoms: Some properties of altibase.properties can be set multiple times, but they have maximum number of times. If one of those property is used over the maximum number, then server crash during startup. BUG-34094 ALTIBASE JDBC Applications may show symptoms similar to memory leaks if they uses ALTIBASE JDBC classes with finalizer() method implemented. - Module: mm-jdbc - Category: Memory Error - Symptoms: finalizer() method delays JVM GC. There are some ALTIBASE JDBC classes that implemented the method. The Java application that uses lots of those classes shows memory leak symptoms. BUG-34115 Server or replication sender may be terminated unexpectedly if two or more replication senders use same replication log buffer. 3/10
- Module: rp-control - Reproducibility: Rare The crash can be reproduced by following conditions: 1. Two or more replication senders are reading replication log buffer. 2. There are many on-going transactions. 3. The server hardware is equipped with many CPU (core), and many service thread and replication are working in ALTIBASE HDB. - Symptoms: Server or replication sender may be terminated unexpectedly if two or more replication senders are reading same replication log buffer, and the server is processing many transactions. - Workaround: Server won t crash if only one replication sender is working. BUG-34134 Installer doesn t check ALTIBASE HDB server process of user name altibase - Module: ETC - Symptoms: Installer checks whether any ALTIBASE HDB server process is running, and stops patching if it found running ALTIBASE HDB server process for same user account. The logic has a flaw and cannot detect correctly if installer is running by user altibase and other user is running the server process. BUG-34141 ALTIBASE Preprocessor APRE cannot recognize consecutive string literals spanned multiple lines. - Module: ux-apre - Symptoms: ALTIBASE Preprocessor APRE cannot recognize consecutive string literals spanned multiple lines. BUG-34144 The direct path data utilities including dumpdp and convdp are terminated unexpectedly. - Module: sm-util - Category: Fatal - Symptoms: The direct path data utilities including dumpdp and convdp are terminated unexpectedly because of problems with initialization and finalization of memory manager library. BUG-34145 APRE s parsing error message is improved. - Module: ux-apre - Category: Usability - Symptoms: A simple APRE parsing error message parse error doesn t help to debug problems. Now parsing error messages will print token information to help developers. - Changes: 4/10
BEFORE AFTER [ERR-000H : parse error] File : GIDBLib.sc Line : 175 Offset: 16-74 Error_token:"RC,TC,TO_NUMBER(FLAG017),RTRIM(DESCRIPTION), UPDATE_FLAG " [ERR-000H : syntax error, unexpected C_STRING_LITERAL, expecting ')' or ','] File : GIDBLib.sc Line : 593 Offset: 6-46 Error_token:"SrcCallNo (%s) DestCID(%s) MsgID(%s) \n" BUG-34187 Server returns errors for using slashes and backslashes together to specify file paths on Windows platforms. - Module: sm-mem-recovery - Category: Functionality - Symptoms: Windows itself support slashes (/) and backslashes (\) to specify paths. However, ALTIBASE HDB uses naïve string comparison, so the using inconsistent slashes and backslashes returns errors. BUG-34206 SELECT statement returns additional unexpected columns if SELECT statement has two or more functions in PIVOT clause. - Module: qx create table t1(i1 integer, i2 varchar(10), i3 integer); insert into t1 values (1, 'alti', 1); insert into t1 values (1, 'base', 1); insert into t1 values (2, 'alti', 1); insert into t1 values (2, 'base', 1); insert into t1 values (3, 'alti', 1); insert into t1 values (3, 'base', 1); insert into t1 values (4, 'alti', 1); insert into t1 values (5, 'alti', 1); select * from (select i1,i2,i3 from t1) pivot( sum(i1) as sum_i1, sum(i3) as sum_i3 for i2 in('alti') ); Actual (BEFORE) I1 'alti'_sum_i1 'alti'_sum_i3 ---------------------------------------------------------- 1 1 1 2 2 1 3 3 1 4 4 1 5 5 1 5 rows selected. Expected 'alti'_sum_i1 'alti'_sum_i3 5/10
(AFTER) --------------------------------------------- 15 5 1 row selected. - Symptoms: SELECT statement returns additional unexpected columns if SELECT statement has two or more functions in PIVOT clause. BUG-34208 IOException from JDBC Applications need to print low level call stack to help debugging. - Module: mm-jdbc - Category: Maintainability - Symptoms: IOException can be resulted from failures of socket connect, recv, and send calls. This IOException should print low level call stack for developers. - Changes: ERROR MESSAGE : Client unable to establish connection java.sql.sqlexception: Client unable to establish connection at Altibase.jdbc.driver.ex.exception(ex.java:73) at Altibase.jdbc.driver.cmnTCP.connectByHostName(cmnTCP.java:223) at Altibase.jdbc.driver.cmnTCP.connect(cmnTCP.java:144) at Altibase.jdbc.driver.cmp.connect(cmp.java:710) at Altibase.jdbc.driver.ABConnection.connect(ABConnection.java:486) at Altibase.jdbc.driver.ABConnection.<init>(ABConnection.java:212) at Altibase.jdbc.driver.AltibaseDriver.connect(AltibaseDriver.java:235) at java.sql.drivermanager.getconnection(drivermanager.java:525) at java.sql.drivermanager.getconnection(drivermanager.java:140) at test2.main(test2.java:112) Caused by: java.net.connectexception: Connection refused at sun.nio.ch.net.connect(native Method) at sun.nio.ch.socketchannelimpl.connect(socketchannelimpl.java:464) at sun.nio.ch.socketadaptor.connect(socketadaptor.java:81) at Altibase.jdbc.driver.cmnTCP.connectByHostName(cmnTCP.java:209)... 8 more BUG-34231 The pseudo columns such as LEVEL, ROWNUM, and SYSDATE cannot be used as column names of tables and views even if they are enclosed by double quotes. - Module: qp-select-pvo select * from ( select 1 "LEVEL" from dual ) v1; Actual s isql> select * from ( select 1 "LEVEL" from dual ) v1; [ERR-311BC : "LEVEL" cannot be used as an alias name. ] Expected s isql> select * from ( select 1 "LEVEL" from dual ) v1; LEVEL -------------- 1 1 row selected. 6/10
- Symptoms: The pseudo columns cannot be used as column names of tables and views even if they are enclosed by double quotes. After this bug fix, even pseudo columns can be used as column names of tables and views if they are enclosed by double quotes. BUG-34234 A property for setting default data types of host variables at target column clause of SELECT statement is added. - Module: qp-select-pvo Place a parameter marker at the target column clause of a SELECT statement as shown below: select? from dual; Actual (BEFORE) Expected (AFTER) isql> prepare select :v1 from dual; [ERR-3123B : Invalid use of host variables 0001 : select :v1 from DUAL ^ ^ ] isql> prepare select :v1 from dual; :v1 ----------------------- 1 1 row selected. - Symptoms: Server cannot decide accurate column types of host variables at target column clause of SELECT statement before actually executing the statement. It usually returns as VARCHAR type, and this behavior sometime causes problems regarding national character set. To accommodate such situation, a property for setting default data types of host variables at target column clause of SELECT statement is added. - Changes: COERCE_HOST_VAR_IN_SELECT_LIST_TO_VARCHAR property is added:. COERCE_HOST_VAR_IN_SELECT_LIST_TO_VARCHAR # 0: disable # 1~32000: varchar precision This property allows host variables to be used as target columns of SELECT statement without CAST() operator. Default value of this property is 0, and server will generate errors if the host variables are used without CAST() operator. If this property is any integer larger than 0, then the target columns are regarded as VARCHAR type columns with the specified precision. - Workaround: CAST() operator can set output data type. BUG-34238 SEGMENT is an internal APRE keyword and cannot be used as a column name. 7/10
- Module: ux-apre - Category: Usability - Symptoms: APRE reserves SEGMENT word as internal keyword and generates a parsing error if the word is used as a column name at the embedded SQL source files. BUG-34240 Server crash if GATHER_INDEX_STATS() procedure is called with the sampling percentage bigger than 1.0. - Module: sm_interface - Category: Fatal Execute following command from isql: GATHER_INDEX_STATS ('SYS', 'T1_IDX', 2.0); - Symptoms: GATHER_INDEX_STATS() procedure is used to gather index statistics. Its third argument represent the estimated percentage, and the range is from 0 to 1.0. If the procedure is executed with the third argument bigger than 1.0, then server crash. BUG-34261 Server crashes because of incorrectly used a member variable of Binary type internal representation. - Module: mt-datatype - Category: Fatal Create a disk hash temporary table with binary types. - Symptoms: While executing a query, server can create a disk hash temporary table to store temporary results. There is a member variable of Binary type internal representation being used incorrectly. This bug causes server to crash if the disk hash temporary table contains binary types. BUG-34282 The length of user password is doubled. - Module: qp-meta - Category: Functionality create user user1 identified by a23456789; Actual (BEFORE) Expected (AFTER) isql> create user user1 identified by a23456789; [ERR-3118B : The length of the name exceeds the maximum limit. 0001 : create user USER1 identified by A23456789 ^ ^ ] isql> create user user1 identified by a23456789; Create success. - Symptoms: DBA cannot create a user with password size longer 8 bytes. - Changes: The length of user password id doubled. 8/10
BEFORE: 8 bytes for Windows, 11 bytes for Solaris AFTER: 16 bytes for Windows, 22 bytes for Solaris BUG-34288 A subquery cannot be used at IF EXISTS() statement of PSM. - Module: qp-psm-trigger-pvo - Category: Functionality create procedure proc1 as begin if exists (select * from dual) then println( 'exist!!' ); end if; end; / exec proc1; Actual (BEFORE) isql> create procedure proc1 2 as 3 begin 4 if exists (select * from dual) then 5 println( 'exist!!' ); 6 end if; 7 end; 8 / [ERR-31185 : A subquery is not allowed here. In PROC1 0004 : if exists (select * from DUAL) then ^ ^ ] Expected (AFTER) isql> create procedure proc1 2 as 3 begin 4 if exists (select * from dual) then 5 println( 'exist!!' ); 6 end if; 7 end; 8 / create success execute success - Symptoms: A subquery cannot be used at IF EXISTS() statement of PSM. - Changes: Following statement syntaxes are added for PSM: - IF EXISTS (subquery) - IF NOT EXISTS (subquery) - ELSEIF EXISTS (subquery) - ELSEIF NOT EXISTS (subquery) - ELSEIF EXISTS (subquery) - ELSEIF NOT EXISTS (subquery) 9/10
- CASE WHEN EXISTS (subquery) - CASE WHEN NOT EXISTS (subquery) - Workaround: The subquery should be executed and store the result before the IF statement. An example is as follow: create procedure proc1 as v1 integer; begin select count(*) into v1 from dual; if v1 > 0 then println( 'exist!!' ); end if; end; / exec proc1; BUG-34316 GIVE_UP_TIME and GIVE_UP_XSN columns of SYS_REPLICATIONS_ system table are not reset for server restart. - Module: rp-control - Category: Functionality - Symptoms: When any replication give up occur, it will be recorded at GIVE_UP_TIME and GIVE_UP_XSN columns of SYS_REPLICATIONS_ system table. These values are reset by ALTER REPLICATION RESET statement only. These values are not automatically reset for SYNC start, and that gives DBAs a wrong impression that SYNC had not been started. After executing SYNC / SYNC ONLY / QUICKSTART, GIVE_UP columns must be reset. Note. How to check GIVE_UP_TIME column: isql> select to_char(give_up_time, 'yyyy-mm-dd hh:mi:ss' ) from system_.sys_replications_; TO_CHAR(GIVE_UP_TIME, 'yyyy-mm-dd hh:mi:ss : 2012-07-16 17:04:44 1 row selected. BUG-34327 SQLDescribeParam() function is improved to process LIKE conditions. - Module: qp-non_select - Category: Functionality create table t1(i1 nvarchar(3)); prepare select 1 from t1 where i1 like?; [describeparam, bind] - Symptoms: Server always returns VARCHAR(32000) as a column type for parameter marked columns of prepared SQL statement even though they may not always correct. The correct column types for parameter marked columns are set when the prepared statement is actually being executed. This default behavior causes problems if LIKE conditions and parameter markers are used for NCHAR and NVARCHAR types. These NCHAR and NVARCHAR types are converted to VARCHAR type which corrupts data. 10/10