You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by an...@apache.org on 2016/07/01 14:46:24 UTC
[06/11] incubator-trafodion git commit: JIRA 2086 Add support for
largeint unsigned
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/911f1d64/core/sql/sqlcomp/DefaultConstants.h
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/DefaultConstants.h b/core/sql/sqlcomp/DefaultConstants.h
index 5776a00..3aaebbc 100644
--- a/core/sql/sqlcomp/DefaultConstants.h
+++ b/core/sql/sqlcomp/DefaultConstants.h
@@ -3842,6 +3842,15 @@ enum DefaultConstants
// if 3, null inserted if conversion error, and processing continues.
HIVE_INSERT_ERROR_MODE,
+ // If ON, largeint unsigned is supported as returned datatype for a select
+ // stmt, and for input params.
+ // Otherwise typed as bignum
+ TRAF_LARGEINT_UNSIGNED_IO,
+
+ // if TRUE, create signed numeric literal for both +ve and -ve numbers.
+ // if FALSE, create unsigned literal for +ve and signed literal for -ve nums.
+ TRAF_CREATE_SIGNED_NUMERIC_LITERAL,
+
// This enum constant must be the LAST one in the list; it's a count,
// not an Attribute (it's not IN DefaultDefaults; it's the SIZE of it)!
__NUM_DEFAULT_ATTRIBUTES
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/911f1d64/core/sql/sqlcomp/nadefaults.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/nadefaults.cpp b/core/sql/sqlcomp/nadefaults.cpp
index 7301575..3856a76 100644
--- a/core/sql/sqlcomp/nadefaults.cpp
+++ b/core/sql/sqlcomp/nadefaults.cpp
@@ -3329,6 +3329,8 @@ XDDkwd__(SUBQUERY_UNNESTING, "ON"),
DDkwd__(TRAF_COL_LENGTH_IS_CHAR, "ON"),
+ DDkwd__(TRAF_CREATE_SIGNED_NUMERIC_LITERAL, "ON"),
+
DDansi_(TRAF_CREATE_TABLE_WITH_UID, ""),
DDkwd__(TRAF_DEFAULT_COL_CHARSET, (char *)SQLCHARSETSTRING_ISO88591),
@@ -3337,6 +3339,9 @@ XDDkwd__(SUBQUERY_UNNESTING, "ON"),
DDkwd__(TRAF_INDEX_ALIGNED_ROW_FORMAT, "ON"),
DDkwd__(TRAF_INDEX_CREATE_OPT, "OFF"),
+
+ DDkwd__(TRAF_LARGEINT_UNSIGNED_IO, "OFF"),
+
DDkwd__(TRAF_LOAD_ALLOW_RISKY_INDEX_MAINTENANCE, "OFF"),
DDkwd__(TRAF_LOAD_CONTINUE_ON_ERROR, "OFF"),
DD_____(TRAF_LOAD_ERROR_COUNT_ID, "" ),
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/911f1d64/core/sql/ustat/hs_cli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_cli.cpp b/core/sql/ustat/hs_cli.cpp
index dfa28f1..d65eb0e 100644
--- a/core/sql/ustat/hs_cli.cpp
+++ b/core/sql/ustat/hs_cli.cpp
@@ -3305,6 +3305,12 @@ Lng32 HSCursor::buildNAType()
TRUE, nullflag, heap_);
#pragma warn(1506) // warning elimination
break;
+ case REC_BIN64_UNSIGNED:
+ if (precision <= 0)
+ length = 8;
+ type = ConstructNumericType(addr, i, length, precision, scale,
+ FALSE, nullflag, heap_);
+ break;
//
//----------------------------------------------------------------
case REC_FLOAT32:
@@ -6010,6 +6016,9 @@ template
void profileGaps(HSColGroupStruct *, boundarySet<Int64>*, double&, Int64&,
NABoolean);
template
+void profileGaps(HSColGroupStruct *, boundarySet<UInt64>*, double&, Int64&,
+ NABoolean);
+template
void profileGaps(HSColGroupStruct *, boundarySet<ISFixedChar>*, double&, Int64&,
NABoolean);
template
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/911f1d64/core/sql/ustat/hs_faststats.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_faststats.cpp b/core/sql/ustat/hs_faststats.cpp
index c81604a..f102a1a 100644
--- a/core/sql/ustat/hs_faststats.cpp
+++ b/core/sql/ustat/hs_faststats.cpp
@@ -211,7 +211,8 @@ template void FastStatsHist<int>::addRowset(Lng32 numRows);
template void FastStatsHist<unsigned int>::addRowset(Lng32 numRows);
template void FastStatsHist<short>::addRowset(Lng32 numRows);
template void FastStatsHist<unsigned short>::addRowset(Lng32 numRows);
-template void FastStatsHist<long>::addRowset(Lng32 numRows);
+template void FastStatsHist<Int64>::addRowset(Lng32 numRows);
+template void FastStatsHist<UInt64>::addRowset(Lng32 numRows);
template void FastStatsHist<float>::addRowset(Lng32 numRows);
template void FastStatsHist<double>::addRowset(Lng32 numRows);
@@ -221,7 +222,8 @@ template void FastStatsHist<int>::actuate(Lng32);
template void FastStatsHist<unsigned int>::actuate(Lng32);
template void FastStatsHist<short>::actuate(Lng32);
template void FastStatsHist<unsigned short>::actuate(Lng32);
-template void FastStatsHist<long>::actuate(Lng32);
+template void FastStatsHist<Int64>::actuate(Lng32);
+template void FastStatsHist<UInt64>::actuate(Lng32);
template void FastStatsHist<float>::actuate(Lng32);
template void FastStatsHist<double>::actuate(Lng32);
@@ -231,6 +233,7 @@ template void FSInterval<int>::estimateRowsAndUecs(double, float);
template void FSInterval<unsigned int>::estimateRowsAndUecs(double, float);
template void FSInterval<short>::estimateRowsAndUecs(double, float);
template void FSInterval<unsigned short>::estimateRowsAndUecs(double, float);
-template void FSInterval<long>::estimateRowsAndUecs(double, float);
+template void FSInterval<Int64>::estimateRowsAndUecs(double, float);
+template void FSInterval<UInt64>::estimateRowsAndUecs(double, float);
template void FSInterval<float>::estimateRowsAndUecs(double, float);
template void FSInterval<double>::estimateRowsAndUecs(double, float);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/911f1d64/core/sql/ustat/hs_globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_globals.cpp b/core/sql/ustat/hs_globals.cpp
index 3f4fe71..32654db 100644
--- a/core/sql/ustat/hs_globals.cpp
+++ b/core/sql/ustat/hs_globals.cpp
@@ -315,6 +315,10 @@ Lng32 MCWrapper::setupMCColumnIterator (HSColGroupStruct *group, MCIterator** it
iter[currentLoc] = new (STMTHEAP) MCNonCharIterator<Int64>((Int64 *)group->mcis_data);
break;
+ case REC_BIN64_UNSIGNED:
+ iter[currentLoc] = new (STMTHEAP) MCNonCharIterator<UInt64>((UInt64 *)group->mcis_data);
+ break;
+
case REC_IEEE_FLOAT32:
iter[currentLoc] = new (STMTHEAP) MCNonCharIterator<float>((float *)group->mcis_data);
break;
@@ -4880,6 +4884,7 @@ void HSGlobalsClass::getMemoryRequirementsForOneGroup(HSColGroupStruct* group, I
break;
case REC_BIN64_SIGNED:
+ case REC_BIN64_UNSIGNED:
case REC_IEEE_FLOAT64:
elementSize = 8;
break;
@@ -7081,6 +7086,9 @@ Int32 HSGlobalsClass::processIUSColumn(HSColGroupStruct* smplGroup,
case REC_BIN64_SIGNED:
return processIUSColumn((Int64*)smplGroup->data, L"%lld", smplGroup, delGroup, insGroup);
break;
+ case REC_BIN64_UNSIGNED:
+ return processIUSColumn((UInt64*)smplGroup->data, L"%llu", smplGroup, delGroup, insGroup);
+ break;
case REC_FLOAT32:
return processIUSColumn((Float32*)smplGroup->data, L"%f", smplGroup, delGroup, insGroup);
break;
@@ -10064,6 +10072,10 @@ Lng32 HSGlobalsClass::processInternalSortNulls(Lng32 rowsRead, HSColGroupStruct
processNullsForColumn(group, rowsRead, (Int64*)NULL);
break;
+ case REC_BIN64_UNSIGNED:
+ processNullsForColumn(group, rowsRead, (UInt64*)NULL);
+ break;
+
case REC_IEEE_FLOAT32:
processNullsForColumn(group, rowsRead, (float*)NULL);
break;
@@ -10214,6 +10226,7 @@ bool isInternalSortType(HSColumnStruct &col)
case REC_BIN32_SIGNED:
case REC_BIN32_UNSIGNED:
case REC_BIN64_SIGNED:
+ case REC_BIN64_UNSIGNED:
case REC_DECIMAL_LSE:
case REC_DECIMAL_UNSIGNED:
case REC_DECIMAL_LS:
@@ -10954,6 +10967,11 @@ Lng32 doSort(HSColGroupStruct *group)
(Int64*)group->nextData - (Int64*)group->data - 1);
break;
+ case REC_BIN64_UNSIGNED:
+ quicksort((UInt64*)group->data, 0,
+ (UInt64*)group->nextData - (UInt64*)group->data - 1);
+ break;
+
case REC_IEEE_FLOAT32:
quicksort((float*)group->data, 0,
(float*)group->nextData - (float*)group->data - 1);
@@ -11437,6 +11455,10 @@ Lng32 HSGlobalsClass::createStatsForColumn(HSColGroupStruct *group, Int64 rowsAl
createHistogram(group, intCount, sampleRowCount, samplingUsed, (Int64*)NULL);
break;
+ case REC_BIN64_UNSIGNED:
+ createHistogram(group, intCount, sampleRowCount, samplingUsed, (UInt64*)NULL);
+ break;
+
case REC_BYTE_F_ASCII:
case REC_BYTE_F_DOUBLE:
//
@@ -11785,6 +11807,7 @@ Int32 computeKeyLengthInfo(Lng32 datatype)
return ExHDPHash::SWAP_FOUR;
case REC_BIN64_SIGNED:
+ case REC_BIN64_UNSIGNED:
case REC_FLOAT64:
return ExHDPHash::SWAP_EIGHT;
@@ -12694,6 +12717,10 @@ Lng32 HSGlobalsClass::mergeDatasetsForIUS(
return mergeDatasetsForIUS((Int64*)smplGroup->data, (Int64*)NULL,
smplGroup, smplrows, delGroup, delrows, insGroup, insrows);
break;
+ case REC_BIN64_UNSIGNED:
+ return mergeDatasetsForIUS((UInt64*)smplGroup->data, (UInt64*)NULL,
+ smplGroup, smplrows, delGroup, delrows, insGroup, insrows);
+ break;
case REC_FLOAT32:
return mergeDatasetsForIUS((Float32*)smplGroup->data, (Float32*)NULL,
smplGroup, smplrows, delGroup, delrows, insGroup, insrows);
@@ -13648,6 +13675,9 @@ Lng32 setBufferValue(MCWrapper& value,
case REC_BIN64_SIGNED:
retcode = copyValue(*((MCNonCharIterator<Int64>*)(value.allCols_[i]))->getContent(value.index_), valueBuff, mgroup->colSet[i], len);
break;
+ case REC_BIN64_UNSIGNED:
+ retcode = copyValue(*((MCNonCharIterator<UInt64>*)(value.allCols_[i]))->getContent(value.index_), valueBuff, mgroup->colSet[i], len);
+ break;
case REC_IEEE_FLOAT32:
retcode = copyValue(*((MCNonCharIterator<float>*)(value.allCols_[i]))->getContent(value.index_), valueBuff, mgroup->colSet[i], len);
break;
@@ -15508,6 +15538,10 @@ Lng32 HSGlobalsClass::processFastStatsBatch(CollIndex numCols, HSColGroupStruct*
group->fastStatsHist = new(STMTHEAP) FastStatsHist<Int64>(group, cbf);
break;
+ case REC_BIN64_UNSIGNED:
+ group->fastStatsHist = new(STMTHEAP) FastStatsHist<UInt64>(group, cbf);
+ break;
+
case REC_IEEE_FLOAT32:
group->fastStatsHist = new(STMTHEAP) FastStatsHist<Float32>(group, cbf);
break;