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(®, pattern, cflags);
+
+ if (z != 0){
+ //ERROR
- ExRaiseSqlError(exHeap, diagsArea, EXE_BAD_ARG_TO_MATH_FUNC);
- **diagsArea << DgString0("REGEXP");
++ regerror(z, ®,ebuf, sizeof(ebuf));
++ ExRaiseSqlError(exHeap, diagsArea, (ExeErrorCode)8452);
++ **diagsArea << DgString0(ebuf);
+ return ex_expr::EXPR_ERROR;
+ }
+
+ z = regexec(®,srcStr , nmatch, pm, 0);
- if (z != 0)
++ if (z == REG_NOMATCH)
++ {
+ matchFlag = false;
++ }
++ else if (z != 0) {
++ regerror(z, ®,ebuf, sizeof(ebuf));
++ ExRaiseSqlError(exHeap, diagsArea, (ExeErrorCode)8452);
++ **diagsArea << DgString0(ebuf);
++ return ex_expr::EXPR_ERROR;
++ }
++
+
+ *(Lng32 *)op_data[0] = (Lng32)matchFlag;
+ regfree(®);
+
+ 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);