You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by li...@apache.org on 2016/11/25 13:34:20 UTC

[4/5] incubator-trafodion git commit: Merge branch 'master' of git://git.apache.org/incubator-trafodion into TRAFODION-2353

Merge branch 'master' of git://git.apache.org/incubator-trafodion into TRAFODION-2353

Conflicts:
	core/sql/exp/exp_clause.h


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

Branch: refs/heads/master
Commit: ba01481f8cac06be08a5868677c35829c2732de9
Parents: 257a7a4 7098095
Author: Liu Ming <ov...@sina.com>
Authored: Fri Nov 25 01:21:33 2016 -0500
Committer: Liu Ming <ov...@sina.com>
Committed: Fri Nov 25 01:21:33 2016 -0500

----------------------------------------------------------------------
 .../jdbcT4/src/main/java/T4Messages.properties  |  18 +
 .../trafodion/jdbc/t4/ExtractLobMessage.java    |  59 ++
 .../org/trafodion/jdbc/t4/ExtractLobReply.java  |  58 ++
 .../java/org/trafodion/jdbc/t4/TRANSPORT.java   |   3 +
 .../java/org/trafodion/jdbc/t4/TrafT4Blob.java  | 182 +++++
 .../java/org/trafodion/jdbc/t4/TrafT4Clob.java  | 202 +++++
 .../org/trafodion/jdbc/t4/TrafT4ResultSet.java  |  91 ++-
 .../jdbc/t4/odbc_SQLSvc_ExtractLob_exc_.java    |  78 ++
 core/conn/odbc/src/odbc/Common/TransportBase.h  |   1 +
 .../src/odbc/Krypton/generated_incs/odbc_sv.h   |  26 +
 .../nsksrvr/Interface/marshalingsrvr_srvr.cpp   | 102 +++
 .../nsksrvr/Interface/marshalingsrvr_srvr.h     |  10 +-
 .../src/odbc/nsksrvr/Interface/odbcs_srvr.cpp   |  45 ++
 .../odbc/nsksrvr/Interface/odbcs_srvr_res.cpp   |  39 +
 .../src/odbc/nsksrvr/Interface/odbcs_srvr_res.h |   9 +-
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.cpp |  29 +-
 core/conn/odbc/src/odbc/nsksrvr/SrvrConnect.h   |   8 +
 .../conn/odbc/src/odbc/nsksrvrcore/srvrcommon.h |  10 +
 .../odbc/src/odbc/nsksrvrcore/srvrothers.cpp    | 129 +++
 .../export/include/common/evl_sqlog_eventnum.h  |   1 +
 core/sqf/monitor/linux/cluster.cxx              |  52 +-
 core/sqf/monitor/linux/zclient.cxx              |  32 +-
 core/sqf/monitor/linux/zclient.h                |   3 +-
 core/sqf/src/tm/tmddlrequests.cpp               |   8 +-
 core/sql/bin/SqlciErrors.txt                    |   1 +
 core/sql/cli/Statement.cpp                      |   2 +-
 core/sql/comexe/ComTdbExeUtil.cpp               |  26 +-
 core/sql/comexe/ComTdbExeUtil.h                 | 112 ++-
 core/sql/comexe/ComTdbSort.h                    |   4 +-
 core/sql/common/ComSmallDefs.h                  |   8 +
 core/sql/common/NAType.cpp                      | 201 +++++
 core/sql/common/NAType.h                        |   2 +
 core/sql/common/OperTypeEnum.h                  |   3 +-
 core/sql/executor/ExExeUtil.h                   |   8 +-
 core/sql/executor/ExExeUtilGet.cpp              | 365 ++++-----
 core/sql/executor/ExExeUtilLoad.cpp             |  46 +-
 core/sql/executor/ExExeUtilMisc.cpp             |   6 +-
 core/sql/executor/ExFastTransport.cpp           |   6 +-
 core/sql/executor/ExHbaseAccess.cpp             |  30 +
 core/sql/executor/ExHbaseAccess.h               |   1 +
 core/sql/executor/ExHdfsScan.cpp                |  19 +-
 core/sql/executor/ExHdfsScan.h                  |   1 +
 core/sql/executor/HBaseClient_JNI.cpp           | 795 +++++++------------
 core/sql/executor/HBaseClient_JNI.h             |  12 +
 core/sql/executor/JavaObjectInterface.cpp       |  14 +
 core/sql/executor/JavaObjectInterface.h         |   4 +-
 core/sql/executor/SequenceFileReader.cpp        | 127 ---
 core/sql/executor/SequenceFileReader.h          |  12 -
 core/sql/executor/ex_sort.cpp                   | 222 ++++--
 core/sql/executor/ex_sort.h                     | 130 ++-
 core/sql/executor/hiveHook.cpp                  | 168 +++-
 core/sql/exp/ExpHbaseDefs.h                     |   6 +
 core/sql/exp/ExpHbaseInterface.cpp              |  45 ++
 core/sql/exp/ExpHbaseInterface.h                |  12 +-
 core/sql/exp/ExpLOB.cpp                         |  22 +-
 core/sql/exp/ExpLOBaccess.cpp                   |  38 +-
 core/sql/exp/ExpLOBaccess.h                     |  11 +-
 core/sql/exp/ExpLOBinterface.cpp                |   5 +-
 core/sql/exp/ExpLOBinterface.h                  |   2 +-
 core/sql/exp/ExpPackDefs.cpp                    |   5 +
 core/sql/exp/ExpSqlTupp.h                       |   7 +-
 core/sql/exp/exp_clause.cpp                     |   6 +
 core/sql/exp/exp_clause.h                       |   3 +-
 core/sql/exp/exp_function.cpp                   | 122 +++
 core/sql/exp/exp_function.h                     |  29 +
 core/sql/exp/exp_like.cpp                       |  17 +-
 core/sql/generator/GenItemFunc.cpp              |   9 +
 core/sql/generator/GenRelExeUtil.cpp            |  77 +-
 core/sql/generator/GenRelMisc.cpp               |   2 +-
 core/sql/optimizer/BindItemExpr.cpp             |   1 +
 core/sql/optimizer/BindRelExpr.cpp              |   8 +
 core/sql/optimizer/HDFSHook.cpp                 |   8 +-
 core/sql/optimizer/ImplRule.cpp                 |   2 +-
 core/sql/optimizer/ItemExpr.cpp                 |  11 +-
 core/sql/optimizer/NATable.cpp                  | 186 +----
 core/sql/optimizer/RelRoutine.cpp               |   9 +-
 core/sql/optimizer/RelRoutine.h                 |  14 +-
 core/sql/optimizer/SynthType.cpp                |  24 +
 core/sql/optimizer/hiveHook.h                   | 116 +--
 core/sql/parser/ParKeyWords.cpp                 |   1 +
 core/sql/parser/sqlparser.y                     |  20 +-
 core/sql/regress/compGeneral/EXPECTED006.SB     | 104 +++
 core/sql/regress/compGeneral/TEST006            |  34 +
 core/sql/regress/executor/EXPECTED002.SB        |   7 +-
 core/sql/regress/executor/TEST002               |   3 +-
 core/sql/regress/seabase/EXPECTED002            | 266 +++++--
 core/sql/regress/seabase/EXPECTED012            |  52 +-
 core/sql/regress/seabase/TEST002                |  28 +
 core/sql/regress/seabase/TEST012                |  11 +
 core/sql/sort/SortTopN.cpp                      |   7 +-
 core/sql/sqlcomp/CmpSeabaseDDLrepos.cpp         |  19 +-
 core/sql/sqludr/sqludr.cpp                      |  22 +
 core/sql/sqludr/sqludr.h                        |   1 +
 .../java/org/trafodion/sql/HBaseClient.java     |  40 +
 .../java/org/trafodion/sql/HBulkLoadClient.java |   2 -
 .../org/trafodion/sql/SequenceFileWriter.java   |  70 +-
 core/sql/ustat/hs_cli.cpp                       | 361 +++++----
 core/sql/ustat/hs_cli.h                         |  67 +-
 core/sql/ustat/hs_globals.cpp                   | 222 +++---
 core/sql/ustat/hs_globals.h                     |  18 +-
 core/sql/ustat/hs_log.h                         |  15 +-
 core/sql/ustat/hs_read.cpp                      |   4 +-
 core/sql/ustat/hs_update.cpp                    |   1 +
 core/sql/ustat/hs_util.h                        |   3 +-
 .../java/org/trafodion/jdbc_test/TestClob.java  |  95 +++
 install/installer/traf_start                    |  13 +-
 106 files changed, 4019 insertions(+), 1784 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/bin/SqlciErrors.txt
