You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2016/10/10 16:29:49 UTC
[1/3] incubator-trafodion git commit: [TRAFODION-2251] Fix upd stats
issues with long char/varchar columns
Repository: incubator-trafodion
Updated Branches:
refs/heads/master be54167b8 -> 12f602cab
[TRAFODION-2251] Fix upd stats issues with long char/varchar columns
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/8a7fe537
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/8a7fe537
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/8a7fe537
Branch: refs/heads/master
Commit: 8a7fe53736fb5720199e23864910df3cb092155d
Parents: 1e94882
Author: Dave Birdsall <db...@apache.org>
Authored: Tue Oct 4 21:35:42 2016 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Tue Oct 4 21:35:42 2016 +0000
----------------------------------------------------------------------
core/sql/executor/ExExeUtilLoad.cpp | 3 +-
core/sql/ustat/hs_cli.cpp | 103 ++++++++++++++++++++++++++-----
core/sql/ustat/hs_cli.h | 4 ++
core/sql/ustat/hs_globals.cpp | 19 +++++-
core/sql/ustat/hs_globals.h | 12 ++++
core/sql/ustat/hs_log.h | 2 +
core/sql/ustat/hs_parser.cpp | 7 +++
7 files changed, 133 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/executor/ExExeUtilLoad.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilLoad.cpp b/core/sql/executor/ExExeUtilLoad.cpp
index 08b13db..d11f182 100644
--- a/core/sql/executor/ExExeUtilLoad.cpp
+++ b/core/sql/executor/ExExeUtilLoad.cpp
@@ -132,7 +132,8 @@ short ExExeUtilCreateTableAsTcb::work()
{
NABoolean xnAlreadyStarted = ta->xnInProgress();
- if (xnAlreadyStarted)
+ // allow a user transaction if NO LOAD was specified
+ if (xnAlreadyStarted && !ctaTdb().noLoad())
{
*getDiagsArea() << DgSqlCode(-20123)
<< DgString0("This DDL operation");
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_cli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_cli.cpp b/core/sql/ustat/hs_cli.cpp
index 1260566..878e5a2 100644
--- a/core/sql/ustat/hs_cli.cpp
+++ b/core/sql/ustat/hs_cli.cpp
@@ -504,6 +504,8 @@ Lng32 HSSample::create(NAString& tblName, NABoolean unpartitioned, NABoolean isP
NAString tempTabName = tblName;
NAString userTabName = objDef->getObjectFullName();
+ HSGlobalsClass *hs_globals = GetHSContext();
+
// If the table is a native one, convert the fully qualified user table name NT
// to a fully qualified external table name ET. The sample table will be created
// like ET.
@@ -542,21 +544,37 @@ Lng32 HSSample::create(NAString& tblName, NABoolean unpartitioned, NABoolean isP
ddl = "CREATE TABLE ";
ddl += tempTabName;
- ddl += " LIKE ";
-
- // is this an MV LOG table?
- if (objDef->getNameSpace() == COM_IUD_LOG_TABLE_NAME)
- {
- ddl += "TABLE (IUD_LOG_TABLE ";
- ddl += userTabName;
- ddl += ") ";
- }
+ if (hs_globals->hasOversizedColumns)
+ {
+ // Use CREATE TABLE AS SELECT when we have to modify the column lengths
+ // (this happens for tables having very long chars/varchars). One
+ // peculiarity: We have to use the native version of the name
+ // (e.g. HIVE.whatever.whatever for Hive tables) instead of the external
+ // table name (e.g. TRAFODION._HV_whatever.whatever) in the SELECT.
+ ddl += " NO LOAD AS SELECT ";
+ addTruncatedSelectList(ddl);
+ ddl += " FROM ";
+ ddl += objDef->getObjectFullName().data(); // e.g. HIVE.whatever.whatever
+ // ddl += tableOptions; unfortunately not supported with CREATE TABLE AS SELECT
+ }
else
- {
- ddl += userTabName;
- }
+ {
+ ddl += " LIKE ";
- ddl += tableOptions;
+ // is this an MV LOG table?
+ if (objDef->getNameSpace() == COM_IUD_LOG_TABLE_NAME)
+ {
+ ddl += "TABLE (IUD_LOG_TABLE ";
+ ddl += userTabName;
+ ddl += ") ";
+ }
+ else
+ {
+ ddl += userTabName;
+ }
+
+ ddl += tableOptions;
+ }
tableType = ANSI_TABLE;
sampleName = new(STMTHEAP) ComObjectName(tempTabName,
COM_UNKNOWN_NAME,
@@ -648,7 +666,6 @@ Lng32 HSSample::create(NAString& tblName, NABoolean unpartitioned, NABoolean isP
HSHandleError(retcode);
}
- HSGlobalsClass *hs_globals = GetHSContext();
if (hs_globals && hs_globals->diagsArea.getNumber(DgSqlCode::ERROR_))
hs_globals->diagsArea.deleteError(0);
@@ -5411,6 +5428,64 @@ NAString HSSample::getTempTablePartitionInfo(NABoolean unpartitionedSample,
}
+//
+// METHOD: addTruncatedSelectList()
+//
+// PURPOSE: Generates a SELECT list consisting of
+// column references or a SUBSTRING
+// on column references which truncates the
+// column to the maximum length allowed in
+// UPDATE STATISTICS.
+//
+// INPUT: 'qry' - the SQL query string to append the
+// select list to.
+//
+void HSSample::addTruncatedSelectList(NAString & qry)
+ {
+ for (Lng32 i = 0; i < objDef->getNumCols(); i++)
+ {
+ if (i)
+ qry += ", ";
+
+ addTruncatedColumnReference(qry,objDef->getColInfo(i));
+ }
+ }
+
+
+//
+// METHOD: addTruncatedColumnReference()
+//
+// PURPOSE: Generates a column reference or a SUBSTRING
+// on a column reference which truncates the
+// column to the maximum length allowed in
+// UPDATE STATISTICS.
+//
+// INPUT: 'qry' - the SQL query string to append the
+// reference to.
+// 'colInfo' - struct containing datatype info
+// about the column.
+//
+void HSSample::addTruncatedColumnReference(NAString & qry,HSColumnStruct & colInfo)
+ {
+ Lng32 maxLengthInBytes = MAX_SUPPORTED_CHAR_LENGTH;
+ bool isOverSized = DFS2REC::isAnyCharacter(colInfo.datatype) &&
+ (colInfo.length > maxLengthInBytes);
+ if (isOverSized)
+ {
+ qry += "SUBSTRING(";
+ qry += colInfo.colname->data();
+ qry += " FOR ";
+
+ char temp[20]; // big enough for "nnnnnn) AS "
+ sprintf(temp,"%d) AS ", maxLengthInBytes / CharInfo::maxBytesPerChar(colInfo.charset));
+ qry += temp;
+ qry += colInfo.colname->data();
+ }
+ else
+ qry += colInfo.colname->data();
+ }
+
+
// Print the heading for the display of a query plan to the log.
void printPlanHeader(HSLogMan *LM)
{
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_cli.h
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_cli.h b/core/sql/ustat/hs_cli.h
index 3d91ac4..e30a102 100644
--- a/core/sql/ustat/hs_cli.h
+++ b/core/sql/ustat/hs_cli.h
@@ -57,6 +57,7 @@ class HSDataBuffer;
class HSTableDef;
struct HSColDesc;
struct HSColGroupStruct;
+struct HSColumnStruct;
class ISFixedChar;
class ISVarChar;
class MCWrapper;
@@ -193,6 +194,9 @@ class HSSample
NABoolean isIUS() { return isIUS_; }
+ void addTruncatedSelectList(NAString & qry);
+ static void addTruncatedColumnReference(NAString & qry, HSColumnStruct & colInfo);
+
private:
// Member function
void makeTableName(NABoolean isPersSample = FALSE);
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_globals.cpp b/core/sql/ustat/hs_globals.cpp
index 70adda5..00a15db 100644
--- a/core/sql/ustat/hs_globals.cpp
+++ b/core/sql/ustat/hs_globals.cpp
@@ -2841,6 +2841,7 @@ HSGlobalsClass::HSGlobalsClass(ComDiagsArea &diags)
: catSch(new(STMTHEAP) NAString(STMTHEAP)),
isHbaseTable(FALSE),
isHiveTable(FALSE),
+ hasOversizedColumns(FALSE),
user_table(new(STMTHEAP) NAString(STMTHEAP)),
numPartitions(0),
hstogram_table(new(STMTHEAP) NAString(STMTHEAP)),
@@ -4001,7 +4002,18 @@ Lng32 HSSample::make(NABoolean rowCountIsEstimate, // input
dml = insertType;
dml += sampleTable;
- dml += " SELECT * FROM ";
+ dml += " SELECT ";
+ if (hs_globals->hasOversizedColumns)
+ {
+ // The source table has an oversized column. We have to generate
+ // SUBSTRING calls on such columns to fit them into the sample
+ // table.
+ addTruncatedSelectList(dml);
+ }
+ else
+ dml += "*";
+
+ dml += " FROM ";
NAString hiveSrc = CmpCommon::getDefaultString(USE_HIVE_SOURCE);
if (! hiveSrc.isNull())
@@ -4874,9 +4886,12 @@ static void mapInternalSortTypes(HSColGroupStruct *groupList, NABoolean forHive
default:
group->ISdatatype = col.datatype;
group->ISlength = col.length;
+ if (group->ISlength > MAX_SUPPORTED_CHAR_LENGTH)
+ group->ISlength = MAX_SUPPORTED_CHAR_LENGTH;
group->ISprecision = col.precision;
group->ISscale = col.scale;
- group->ISSelectExpn.append(columnName);
+ // the method below handles adding SUBSTRING for over-size char/varchars
+ HSSample::addTruncatedColumnReference(group->ISSelectExpn,col);
break;
} // switch
group = group->next;
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_globals.h
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_globals.h b/core/sql/ustat/hs_globals.h
index 10381a8..ae47a8f 100644
--- a/core/sql/ustat/hs_globals.h
+++ b/core/sql/ustat/hs_globals.h
@@ -84,6 +84,16 @@ Lng32 setBufferValue(T& value,
HSDataBuffer &boundary);
+
+// This is the max supported length of character strings in UPDATE STATISTICS.
+// We will process longer columns, but we truncate their values to this length
+// during the processing. As a result, we may underestimate UEC, if, for
+// example, the first 32767 bytes are identical but some difference occurs
+// afterwards. If we someday wish to support longer lengths, at the very least
+// the ISVarChar class needs to change to use a longer length field for varchar
+// values.
+enum { MAX_SUPPORTED_CHAR_LENGTH = 32767 };
+
// An instance of ISFixedChar represents a value of a fixed-length character
// string (either single or double-byte) retrieved into memory for use by
// internal sort. A pointer to the actual string is maintained, and definitions
@@ -1583,6 +1593,8 @@ public:
NAString *user_table; /* object name */
NABoolean isHbaseTable; /* ustat on HBase table */
NABoolean isHiveTable; /* ustat on Hive table */
+ NABoolean hasOversizedColumns; /* set to TRUE for tables */
+ /* having gigantic columns */
ComAnsiNameSpace nameSpace; /* object namespace ++MV*/
Int64 numPartitions; /* # of partns in object */
NAString *hstogram_table; /* HISTOGRM table */
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_log.h
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_log.h b/core/sql/ustat/hs_log.h
index 18e6ec5..783b96f 100644
--- a/core/sql/ustat/hs_log.h
+++ b/core/sql/ustat/hs_log.h
@@ -150,12 +150,14 @@ void HSFuncLogError(Lng32 error, char *filename, Lng32 lineno);
// [6008] missing single-column histograms
// [6007] missing multi-column histograms
// [4030] non-standard DATETIME format
+// [2053] Optimizer pass two assertion failure (optimizer still attempts to produce a plan)
// [4] internal Warning
#define HSFilterWarning(retcode) \
{ \
if ((retcode == 6008) || \
(retcode == 6007) || \
(retcode == 4030) || \
+ (retcode == 2053) || \
(retcode == HS_WARNING)) \
retcode = 0; \
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/8a7fe537/core/sql/ustat/hs_parser.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_parser.cpp b/core/sql/ustat/hs_parser.cpp
index d96acc7..7ec3d37 100644
--- a/core/sql/ustat/hs_parser.cpp
+++ b/core/sql/ustat/hs_parser.cpp
@@ -520,6 +520,13 @@ HSColGroupStruct* AddSingleColumn(const Lng32 colNumber, HSColGroupStruct*& grou
HSColGroupStruct *newGroup = new(STMTHEAP) HSColGroupStruct;
HSColumnStruct newColumn = HSColumnStruct(hs_globals->objDef->getColInfo(colNumber));
+ bool isOverSized = DFS2REC::isAnyCharacter(newColumn.datatype) &&
+ (newColumn.length > MAX_SUPPORTED_CHAR_LENGTH);
+ if (isOverSized)
+ {
+ hs_globals->hasOversizedColumns = TRUE;
+ }
+
newColumn.colnum = colNumber;
newGroup->colSet.insert((const HSColumnStruct) newColumn);
newGroup->colCount = 1;
[2/3] incubator-trafodion git commit: Rework to support delimited
identifiers
Posted by db...@apache.org.
Rework to support delimited identifiers
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/4ac56f58
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/4ac56f58
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/4ac56f58
Branch: refs/heads/master
Commit: 4ac56f58e20ba1a277308a9ed5184f164a5e0701
Parents: 8a7fe53
Author: Dave Birdsall <db...@apache.org>
Authored: Wed Oct 5 18:32:42 2016 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Wed Oct 5 18:32:42 2016 +0000
----------------------------------------------------------------------
core/sql/ustat/hs_cli.cpp | 6 +++---
core/sql/ustat/hs_globals.cpp | 9 +++++++++
core/sql/ustat/hs_globals.h | 2 ++
core/sql/ustat/hs_la.cpp | 3 +++
core/sql/ustat/hs_update.cpp | 6 ++++++
5 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4ac56f58/core/sql/ustat/hs_cli.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_cli.cpp b/core/sql/ustat/hs_cli.cpp
index 878e5a2..1a5d277 100644
--- a/core/sql/ustat/hs_cli.cpp
+++ b/core/sql/ustat/hs_cli.cpp
@@ -5473,16 +5473,16 @@ void HSSample::addTruncatedColumnReference(NAString & qry,HSColumnStruct & colIn
if (isOverSized)
{
qry += "SUBSTRING(";
- qry += colInfo.colname->data();
+ qry += colInfo.externalColumnName->data();
qry += " FOR ";
char temp[20]; // big enough for "nnnnnn) AS "
sprintf(temp,"%d) AS ", maxLengthInBytes / CharInfo::maxBytesPerChar(colInfo.charset));
qry += temp;
- qry += colInfo.colname->data();
+ qry += colInfo.externalColumnName->data();
}
else
- qry += colInfo.colname->data();
+ qry += colInfo.externalColumnName->data();
}
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4ac56f58/core/sql/ustat/hs_globals.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_globals.cpp b/core/sql/ustat/hs_globals.cpp
index 00a15db..5038b2f 100644
--- a/core/sql/ustat/hs_globals.cpp
+++ b/core/sql/ustat/hs_globals.cpp
@@ -1643,6 +1643,7 @@ void HSColGroupStruct::freeISMemory(NABoolean freeStrData, NABoolean freeMCData)
HSColumnStruct::HSColumnStruct(const HSColumnStruct &src, NAMemory *h)
{
colname = new (h) NAString(src.colname->data(), h);
+ externalColumnName = new (h) NAString(src.externalColumnName->data(), h);
colnum = src.colnum;
position = src.position;
datatype = src.datatype;
@@ -1663,6 +1664,11 @@ HSColumnStruct::~HSColumnStruct()
delete colname;
colname = NULL;
}
+ if (externalColumnName != NULL)
+ {
+ delete externalColumnName;
+ externalColumnName = NULL;
+ }
}
// Assignment operator
@@ -1677,6 +1683,7 @@ HSColumnStruct& HSColumnStruct::operator=(const HSColumnStruct& rhs)
// already deleted; colname is on the STMTHEAP and will be destructed at the
// end of the statement. [SOL 10-070822-6995]
colname = new (STMTHEAP) NAString(rhs.colname->data(), STMTHEAP);
+ externalColumnName = new (STMTHEAP) NAString(rhs.externalColumnName->data(), STMTHEAP);
colnum = rhs.colnum;
position = rhs.position;
datatype = rhs.datatype;
@@ -4602,6 +4609,8 @@ static void mapInternalSortTypes(HSColGroupStruct *groupList, NABoolean forHive
else
columnName=dblQuote+group->colNames->data()+dblQuote;
+ *(col.externalColumnName) = columnName;
+
switch (col.datatype)
{
case REC_DECIMAL_LSE:
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4ac56f58/core/sql/ustat/hs_globals.h
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_globals.h b/core/sql/ustat/hs_globals.h
index ae47a8f..b372bee 100644
--- a/core/sql/ustat/hs_globals.h
+++ b/core/sql/ustat/hs_globals.h
@@ -1011,6 +1011,7 @@ class MCWrapper
struct HSColumnStruct : public NABasicObject
{
NAString *colname; /* column name */
+ NAString *externalColumnName; /* column name to use in SQL (e.g. with delimiters) */
Lng32 colnum; /* column position in table */
Lng32 position; /* position in grouplist */
Lng32 datatype;
@@ -1026,6 +1027,7 @@ struct HSColumnStruct : public NABasicObject
HSColumnStruct()
: colname(new(STMTHEAP) NAString(STMTHEAP)),
+ externalColumnName(new(STMTHEAP) NAString(STMTHEAP)),
colnum(-1), position(0), datatype(-1), nullflag(-1),
charset(CharInfo::UnknownCharSet),
length(-1), precision(-1), scale(-1),
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4ac56f58/core/sql/ustat/hs_la.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_la.cpp b/core/sql/ustat/hs_la.cpp
index 068aef1..330fbd2 100644
--- a/core/sql/ustat/hs_la.cpp
+++ b/core/sql/ustat/hs_la.cpp
@@ -291,6 +291,7 @@ Lng32 HSSqTableDef::DescribeColumnNames()
HSHandleError(retcode_);
colName[len] = '\0';
*colInfo_[i].colname = &*colName;
+ *colInfo_[i].externalColumnName = ToAnsiIdentifier(*colInfo_[i].colname);
/*== GET COLUMN DATATYPE ==*/
retcode_ = SQL_EXEC_GetDescItem(outputDesc, entry,
SQLDESC_TYPE_FS,
@@ -1010,6 +1011,7 @@ Lng32 HSHiveTableDef::DescribeColumnNames()
{
*(colInfo_[i].colname) = hiveColDesc->name_;
colInfo_[i].colname->toUpper();
+ *colInfo_[i].externalColumnName = ToAnsiIdentifier(*colInfo_[i].colname);
NAType* natype = getSQColTypeForHive(hiveColDesc->type_, STMTHEAP);
colInfo_[i].datatype = natype->getFSDatatype();
@@ -1238,6 +1240,7 @@ Lng32 HSHbaseTableDef::DescribeColumnNames()
{
colInfo_[i].colnum = i; // position of col in table
*(colInfo_[i].colname) = colArr[i]->getColName();
+ *colInfo_[i].externalColumnName = ToAnsiIdentifier(*colInfo_[i].colname);
natype = colArr[i]->getType();
colInfo_[i].datatype = natype->getFSDatatype();
colInfo_[i].nullflag = natype->supportsSQLnullLogical();
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/4ac56f58/core/sql/ustat/hs_update.cpp
----------------------------------------------------------------------
diff --git a/core/sql/ustat/hs_update.cpp b/core/sql/ustat/hs_update.cpp
index 4dd70d6..080af79 100644
--- a/core/sql/ustat/hs_update.cpp
+++ b/core/sql/ustat/hs_update.cpp
@@ -308,6 +308,12 @@ Lng32 UpdateStats(char *input, NABoolean requestedByCompiler)
retcode = HSFuncExecQuery("CONTROL QUERY DEFAULT TRAF_LARGEINT_UNSIGNED_IO 'ON'");
HSExitIfError(retcode);
+ // Set the following CQD to allow "_SALT_", "_DIV_" and similar system columns
+ // in a sample table when the table is created using CREATE TABLE AS SELECT
+ retcode = HSFuncExecQuery("CONTROL QUERY DEFAULT TRAF_ALLOW_RESERVED_COLNAMES 'ON'");
+ HSExitIfError(retcode);
+
+
LM->StopTimer();
LM->StartTimer("Parse statement");
[3/3] incubator-trafodion git commit: Merge [TRAFODION-2251] PR 744
Fix upd stats issues with long chars/varchars
Posted by db...@apache.org.
Merge [TRAFODION-2251] PR 744 Fix upd stats issues with long chars/varchars
Project: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/commit/12f602ca
Tree: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/tree/12f602ca
Diff: http://git-wip-us.apache.org/repos/asf/incubator-trafodion/diff/12f602ca
Branch: refs/heads/master
Commit: 12f602cab326fb39ba99d3d27e3550b9b8afe6a2
Parents: be54167 4ac56f5
Author: Dave Birdsall <db...@apache.org>
Authored: Mon Oct 10 16:28:49 2016 +0000
Committer: Dave Birdsall <db...@apache.org>
Committed: Mon Oct 10 16:28:49 2016 +0000
----------------------------------------------------------------------
core/sql/executor/ExExeUtilLoad.cpp | 3 +-
core/sql/ustat/hs_cli.cpp | 103 ++++++++++++++++++++++++++-----
core/sql/ustat/hs_cli.h | 4 ++
core/sql/ustat/hs_globals.cpp | 28 ++++++++-
core/sql/ustat/hs_globals.h | 14 +++++
core/sql/ustat/hs_la.cpp | 3 +
core/sql/ustat/hs_log.h | 2 +
core/sql/ustat/hs_parser.cpp | 7 +++
core/sql/ustat/hs_update.cpp | 6 ++
9 files changed, 153 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/12f602ca/core/sql/ustat/hs_globals.cpp
----------------------------------------------------------------------