Table salted with a float key can’t be invoked or dropped
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Trafodion |
Fix Released
|
High
|
Hans Zeller |
Bug Description
When a table was created using salt with a float key, the table creation operation was completed successfully. But the table couldn’t be invoked, nor could it be dropped. The invoke statement returned error 1120 and the drop statement returned error 1389. The following output shows that td1 was created using salt with a float key and the errors from invoke and drop. Sd1 was created with the same ddl except for the salting. Invoke and drop work fine on sd1.
This is seen on the datalake v40174 build installed on a workstation.
>>set schema mytest;
--- SQL operation complete.
>>create table td1 (a largeint not null, b smallint not null, c float(10) not null, d double precision) store by (a, b, c) salt using 2 partitions on (c, b);
--- SQL operation complete.
>>invoke td1;
*** ERROR[1120] Use of float datatype in a partitioning key is not allowed.
--- SQL operation failed with errors.
>>drop table td1;
*** ERROR[1389] Object TRAFODION.
>>create table sd1 (a largeint not null, b smallint not null, c float(10) not null, d double precision) store by (a, b, c);
--- SQL operation complete.
>>invoke sd1;
-- Definition of Trafodion table TRAFODION.
-- Definition current Fri May 9 03:49:04 2014
(
SYSKEY LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
, A LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
, B SMALLINT NO DEFAULT NOT NULL NOT DROPPABLE
, C DOUBLE PRECISION NO DEFAULT NOT NULL NOT
DROPPABLE
, D DOUBLE PRECISION DEFAULT NULL
)
--- SQL operation complete.
>>drop table sd1;
--- SQL operation complete.
Changed in trafodion: | |
assignee: | nobody → Anoop Sharma (anoop-sharma) |
status: | New → In Progress |
information type: | Proprietary → Public |
Changed in trafodion: | |
status: | New → In Progress |
Changed in trafodion: | |
status: | In Progress → Fix Committed |
We will disable the DDL to create a table that is salted on a floating point value because that could potentially cause data corruption. SeaQuest also doesn't allow float as a partitioning key. The DDL will return this error with the fix:
*** ERROR[1120] Use of float datatype in a partitioning key or salt clause is not allowed.