----------------------------------------------------------------------
diff --cc core/sql/bin/SqlciErrors.txt
index 3a178d3,e4dda67..c04c3ed
--- a/core/sql/bin/SqlciErrors.txt
+++ b/core/sql/bin/SqlciErrors.txt
@@@ -1581,6 -1580,6 +1581,7 @@@ $1~String1 ----------------------------
  8449 ZZZZZ 99999 BEGINNER MAJOR DBADMIN An invalid HBase table option or option value was specified: ($0~string0 = $1~string1)
  8450 ZZZZZ 99999 BEGINNER MINOR LOGONLY ESP number ($0~Int0) has processed ($1~Int1) transactions of the LRU operation on table $2~String0.
  8451 ZZZZZ 99999 BEGINNER MINOR LOGONLY Error returned while retrieving region stats from hbase.
++8452 ZZZZZ 99999 BEGINNER MINOR LOGONLY The regular expression is invalid. Cause: $0~String0
  8550 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Error $0~NSKCode was returned by the Data Access Manager.
  8551 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Error $0~NSKCode was returned by the file system on $0~string0$1~string1.
  8552 ZZZZZ 99999 ADVANCED MAJOR DBADMIN Error $0~int0 was returned by the file system while fetching the version of the system $0~string0.

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/common/OperTypeEnum.h
----------------------------------------------------------------------
diff --cc core/sql/common/OperTypeEnum.h
index 33f018b,6d925ad..109485c
--- a/core/sql/common/OperTypeEnum.h
+++ b/core/sql/common/OperTypeEnum.h
@@@ -470,10 -470,6 +470,9 @@@ enum OperatorTypeEnum 
                          ITM_OLAP_LEAD = 2176,
                          ITM_OLAP_LAG = 2177,
  
 +                        // Regular Expression
