[ 
https://issues.apache.org/jira/browse/TRAFODION-1424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14654492#comment-14654492
 ] 

Suresh Subbiah commented on TRAFODION-1424:
-------------------------------------------

Further changes made to 

a) disable this change when the table is of regular format AND has added 
columns.
b) Use reduced size of row for regular format tables also, after the convert 
expr has been applied
c) When creating hbase filter use the exploded format in tuple desc. Otherwise 
thefilter does not work correctly.

Change can be disabled with cqd COMPRESSED_INTERNAL_FORMAT 'OFF' ;

Note that this change applied to (a) regular format Trafodion tables (b) 
aligned format Trafodion tables and (c) native HBase tables accessed through 
Trafodion in either _CELL_ or _ROW_ form.

In the following showplan outputs note that the Tuple Data Format is 
SQLMX_ALIGNED_FORMAT in the result of convert expr clauses. That can be used to 
verify that the change has kicked in. Otherwise those clauses will will have a 
result of SQLARK_EXPLODED_FORMAT.

create table t_regular(a int, b varchar(1000)) ;
create table t_aligned(a int, b varchar(1000)) attributes aligned format;

showplan select * from t_regular ;

For ComTdbHbaseAccess :
accessType_ = SELECT_
accessDetail_ = EX_TRAF_SELECT
tableName_ = TRAFODION.REGRESS.T_REGULAR
asciiTI_ = 4, convertTI_ = 2, rowIdTI_ = 3, returnedTI_ = 2
rowIdAsciiTI_ = 5, updateTI_ = 0, mergeInsertTI_ = 0
returnedFetchedTI_ = 0, returnedUpdatedTI_ = 0, mergeInsertRowIdTI_ = 0
hbaseTimestampTI_ = 0, hbaseVersionTI_ = 0
asciiRowLen_ = 1020, convertRowLen_ = 1032, rowIdLen_ = 8, outputRowLen_ = 1032
updateRowLen_ = 0, returnFetchedRowLen_ = 0, returnUpdateedRowLen_ = 0
mergeInsertRowLen_ = 0, keyLen_ = 0
Flag = 0000000000000100
....

# of Expressions = 15

Expression: Convert Expr
Expr Len: 632, Consts Len: 8
flags_ = 0000000010001000
  Clause #1: ex_function_clause
    OperatorTypeEnum = ITM_HEADER(2375), NumOperands = 1
    ex_clause::flags_ = 0000000010000000
    ex_function_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_F_ASCII(0), Length = 16, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 0, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 0
      Text = Hdr

  Clause #2: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 16, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 30
      Text = cast

    Operand #1:
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 0, NullIndOffset = -1, VClenIndOffset = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 29
      Text = LARGEINT

  Clause #3: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000110
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 24, NullIndOffset = 12, VClenIndOffset = -1
      RelOffset = 8, VoaOffset = -1, NullBitIdx = 0
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 32
      Text = cast

    Operand #1:
      Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 12, NullIndOffset = 8, VClenIndOffset = -1
      NullIndLength = 2, VClenIndLength = 0
      ValueId = 31
      Text = INTEGER SIGNED

  Clause #4: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000110
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 1
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 32, NullIndOffset = 12, VClenIndOffset = 28
      RelOffset = 0, VoaOffset = 8, NullBitIdx = 1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 34
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 1
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 20, NullIndOffset = 16, VClenIndOffset = 18
      NullIndLength = 2, VClenIndLength = 2
      ValueId = 33
      Text = VARCHAR(1000) CHARACTER SET ISO88591

  PCode:

...

Expression: ScanExpr is NULL



showplan select * from t_aligned ;



For ComTdbHbaseAccess :
accessType_ = SELECT_
accessDetail_ = EX_TRAF_SELECT
tableName_ = TRAFODION.REGRESS.T_ALIGNED
asciiTI_ = 4, convertTI_ = 2, rowIdTI_ = 3, returnedTI_ = 2
rowIdAsciiTI_ = 5, updateTI_ = 0, mergeInsertTI_ = 0
returnedFetchedTI_ = 0, returnedUpdatedTI_ = 0, mergeInsertRowIdTI_ = 0
hbaseTimestampTI_ = 0, hbaseVersionTI_ = 0
asciiRowLen_ = 1032, convertRowLen_ = 1032, rowIdLen_ = 8, outputRowLen_ = 1032
updateRowLen_ = 0, returnFetchedRowLen_ = 0, returnUpdateedRowLen_ = 0
mergeInsertRowLen_ = 0, keyLen_ = 0
Flag = 0100000000000100
...

