TRAFODION-3086 additional fixes

Project: http://git-wip-us.apache.org/repos/asf/trafodion/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafodion/commit/90dd2d35
Tree: http://git-wip-us.apache.org/repos/asf/trafodion/tree/90dd2d35
Diff: http://git-wip-us.apache.org/repos/asf/trafodion/diff/90dd2d35

Branch: refs/heads/master
Commit: 90dd2d350c38d6203fce329c638fa22d357e42ad
Parents: 2bba19f
Author: Anoop Sharma <[email protected]>
Authored: Wed Jun 20 01:39:51 2018 +0000
Committer: Anoop Sharma <[email protected]>
Committed: Wed Jun 20 01:39:51 2018 +0000

----------------------------------------------------------------------
 core/sql/executor/ExExeUtil.h           |  4 ++--
 core/sql/executor/ExExeUtilLoad.cpp     | 21 +++++++++++----------
 core/sql/generator/GenRelExeUtil.cpp    |  4 ++--
 core/sql/optimizer/RelExeUtil.cpp       |  9 ++++++---
 core/sql/optimizer/RelExeUtil.h         | 16 ++++++++--------
 core/sql/parser/sqlparser.y             |  6 +++++-
 core/sql/regress/hive/EXPECTED008       |  2 +-
 core/sql/sqlcomp/CmpSeabaseDDLtable.cpp |  2 +-
 8 files changed, 36 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/executor/ExExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtil.h b/core/sql/executor/ExExeUtil.h