-                         ITM_PATTERNMATCHINGFUNCTION = 2178,
-                         ITM_REGEXP = 2179,
++                        ITM_REGEXP = 2178,
 +
                          // numeric functions
                          ITM_ABS = 2200,
                          ITM_CEIL = 2201,

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/exp/ExpPackDefs.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/exp/exp_clause.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/exp/exp_clause.h
----------------------------------------------------------------------
diff --cc core/sql/exp/exp_clause.h
index 5028bb1,a3ac13c..df922e6
--- a/core/sql/exp/exp_clause.h
+++ b/core/sql/exp/exp_clause.h
@@@ -208,7 -208,7 +208,8 @@@ public
      FUNC_MD5_ID              = 123,
      FUNC_SHA1_ID             = 124,
      FUNC_SHA2_ID             = 125,
-     REGEXP_CLAUSE_CHAR_ID    = 126
 -    FUNC_SOUNDEX_ID          = 126
++    FUNC_SOUNDEX_ID          = 126,
++    REGEXP_CLAUSE_CHAR_ID    = 127
    };
  
    // max number of operands (including result) in a clause.

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/exp/exp_like.cpp
----------------------------------------------------------------------
diff --cc core/sql/exp/exp_like.cpp
index 845c27d,ec30c61..1ebd588
--- a/core/sql/exp/exp_like.cpp
+++ b/core/sql/exp/exp_like.cpp
@@@ -501,51 -477,6 +501,62 @@@ ex_like_clause_base::processNulls(char 
    return ex_expr::EXPR_OK;
  }
  
 +
 +ex_expr::exp_return_type ExRegexpClauseChar::eval(char *op_data[],
 +					      CollHeap* exHeap,
 +					      ComDiagsArea** diagsArea)
 +{
 +  NABoolean matchFlag = true;
 +  Lng32 len1 = getOperand(1)->getLength(op_data[-MAX_OPERANDS+1]);
 +  Lng32 len2 = getOperand(2)->getLength(op_data[-MAX_OPERANDS+2]);
 +  regex_t reg;
 +  regmatch_t pm[1];
 +  const size_t nmatch = 1;
 +  Lng32 cflags, z;
 +  char * pattern;
 +  char *srcStr= new (exHeap) char[len1+1];
++  char ebuf[128];
 +
 +  cflags = REG_EXTENDED|REG_NEWLINE;
 +  pattern = new (exHeap) char[len2+1];
 +  pattern[len2]=0;
 +  srcStr[len1]=0;
 +
 +  str_cpy_all(pattern, op_data[2], len2);
 +  str_cpy_all(srcStr, op_data[1], len1);
 +
 +  z = regcomp(&reg, pattern, cflags);
 +
 +  if (z != 0){
 +    //ERROR
-     ExRaiseSqlError(exHeap, diagsArea, EXE_BAD_ARG_TO_MATH_FUNC);
-     **diagsArea << DgString0("REGEXP");
++    regerror(z, &reg,ebuf, sizeof(ebuf));
++    ExRaiseSqlError(exHeap, diagsArea, (ExeErrorCode)8452);
++    **diagsArea << DgString0(ebuf);
 +    return ex_expr::EXPR_ERROR;
 +  }
 + 
 +  z = regexec(&reg,srcStr , nmatch, pm, 0);
-   if (z != 0) 
++  if (z == REG_NOMATCH) 
++  {
 +    matchFlag = false;
++  }
++  else if (z != 0) {
++    regerror(z, &reg,ebuf, sizeof(ebuf));
++    ExRaiseSqlError(exHeap, diagsArea, (ExeErrorCode)8452);
++    **diagsArea << DgString0(ebuf);
++    return ex_expr::EXPR_ERROR;
++  }
++  
 +
 +  *(Lng32 *)op_data[0] = (Lng32)matchFlag;
 +  regfree(&reg);
 +
 +  NADELETEBASIC(pattern, exHeap);
 +  NADELETEBASIC(srcStr, exHeap);
 +  
 +  return ex_expr::EXPR_OK;
 +}
 +
  ex_expr::exp_return_type ex_like_clause_char::eval(char *op_data[],
  					      CollHeap* exHeap,
  					      ComDiagsArea** diagsArea)

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/generator/GenItemFunc.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/optimizer/BindItemExpr.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/optimizer/ItemExpr.cpp
----------------------------------------------------------------------
diff --cc core/sql/optimizer/ItemExpr.cpp
index 904fe65,23206a6..0f7c449
--- a/core/sql/optimizer/ItemExpr.cpp
+++ b/core/sql/optimizer/ItemExpr.cpp
@@@ -7933,37 -7927,6 +7934,29 @@@ PatternMatchingFunction::~PatternMatchi
  // -----------------------------------------------------------------------
  Like::~Like() {}
  
 +Regexp::~Regexp() {}
 +
 +
 +ItemExpr * Regexp::copyTopNode(ItemExpr *derivedNode, CollHeap* outHeap)
 +{
 +  ItemExpr *result = NULL;
 +
 +  if (derivedNode == NULL)
 +    {
-       switch (getArity())
- 	{
- 	case 2:
- 	  result = new (outHeap) Regexp(child(0), child(1),
++      result = new (outHeap) Regexp(NULL, NULL,
 +	    numberOfNonWildcardChars_,
 +	    bytesInNonWildcardChars_,
 +	    patternAStringLiteral_,
 +	    oldDefaultSelForLikeWildCardUsed_,
 +	    beginEndKeysApplied_);
- 	  break;
- 	default:
- 	  CMPASSERT(0 == 1);
- 	  break;
- 	}
 +    }
 +  else
 +    result = derivedNode;
 +
 +  return BuiltinFunction::copyTopNode(result, outHeap);
 +
 +} // Regexp::copyTopNode()
 +
  ItemExpr * Like::copyTopNode(ItemExpr *derivedNode, CollHeap* outHeap)
  {
    ItemExpr *result = NULL;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/optimizer/SynthType.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/parser/ParKeyWords.cpp
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/parser/sqlparser.y
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/regress/executor/EXPECTED002.SB
----------------------------------------------------------------------
diff --cc core/sql/regress/executor/EXPECTED002.SB
index f8e5e0b,451eda1..bc4ce8a
--- a/core/sql/regress/executor/EXPECTED002.SB
+++ b/core/sql/regress/executor/EXPECTED002.SB
@@@ -6713,90 -6713,6 +6713,95 @@@ s3            100-90-4
  >>drop table student;
  
  --- SQL operation complete.
 +>>drop table if exists regexp_test;
 +
 +--- SQL operation complete.
 +>>create table regexp_test (c1 char(32) );
 +
 +--- SQL operation complete.
 +>>insert into regexp_test values( '123' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values( '123a' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values( 'english' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values( 'dev@TRAFODION.org' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values( '127.0.0.1' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values( '127.0.0.300' );
 +
 +--- 1 row(s) inserted.
 +>>insert into regexp_test values('\u4e2d\u6587\u6d4b\u8bd5');
 +
 +--- 1 row(s) inserted.
 +>>
 +>>-- only number
 +>>select * from regexp_test where c1 regexp '^[0-9]*\s*$';
 +
 +C1
 +----------
 +
 +123
 +
 +--- 1 row(s) selected.
 +>>select * from regexp_test where c1 regexp '^[[:digit:]]*\s*$';
 +
 +C1
 +----------
 +
 +123
 +
 +--- 1 row(s) selected.
 +>>-- only english
 +>>select * from regexp_test where c1 regexp '^.[A-Za-z]+\s*$';
 +
 +C1
 +----------
 +
 +english
 +
 +--- 1 row(s) selected.
 +>>-- valid email address
 +>>select * from regexp_test where c1 regexp '\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*';
 +
 +C1
 +----------
 +
 +dev@TRAFODION.org
 +
 +--- 1 row(s) selected.
 +>>-- valid ip address
 +>>select * from regexp_test where c1 regexp '^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\s*$';
 +
 +C1
 +----------
 +
 +127.0.0.1
 +
 +--- 1 row(s) selected.
 +>>-- utf-8 code
- >>select * from regexp_test where c1 regexp '[\u4e2d\u6587\u6d4b\u8bd5]';
++>>select * from regexp_test where c1 regexp '(\u4e2d\u6587\u6d4b\u8bd5)';
 +
 +C1
 +----------
 +
 +\u4e2d\u6587\u6d4b\u8bd5
 +
 +--- 1 row(s) selected.
++>>select * from regexp_test where c1 regexp '[^\';
++
++*** ERROR[8452] The regular expression is invalid. Cause: Unmatched [ or [^
++
++--- 0 row(s) selected.
 +>>drop table regexp_test;
 +
 +--- SQL operation complete.
  >>------------------------------------------------------------------------
  >>
  >>obey TEST002(BR0198_MULTI);

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/ba01481f/core/sql/regress/executor/TEST002
----------------------------------------------------------------------
diff --cc core/sql/regress/executor/TEST002
index d79c97d,bfddf5d..a043b82
--- a/core/sql/regress/executor/TEST002
+++ b/core/sql/regress/executor/TEST002
@@@ -1131,28 -1131,6 +1131,29 @@@ execute s1
  control query shape cut;
  cqd ATTEMPT_ESP_PARALLELISM 'OFF';
  drop table student;
 +drop table if exists regexp_test;
 +create table regexp_test (c1 char(32) );
 +insert into regexp_test values( '123' );
 +insert into regexp_test values( '123a' );
 +insert into regexp_test values( 'english' );
 +insert into regexp_test values( 'dev@trafodion.org' );
 +insert into regexp_test values( '127.0.0.1' );
 +insert into regexp_test values( '127.0.0.300' );
 +insert into regexp_test values('\u4e2d\u6587\u6d4b\u8bd5');
 +
 +-- only number
 +select * from regexp_test where c1 regexp '^[0-9]*\s*$';
 +select * from regexp_test where c1 regexp '^[[:digit:]]*\s*$';
 +-- only english
 +select * from regexp_test where c1 regexp '^.[A-Za-z]+\s*$';
 +-- valid email address
 +select * from regexp_test where c1 regexp '\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*';
 +-- valid ip address
 +select * from regexp_test where c1 regexp '^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\s*$';
 +-- utf-8 code
- select * from regexp_test where c1 regexp '[\u4e2d\u6587\u6d4b\u8bd5]';
++select * from regexp_test where c1 regexp '(\u4e2d\u6587\u6d4b\u8bd5)';
++select * from regexp_test where c1 regexp '[^\';
 +drop table regexp_test;
  ------------------------------------------------------------------------
  
  obey TEST002(BR0198_MULTI);