# of Expressions = 15

Expression: Convert Expr
Expr Len: 632, Consts Len: 8
flags_ = 0000000010001000
  Clause #1: ex_function_clause
    OperatorTypeEnum = ITM_HEADER(2375), NumOperands = 1
    ex_clause::flags_ = 0000000010000000
    ex_function_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_F_ASCII(0), Length = 16, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 0, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 0
      Text = Hdr

  Clause #2: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 16, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 30
      Text = cast

    Operand #1:
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 16, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 29
      Text = LARGEINT

  Clause #3: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000110
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 24, NullIndOffset = 12, VClenIndOffset = -1
      RelOffset = 8, VoaOffset = -1, NullBitIdx = 0
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 32
      Text = cast

    Operand #1:
      Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 24, NullIndOffset = 12, VClenIndOffset = -1
      RelOffset = 8, VoaOffset = -1, NullBitIdx = 0
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 31
      Text = INTEGER SIGNED

  Clause #4: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000110
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 1
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 32, NullIndOffset = 12, VClenIndOffset = 28
      RelOffset = 0, VoaOffset = 8, NullBitIdx = 1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 34
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 1
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 32, NullIndOffset = 12, VClenIndOffset = 28
      RelOffset = 0, VoaOffset = 8, NullBitIdx = 1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 33
      Text = VARCHAR(1000) CHARACTER SET ISO88591

  PCode:

...

Expression: ScanExpr is NULL

showplan select * from hbase."_CELL_"."TRAFODION.REGRESS.T_REGULAR" ;

For ComTdbHbaseAccess :
accessType_ = SELECT_
accessDetail_ = EX_HBASE_SELECT
tableName_ = TRAFODION.REGRESS.T_REGULAR
asciiTI_ = 4, convertTI_ = 2, rowIdTI_ = 3, returnedTI_ = 2
rowIdAsciiTI_ = 5, updateTI_ = 0, mergeInsertTI_ = 0
returnedFetchedTI_ = 0, returnedUpdatedTI_ = 0, mergeInsertRowIdTI_ = 0
hbaseTimestampTI_ = 0, hbaseVersionTI_ = 0
asciiRowLen_ = 1322, convertRowLen_ = 1348, rowIdLen_ = 103, outputRowLen_ = 
1348
updateRowLen_ = 0, returnFetchedRowLen_ = 0, returnUpdateedRowLen_ = 0
mergeInsertRowLen_ = 0, keyLen_ = 0
Flag = 0000000000000000
...

# of Expressions = 15

Expression: Convert Expr
Expr Len: 584, Consts Len: 8
flags_ = 0000000010001000
  Clause #1: ex_function_clause
    OperatorTypeEnum = ITM_HEADER(2375), NumOperands = 1
    ex_clause::flags_ = 0000000010000000
    ex_function_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_F_ASCII(0), Length = 24, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 0, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 0
      Text = Hdr

  Clause #2: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 36, NullIndOffset = -1, VClenIndOffset = 32
      RelOffset = 0, VoaOffset = 8, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 43
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 2, NullIndOffset = -1, VClenIndOffset = 0
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 42
      Text = VARCHAR(100) CHARACTER SET ISO88591

  Clause #3: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = -1, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = 12, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 45
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 104, NullIndOffset = -1, VClenIndOffset = 102
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 44
      Text = VARCHAR(100) CHARACTER SET ISO88591

  Clause #4: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = -1, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = 16, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 47
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 206, NullIndOffset = -1, VClenIndOffset = 204
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 46
      Text = VARCHAR(100) CHARACTER SET ISO88591

  Clause #5: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 24, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 49
      Text = cast

    Operand #1:
      Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
      Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 312, NullIndOffset = -1, VClenIndOffset = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 48
      Text = LARGEINT

  Clause #6: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = -1, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = 20, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 51
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 1000, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 322, NullIndOffset = -1, VClenIndOffset = 320
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 50
      Text = VARCHAR(1000) CHARACTER SET ISO88591

  PCode: ...

Expression: ScanExpr is NULL

showplan select * from hbase."_ROW_"."TRAFODION.REGRESS.T_REGULAR" ;