index 227e103..9b95a63 100644
--- a/core/sql/executor/ExExeUtil.h
+++ b/core/sql/executor/ExExeUtil.h
@@ -898,7 +898,7 @@ class ExExeUtilCreateTableAsTcb : public ExExeUtilTcb
     {
       INITIAL_,
       CREATE_,
-      DELETE_DATA_,
+      TRUNCATE_TABLE_,
       INSERT_SIDETREE_,
       INSERT_VSBB_,
       ALTER_TO_NOAUDIT_,
@@ -906,7 +906,7 @@ class ExExeUtilCreateTableAsTcb : public ExExeUtilTcb
       ALTER_TO_AUDIT_AND_INSERT_VSBB_,
       UPD_STATS_,
       DONE_,
-      HANDLE_ERROR_, DELETE_DATA_AND_ERROR_, ERROR_,
+      HANDLE_ERROR_, TRUNCATE_TABLE_AND_ERROR_, ERROR_,
       DROP_AND_ERROR_,
       DROP_AND_DONE_,
       INSERT_SIDETREE_EXECUTE_,

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/executor/ExExeUtilLoad.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilLoad.cpp 
b/core/sql/executor/ExExeUtilLoad.cpp
index 160a6bb..5cf023d 100644
--- a/core/sql/executor/ExExeUtilLoad.cpp
+++ b/core/sql/executor/ExExeUtilLoad.cpp
@@ -166,15 +166,16 @@ short ExExeUtilCreateTableAsTcb::work()
                 ctaTdb().ctQuery_);
            if (cliRC < 0)
              {
-               if (((cliRC == -1055) || // SQ table err msg
-                    (cliRC == -1390)) && // Traf err msg
+               if (((cliRC == -1055) ||  // SQ table err msg
+                    (cliRC == -1390) ||  // Traf err msg
+                    (cliRC == -1387)) && // Hive err msg
                    (ctaTdb().loadIfExists()))
                  {
                    SQL_EXEC_ClearDiagnostics(NULL);
                    tableExists_ = TRUE;
 
                    if (ctaTdb().deleteData())
-                     step_ = DELETE_DATA_;
+                     step_ = TRUNCATE_TABLE_;
                    else
                      step_ = ALTER_TO_NOAUDIT_;
                    break;
@@ -200,14 +201,14 @@ short ExExeUtilCreateTableAsTcb::work()
          }
        break;
 
-       case DELETE_DATA_:
-       case DELETE_DATA_AND_ERROR_:
+       case TRUNCATE_TABLE_:
+       case TRUNCATE_TABLE_AND_ERROR_:
          {
            char * ddQuery = 
-             new(getMyHeap()) char[strlen("DELETE DATA FROM; ") + 
+             new(getMyHeap()) char[strlen("TRUNCATE TABLE; ") + 
                                   strlen(ctaTdb().getTableName()) +
                                   100];
-           strcpy(ddQuery, "DELETE DATA FROM ");
+           strcpy(ddQuery, "TRUNCATE TABLE ");
            strcat(ddQuery, ctaTdb().getTableName());
            strcat(ddQuery, ";");
            cliRC = cliInterface()->executeImmediate(ddQuery, 
NULL,NULL,TRUE,NULL,TRUE);
@@ -217,7 +218,7 @@ short ExExeUtilCreateTableAsTcb::work()
 
            if (cliRC < 0)
              {
-               if (step_ == DELETE_DATA_)
+               if (step_ == TRUNCATE_TABLE_)
                  {
                    step_ = ERROR_;
                    break;
@@ -230,7 +231,7 @@ short ExExeUtilCreateTableAsTcb::work()
                break;
              }
 
-           if (step_ == DELETE_DATA_AND_ERROR_)
+           if (step_ == TRUNCATE_TABLE_AND_ERROR_)
              {
 
                if (doSidetreeInsert_)
@@ -492,7 +493,7 @@ short ExExeUtilCreateTableAsTcb::work()
              {
                // error case and 'load if exists' specified.
                // Do not drop the table, only delete data from it.
-               step_ = DELETE_DATA_AND_ERROR_;
+               step_ = TRUNCATE_TABLE_AND_ERROR_;
              }
            else
              step_ = DROP_AND_ERROR_;

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/generator/GenRelExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelExeUtil.cpp 
b/core/sql/generator/GenRelExeUtil.cpp
index 4842e96..dbbbf56 100644
--- a/core/sql/generator/GenRelExeUtil.cpp
+++ b/core/sql/generator/GenRelExeUtil.cpp
@@ -3302,10 +3302,10 @@ short ExeUtilHiveTruncate::codeGen(Generator * 
generator)
   if (getHiveExternalTable())
     exe_util_tdb->setIsExternal(TRUE);
 
-  if (getIfExist())
+  if (getIfExists())
     exe_util_tdb->setIfExists(TRUE);
 
-  if (NOT getTableNotExist())
+  if (getTableNotExists())
     exe_util_tdb->setTableNotExists(TRUE);
 
   if(!generator->explainDisabled()) {

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/optimizer/RelExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExeUtil.cpp 
b/core/sql/optimizer/RelExeUtil.cpp
index 2675470..61707d6 100644
--- a/core/sql/optimizer/RelExeUtil.cpp
+++ b/core/sql/optimizer/RelExeUtil.cpp
@@ -5245,7 +5245,10 @@ RelExpr * ExeUtilCreateTableAs::bindNode(BindWA *bindWA)
       // get the upd stats query
       usQuery_ = "UPDATE STATISTICS FOR TABLE ";
       usQuery_ += 
getTableName().getQualifiedNameObj().getQualifiedNameAsAnsiString(TRUE);
-      usQuery_ += " ON EVERY KEY SAMPLE SET ROWCOUNT %Ld;";
+      if (isHive)
+        usQuery_ += " ON EVERY COLUMN SAMPLE SET ROWCOUNT %Ld;";
+      else
+        usQuery_ += " ON EVERY KEY SAMPLE SET ROWCOUNT %Ld;";        
     }
 
   return boundExpr;
@@ -5367,9 +5370,9 @@ RelExpr * ExeUtilHiveTruncate::bindNode(BindWA *bindWA)
   bindWA->setToOverrideSchema(FALSE);
   
   naTable = bindWA->getNATable(getTableName());
-  if (getIfExist() && (! naTable))
+  if (getIfExists() && (! naTable))
     {
-      setTableNotExist(TRUE);
+      setTableNotExists(TRUE);
 
       bindWA->resetErrStatus();
       CmpCommon::diags()->clear();

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/optimizer/RelExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExeUtil.h b/core/sql/optimizer/RelExeUtil.h
index 29588e2..a2deeb6 100644
--- a/core/sql/optimizer/RelExeUtil.h
+++ b/core/sql/optimizer/RelExeUtil.h
@@ -1110,8 +1110,8 @@ public:
          dropTableOnDealloc_(FALSE),
          noSecurityCheck_(FALSE),
          hiveExternalTable_(FALSE),
-         ifExist_(FALSE),
-         tableNotExist_(FALSE)
+         ifExists_(FALSE),
+         tableNotExists_(FALSE)
   { }
 
   virtual NABoolean isExeUtilQueryType() { return TRUE; }
@@ -1136,14 +1136,14 @@ public:
   NABoolean getDropTableOnDealloc() const       { return dropTableOnDealloc_; }
   NABoolean getNoSecurityCheck() const          { return noSecurityCheck_; }
   NABoolean getHiveExternalTable() const        { return hiveExternalTable_; }
-  NABoolean getIfExist() const                  { return ifExist_; }
-  NABoolean getTableNotExist()   const          { return tableNotExist_; }
+  NABoolean getIfExists() const                 { return ifExists_; }
+  NABoolean getTableNotExists()   const         { return tableNotExists_; }
 
   void setDropTableOnDealloc(NABoolean v=TRUE)  { dropTableOnDealloc_ = v; }
   void setNoSecurityCheck(NABoolean v)          { noSecurityCheck_ = v; }  
   void setHiveExternalTable(NABoolean v)        { hiveExternalTable_ = v; }
-  void setIfExist(NABoolean v)                  { ifExist_ = v; }
-  void setTableNotExist(NABoolean v)            { tableNotExist_ = v; }
+  void setIfExists(NABoolean v)                 { ifExists_ = v; }
+  void setTableNotExists(NABoolean v)           { tableNotExists_ = v; }
 
 private:
 
@@ -1160,10 +1160,10 @@ private:
   NABoolean hiveExternalTable_;
 
   // if 'if exist' clause is specified
-  NABoolean ifExist_;
+  NABoolean ifExists_;
 
   // if table does not exist
-  NABoolean tableNotExist_;
+  NABoolean tableNotExists_;
 };
 
 class ExeUtilHiveQuery : public ExeUtilExpr

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/parser/sqlparser.y
----------------------------------------------------------------------
diff --git a/core/sql/parser/sqlparser.y b/core/sql/parser/sqlparser.y
index 968c096..b0042e7 100755
--- a/core/sql/parser/sqlparser.y
+++ b/core/sql/parser/sqlparser.y
@@ -25503,7 +25503,11 @@ ctas_load_and_in_memory_options : TOK_LOAD TOK_IF 
TOK_EXISTS
                    {
                     $$ = TableTokens::OPT_IN_MEM; 
                   }
-                 | TOK_LOAD TOK_IF TOK_EXISTS TOK_WITH TOK_DELETE TOK_DATA 
+                 | TOK_LOAD TOK_IF TOK_EXISTS TOK_WITH TOK_TRUNCATE
+                   {
+                    $$ = TableTokens::OPT_LOAD_WITH_DELETE; 
+                  }
+                 | TOK_LOAD TOK_IF TOK_EXISTS TOK_WITH TOK_DELETE TOK_DATA
                    {
                     $$ = TableTokens::OPT_LOAD_WITH_DELETE; 
                   }

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/regress/hive/EXPECTED008
----------------------------------------------------------------------
diff --git a/core/sql/regress/hive/EXPECTED008 
b/core/sql/regress/hive/EXPECTED008
index 3d07895..9265db9 100644
--- a/core/sql/regress/hive/EXPECTED008
+++ b/core/sql/regress/hive/EXPECTED008
@@ -520,7 +520,7 @@ DESCRIPTION
                              trafodion."_MD_".columns;
   UpsertLoadQuery ........ NULL
   UpdStatsQuery .......... UPDATE STATISTICS FOR TABLE HIVE.SCH008.COLUMNS ON
-                             EVERY KEY SAMPLE SET ROWCOUNT %Ld;
+                             EVERY COLUMN SAMPLE SET ROWCOUNT %Ld;
 
 --- SQL operation complete.
 >>create external table hive.sch008.columns no load 

http://git-wip-us.apache.org/repos/asf/trafodion/blob/90dd2d35/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp 
b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
index 815381d..f422b2d 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
@@ -11791,7 +11791,7 @@ NABoolean CmpSeabaseDDL::setupQueryTreeForHiveDDL(
         (cn, newHiveName, hiveDDL, PARSERHEAP());
 
       if (ifExistsOrNotExists)
-        ht->setIfExist(TRUE);
+        ht->setIfExists(TRUE);
 
       ddlExprRoot = new(CmpCommon::statementHeap()) RelRoot(ht);
     }

Reply via email to