Alter rename cores mxosrvr at ExHbaseAccessTcb::setupUniqueKeyAndCols()
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Trafodion |
In Progress
|
Critical
|
Suresh Subbiah |
Bug Description
This core was seen several times when running the following sequence of commands. This problem can’t always be reproduced, but when it occurred, it always happened with the same statement and the cores all showed the same stack.
This is seen on the v1119_0830 build installed on a 4-node cluster. It is a regression introduced between the v1108_0830 build and the v1119_0830 build.
-------
Here is the stack of the core files:
#0 0x00007ffff527f8a5 in raise () from /lib64/libc.so.6
#1 0x00007ffff528100d in abort () from /lib64/libc.so.6
#2 0x00007ffff6388a55 in os::abort(bool) ()
from /usr/java/
#3 0x00007ffff6508f87 in VMError:
from /usr/java/
#4 0x00007ffff638d96f in JVM_handle_
from /usr/java/
#5 <signal handler called>
#6 0x00007ffff3743a61 in ExHbaseAccessTc
this=
#7 0x00007ffff374ee5b in ExHbaseAccessSQ
at ../executor/
#8 0x00007ffff37613c3 in ExScheduler::work (this=0x7fffce1
prevWaitTim
#9 0x00007ffff36d3542 in ex_root_
cliGlobals=
diagsArea=
#10 0x00007ffff49c991c in CliStatement:
cliGlobals=
diagsArea=
fixupOnly=0, cliflags=0) at ../cli/
#11 0x00007ffff498c22a in SQLCLI_
, SQLDESC_ID *, SQLDESC_ID *, Lng32, Lng32, typedef __va_list_tag __va_list_tag *, SQLCLI_PTR_PAIRS *, SQLCLI_PTR_PAIRS *) (cliGlobals=
statement_
output_
ap=
at ../cli/Cli.cpp:3278
#12 0x00007ffff498cf52 in SQLCLI_
cliGlobals=
input_
num_
ptr_
#13 0x00007ffff49d5ca5 in SQL_EXEC_Exec (statement_
input_
at ../cli/
#14 0x00007ffff3710bd1 in ExeCliInterface
inputBuf=<value optimized out>, inputBufLen=<value optimized out>)
at ../executor/
#15 0x00007ffff37144c5 in ExeCliInterface
this=
outputBufLe
at ../executor/
#16 0x00007ffff371744c in ExeCliInterface
this=
stmtStr=
nullTermina
at ../executor/
#17 0x00007ffff01b9264 in CmpSeabaseDDL:
this=
objUID=
schName=<value optimized out>, objName=<value optimized out>)
at ../sqlcomp/
#18 0x00007ffff01e9a1f in CmpSeabaseDDL:
this=
currCatName
at ../sqlcomp/
#19 0x00007ffff01daade in CmpSeabaseDDL:
this=
currCatName
at ../sqlcomp/
#20 0x00007fffedfb240a in CmpStatement:
statement=
#21 0x00007fffedfa82d8 in CmpContext:
data=
charset=15, op=CmpMessageOb
gen_
diagsArea=
#22 0x00007ffff36954f0 in ExDDLTcb::work (this=0x7fffe31
at ../executor/
#23 0x00007ffff37613c3 in ExScheduler::work (this=0x7fffe31
prevWaitTim
#24 0x00007ffff36d3542 in ex_root_
cliGlobals=
diagsArea=
#25 0x00007ffff49c991c in CliStatement:
cliGlobals=
diagsArea=
fixupOnly=0, cliflags=0) at ../cli/
#26 0x00007ffff498c22a in SQLCLI_
statement_
num_
input_
#27 0x00007ffff49d4f55 in SQL_EXEC_
statement_
num_
at ../cli/
#28 0x00007ffff6e79b0f in SRVR::WSQL_
statement_
output_
num_
num_
num_
#29 0x00007ffff6e7044f in SRVR::EXECUTE2 (pSrvrStmt=
at sqlinterface.
#30 0x00007ffff6ea0a45 in odbc_SQLSvc_
objtag_=<value optimized out>, call_id_=<value optimized out>,
dialogueId=
queryTimeou
sqlStmtType=0, stmtHandle=
cursorChars
returnCode=
sqlWarningO
outValuesLe
at srvrothers.cpp:1514
#31 0x00000000004d2685 in odbc_SQLSrvr_
call_
stmtLabel=
stmtExplain
sqlString=
at SrvrConnect.
#32 0x00000000004a1a36 in SQLEXECUTE_
call_
#33 0x00000000004a1ae4 in DISPATCH_
call_
at Interface/
#34 0x0000000000432a02 in BUILD_TCPIP_REQUEST (pnode=0x31c8ce0)
at ../Common/
#35 0x000000000043339d in PROCESS_
at ../Common/
#36 0x0000000000470ad6 in CNSKListenerSrv
at Interface/
#37 0x00007ffff50329f0 in sb_thread_sthr_disp (pp_arg=0xf13020)
at threadl.cpp:253
#38 0x00007ffff4bf9851 in start_thread () from /lib64/
#39 0x00007ffff533590d in clone () from /lib64/libc.so.6
-------
Here is the execution output from trafci. The last ‘alter table tab_emp_original_01 rename to tab_emp_new_01;’ statement cored mxosrvr and caused trafci to lose its connection whenever the problem was seen:
SQL>drop schema trafodion.
--- SQL operation complete.
SQL>create schema trafodion.
--- SQL operation complete.
SQL>set schema trafodion.
--- SQL operation complete.
SQL>set nametype ansi;
--- SQL operation complete.
SQL>create table tab_emp_original_01
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>create table tab_emp_original_02
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>create table tab_ten_original_03
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>create table tab_ten_original_04
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>create table tab_lrg_original_05
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>create table tab_lrg_original_06
(
sbin0_10 Numeric(18) signed,
char0_2 Character(8),
udec0_uniq Decimal(9) unsigned,
ubin0_uniq PIC 9(9) COMP,
sdec0_500 PIC S9(9),
varchar0_10 varchar(16),
varchar1_20 varchar(8),
sbin1_5000 Numeric(4) signed,
sdec1_4 Decimal(18) signed,
char1_4 Character(8)
)
no partition
location $DB0002
;
--- SQL operation complete.
SQL>insert into tab_ten_original_03 values (1,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (2,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (3,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (4,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (5,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (6,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (7,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (8,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (9,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_03 values (10,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (1,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (2,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (3,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (4,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (5,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (6,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (7,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (8,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (9,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>insert into tab_ten_original_04 values (10,'ABCDEFGH'
--- 1 row(s) inserted.
SQL>upsert using load into trafodion.
--- SQL operation complete.
SQL>select count(*) from tab_lrg_
(EXPR)
-------
--- 1 row(s) selected.
SQL>update statistics for table tab_lrg_original_05 on every column;
--- SQL operation complete.
SQL>upsert using load into trafodion.
--- SQL operation complete.
SQL>select count(*) from tab_lrg_
(EXPR)
-------
--- 1 row(s) selected.
SQL>update statistics for table tab_lrg_original_06 on every column;
--- SQL operation complete.
-------
== TEST: tcase.test001
-------
SQL>select * from tab_emp_
--- 0 row(s) selected.
SQL>showddl tab_emp_
CREATE TABLE TRAFODION.
(
SBIN0_10 NUMERIC(18, 0) DEFAULT NULL
, CHAR0_2 CHAR(8) CHARACTER SET ISO88591 COLLATE
DEFAULT DEFAULT NULL
, UDEC0_UNIQ DECIMAL(9, 0) UNSIGNED DEFAULT NULL
, UBIN0_UNIQ NUMERIC(9, 0) UNSIGNED DEFAULT NULL
, SDEC0_500 DECIMAL(9, 0) DEFAULT NULL
, VARCHAR0_10 VARCHAR(16) CHARACTER SET ISO88591 COLLATE
DEFAULT DEFAULT NULL
, VARCHAR1_20 VARCHAR(8) CHARACTER SET ISO88591 COLLATE
DEFAULT DEFAULT NULL
, SBIN1_5000 NUMERIC(4, 0) DEFAULT NULL
, SDEC1_4 DECIMAL(18, 0) DEFAULT NULL
, CHAR1_4 CHAR(8) CHARACTER SET ISO88591 COLLATE
DEFAULT DEFAULT NULL
)
;
--- SQL operation complete.
SQL>alter table tab_emp_original_01 rename to tab_emp_new_01;
*** ERROR[1] The message id: problem_
*** ERROR[1] The message id: header_
*** ERROR[1] The message id: problem_
*** ERROR[1] The message id: header_
Changed in trafodion: | |
assignee: | nobody → Justin Du (justin-du-2) |
Changed in trafodion: | |
milestone: | none → r1.1 |
Changed in trafodion: | |
assignee: | QF Chen (qifan-chen) → Anoop Sharma (anoop-sharma) |
Changed in trafodion: | |
assignee: | Anoop Sharma (anoop-sharma) → Selvaganesan Govindarajan (selva-ganesan) |
Changed in trafodion: | |
milestone: | r1.1 → r2.0 |
Looked at few cores for this bug and they all failed due to the same cause: at frame #6 ExHbaseAccess: :keySubsetExeEx pr_ was null.
The keySubsetExeExpr_ is constructed at the runtime based on ComTdbHbaseAcce ss::keyInfo_ , but that field was null too.
executor/ ExHbaseAccess. cpp: .keySubsetGen( )) >getSpace( )) Ex(*hbaseAccess Tdb.keySubsetGe n(), de(), this);
268 keySubsetExeExpr_ = NULL;
269 keyMdamExeExpr_ = NULL;
270 if (hbaseAccessTdb
271 {
272 // this constructor will also do the fixups of underlying expressi ons
273 keySubsetExeExpr_ = new(glob-
274 keySingleSubset
275 1, // version 1
276 pool_,
277 getGlobals(),
278 getExpressionMo
279 }
comexe/ ComTdbHbaseAcce ss.h: ->castToKeySing leSubsetGen( ) ? ->castToKeySing leSubsetGen( ) :
472 keySingleSubsetGen * keySubsetGen() const
473 {
474 return
475 (keyInfo_ && keyInfo_
476 keyInfo_
477 NULL);
478 }
479
(gdb) p this->keySubset ExeExpr_
$1 = (keySingleSubsetEx *) 0x0
(gdb) p ((ComTdbHbaseAc cess*)0x7fffbe4 e6e58)- >keyInfo_
$4 = {{ptr_ = 0x0, offset_ = 0}}
The query executed was like: \"_MD_\ ".OBJECTS set catalog_name = 'TRAFODION', schema_name = 'ALTER_ RENAME_ RENAME21' , object_name = 'TAB_EMP_NEW_01' where object_uid = 158802970814398584;
update TRAFODION.
The objects meta data table has an index based on object_uid. If we use index in the plan, we should not use key subset scan.
Could this be a problem of inconsistent plan?