For ComTdbHbaseAccess :
accessType_ = SELECT_
accessDetail_ = EX_HBASE_SELECT
tableName_ = TRAFODION.REGRESS.T_REGULAR
asciiTI_ = 4, convertTI_ = 2, rowIdTI_ = 3, returnedTI_ = 2
rowIdAsciiTI_ = 5, updateTI_ = 0, mergeInsertTI_ = 0
returnedFetchedTI_ = 0, returnedUpdatedTI_ = 0, mergeInsertRowIdTI_ = 0
hbaseTimestampTI_ = 0, hbaseVersionTI_ = 0
asciiRowLen_ = 10104, convertRowLen_ = 10124, rowIdLen_ = 103, outputRowLen_ = 
10124
updateRowLen_ = 0, returnFetchedRowLen_ = 0, returnUpdateedRowLen_ = 0
mergeInsertRowLen_ = 0, keyLen_ = 0
Flag = 0000000000000001
...

# of Expressions = 15

Expression: Convert Expr
Expr Len: 472, Consts Len: 8
flags_ = 0000000010001000
  Clause #1: ex_function_clause
    OperatorTypeEnum = ITM_HEADER(2375), NumOperands = 1
    ex_clause::flags_ = 0000000010000000
    ex_function_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_F_ASCII(0), Length = 16, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 0, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = -1, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 0
      ValueId = 0
      Text = Hdr

  Clause #2: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = 20, NullIndOffset = -1, VClenIndOffset = 16
      RelOffset = 0, VoaOffset = 8, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 22
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 2, NullIndOffset = -1, VClenIndOffset = 0
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 21
      Text = VARCHAR(100) CHARACTER SET ISO88591

  Clause #3: ex_conv_clause
    OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
    ex_clause::flags_ = 0000000010000000
    ex_conv_clause::flags_ = 0000000000000000
    PCODE  = supported
    Operand #0 (result):
      Datatype = REC_BYTE_V_ASCII(64), Length = 10000, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLMX_ALIGNED_FORMAT
      Atp = 1, AtpIndex = 2
      Offset = -1, NullIndOffset = -1, VClenIndOffset = -1
      RelOffset = 0, VoaOffset = 12, NullBitIdx = -1
      NullIndLength = 0, VClenIndLength = 4
      ValueId = 24
      Text = cast

    Operand #1:
      Datatype = REC_BYTE_V_ASCII(64), Length = 10000, Null Flag = 0
      Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
      Tuple Data Format = SQLARK_EXPLODED_FORMAT
      Atp = 1, AtpIndex = 4
      Offset = 104, NullIndOffset = -1, VClenIndOffset = 102
      NullIndLength = 0, VClenIndLength = 2
      ValueId = 23
      Text = VARCHAR(10000) CHARACTER SET ISO88591

  PCode: ...

Expression: ScanExpr is NULL




> Enable CIF (compressed internal format) for Trafodion scan operator
> -------------------------------------------------------------------
>
>                 Key: TRAFODION-1424
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-1424
>             Project: Apache Trafodion
>          Issue Type: Improvement
>          Components: sql-cmp, sql-exe
>    Affects Versions: 0.6 (pre-incubation)
>            Reporter: Suresh Subbiah
>            Assignee: Suresh Subbiah
>   Original Estimate: 168h
>  Remaining Estimate: 168h
>
> When varchar data is read from a Trafodion table by the scan operator it is 
> converted to exploded format by blank padding data to its maximum declared 
> length. A change contributed by Khaled Bouaziz extends Trafodion's compressed 
> internal format (CIF) feature to now include the Traf scan operator.
> Here is an email exchange with Khaled on this subject
> Hi Anoop:
> I made few changes to use CIF with traf scan 
> The changes are mostly for the the convert expression:
> -     Changed the row format of the convert row to aligned format
> -     Added code to use cif so that we only use the needed space
> If we can store the CIF row length with row when we insert/update that we can 
> bypass the convert expression I think.
> >>select * from testcif;   
> A            B
> -----------  
> ----------------------------------------------------------------------------------------------------
>           1  aaa                                                              
>                                    
>           1  bbbbb                                                            
>                                    
>           1  ccccccccccccc                                                    
>                                    
>           1  eeeeeeeeeeeeeeeeeeeeeeeeeeeeee                                   
>                                    
> --- 4 row(s) selected.
> >>fc                  
> Expression: Convert Expr
> Expr Len: 632, Consts Len: 8
> flags_ = 0000000010001000   
>   Clause #1: ex_function_clause
>     OperatorTypeEnum = ITM_HEADER(2375), NumOperands = 1
>     ex_clause::flags_ = 0000000010000000                
>     ex_function_clause::flags_ = 0000000000000000       
>     PCODE  = supported                                  
>     Operand #0 (result):                                
>       Datatype = REC_BYTE_F_ASCII(0), Length = 16, Null Flag = 0
>       Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 2                                             
>       Offset = 0, NullIndOffset = -1, VClenIndOffset = -1               
>       RelOffset = 0, VoaOffset = -1, NullBitIdx = -1                    
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 0                                                       
>       Text = Hdr                                                        
>   Clause #2: ex_conv_clause
>     OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
>     ex_clause::flags_ = 0000000010000000              
>     ex_conv_clause::flags_ = 0000000000000000         
>     PCODE  = supported                                
>     Operand #0 (result):                              
>       Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 2                                             
>       Offset = 16, NullIndOffset = -1, VClenIndOffset = -1              
>       RelOffset = 0, VoaOffset = -1, NullBitIdx = -1                    
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 30                                                      
>       Text = cast                                                       
>     Operand #1:
>       Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 4                                             
>       Offset = 16, NullIndOffset = -1, VClenIndOffset = -1              
>       RelOffset = 0, VoaOffset = -1, NullBitIdx = -1                    
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 29                                                      
>       Text = LARGEINT                                                   
>   Clause #3: ex_conv_clause
>     OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
>     ex_clause::flags_ = 0000000010000110              
>     ex_conv_clause::flags_ = 0000000000000000         
>     PCODE  = supported                                
>     Operand #0 (result):                              
>       Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 2                                             
>       Offset = 24, NullIndOffset = 12, VClenIndOffset = -1              
>       RelOffset = 8, VoaOffset = -1, NullBitIdx = 0                     
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 32                                                      
>       Text = cast                                                       
>     Operand #1:
>       Datatype = REC_BIN32_SIGNED(132), Length = 4, Null Flag = 1
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001001
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 4                                             
>       Offset = 24, NullIndOffset = 12, VClenIndOffset = -1              
>       RelOffset = 8, VoaOffset = -1, NullBitIdx = 0                     
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 31                                                      
>       Text = INTEGER SIGNED                                             
>   Clause #4: ex_conv_clause
>     OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
>     ex_clause::flags_ = 0000000010000110              
>     ex_conv_clause::flags_ = 0000000000000000         
>     PCODE  = supported                                
>     Operand #0 (result):                              
>       Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 1
>       Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 2                                             
>       Offset = 32, NullIndOffset = 12, VClenIndOffset = 28              
>       RelOffset = 0, VoaOffset = 8, NullBitIdx = 1                      
>       NullIndLength = 0, VClenIndLength = 4                             
>       ValueId = 34                                                      
>       Text = cast                                                       
>     Operand #1:
>       Datatype = REC_BYTE_V_ASCII(64), Length = 100, Null Flag = 1
>       Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLMX_ALIGNED_FORMAT                          
>       Atp = 1, AtpIndex = 4                                             
>       Offset = 32, NullIndOffset = 12, VClenIndOffset = 28              
>       RelOffset = 0, VoaOffset = 8, NullBitIdx = 1                      
>       NullIndLength = 0, VClenIndLength = 4                             
>       ValueId = 33                                                      
>       Text = VARCHAR(100) CHARACTER SET ISO88591                        
>   PCode:
> PCode Expr Length: 332
>     [1]               
>     HDR_MPTR32_IBIN32S_IBIN32S_IBIN32S_IBIN32S_IBIN32S (303) 4 0 16 16 4 12 4
>     MOVE_MBIN64S_MBIN64S (203) 4 16 5 16                                     
>     NOT_NULL_BRANCH_MBIN32S_MBIN32S_IATTR3_IBIN32S (248) 4 12 5 12 134219270 
> 0 0 14  (Tgt: 3)
>     [2]
>     MOVE_MBIN32S_IBIN32S (3) 4 24 0
>     BRANCH (95) 6  (Tgt: 4)        
>     [3]  (Preds: 1 )
>     MOVE_MBIN32U_MBIN32U (202) 4 24 5 24
>     [4]  (Preds: 2 )
>     NOT_NULL_BRANCH_MBIN32S_MBIN32S_IATTR3_IBIN32S (248) 4 12 5 12 134219270 
> 1 1 24  (Tgt: 6)
>     [5]
>     FILL_MEM_BYTES_VARIABLE (317) 4 32 8 100 1024 0 0
>     UPDATE_ROWLEN3_MATTR5_IBIN32S (316) 4 32 8 -1 1024 4
>     RETURN (264)                                        
>     [6]  (Preds: 4 )
>     MOVE_MATTR5_MATTR5 (284) 4 32 8 100 1024 5 32 8 100 1024
>     UPDATE_ROWLEN3_MATTR5_IBIN32S (316) 4 32 8 -1 1024 4    
>     RETURN (264)                                            
> Expression: ScanExpr is NULL
> Expression: RowIdExpr
> Expr Len: 384, Consts Len: 8
> flags_ = 0000000010001000   
>   Clause #1: ex_conv_clause 
>     OperatorTypeEnum = ITM_CAST(2452), NumOperands = 2
>     ex_clause::flags_ = 0000000010000000              
>     ex_conv_clause::flags_ = 0000000000010000         
>     PCODE  = supported                                
>     Operand #0 (result):                              
>       Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLARK_EXPLODED_FORMAT                        
>       Atp = 0, AtpIndex = 1 (Temporary)                                 
>       Offset = 0, NullIndOffset = -1, VClenIndOffset = -1               
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 36                                                      
>       Text = cast                                                       
>     Operand #1:
>       Datatype = REC_BYTE_V_ASCII(64), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLARK_EXPLODED_FORMAT                        
>       Atp = 1, AtpIndex = 5                                             
>       Offset = 2, NullIndOffset = -1, VClenIndOffset = 0                
>       NullIndLength = 0, VClenIndLength = 2                             
>       ValueId = 35                                                      
>       Text = VARCHAR(8) CHARACTER SET ISO88591                          
>   Clause #2: ex_function_clause
>     OperatorTypeEnum = ITM_COMP_ENCODE(2114), NumOperands = 2
>     ex_clause::flags_ = 0000000010000000                     
>     ex_function_clause::flags_ = 0000000000000000            
>     PCODE  = supported                                       
>     Operand #0 (result):                                     
>       Datatype = REC_BYTE_F_ASCII(0), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 1, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLARK_EXPLODED_FORMAT                        
>       Atp = 1, AtpIndex = 3                                             
>       Offset = 0, NullIndOffset = -1, VClenIndOffset = -1               
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 37                                                      
>       Text = comp_encode                                                
>     Operand #1:
>       Datatype = REC_BIN64_SIGNED(134), Length = 8, Null Flag = 0
>       Precision = 0, Scale = 0, Collation = 1, flags_ = 0000001000001000
>       Tuple Data Format = SQLARK_EXPLODED_FORMAT                        
>       Atp = 0, AtpIndex = 1 (Temporary)                                 
>       Offset = 0, NullIndOffset = -1, VClenIndOffset = -1               
>       NullIndLength = 0, VClenIndLength = 0                             
>       ValueId = 36                                                      
>       Text = cast                                                       
>   PCode:
> PCode Expr Length: 88
>     [1]              
>     CONVVCPTR_MBIN64S_MATTR5_IBIN32S (330) 2 0 5 2 -1 8 512 8
>     ENCODE_MASCII_MBIN64S_IBIN32S (91) 4 0 2 0 0             
>     RETURN (264)                                             
> Expression: UpdateExpr is NULL
> Expression: MergeInsertExpr is NULL
> Expression: LowKeyExpr is NULL
> Expression: HighKeyExpr is NULL
> Expression: ReturnFetchExpr is NULL
> Expression: ReturnUpdateExpr is NULL
> Expression: ReturnMergeInsertExpr is NULL
> Expression: mergeUpdScanExpr is NULL
> Expression: mergeInsertRowIdExpr is NULL
> Expression: encodedKeyExpr is NULL
> Expression: keyColValExpr is NULL
> Expression: hbaseFilterExpr is NULL
> From: Sharma, Anoop 
> Sent: Tuesday, April 21, 2015 10:04 AM
> To: Bouaziz, Khaled; Subbiah, Suresh
> Subject: CIF question
> hi
>   do we use CIF when selecting out of traf scan operator?
> for ex:
>   create table t (a int not null primary key, b varchar(1000), c 
> varchar(1000));
> would “select * from t” use CIF for the output row from scan operator?
> Right now I see exploded format in HbaseAccess even if I set cqd 
> compressed_internal_format to ON?
> But if I do a join, then the hash join operator uses CIF but scan operator 
> uses exploded.
> When is the conversion from exploded to aligned(cif) format done?
> anoop



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to