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/08/06 02:46:08 UTC

[1/5] incubator-trafodion git commit: [JIRA TRAFODION-2141] Cluster view of hbase stats

Repository: incubator-trafodion
Updated Branches:
  refs/heads/master a6b621121 -> 9f3542dcf


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/regress/seabase/EXPECTED002
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/EXPECTED002 b/core/sql/regress/seabase/EXPECTED002
index 83a8bb5..73a9b91 100644
--- a/core/sql/regress/seabase/EXPECTED002
+++ b/core/sql/regress/seabase/EXPECTED002
@@ -55,14 +55,15 @@ A            B
 
 --- 1 row(s) selected.
 >>
->>obey TEST002(dml);
+>>
+>>obey TEST002(region_stats);
 >>set schema t002sch;
 
 --- SQL operation complete.
 >>invoke table(region stats ());
 
 -- Definition of Trafodion table TRAFODION.T002SCH.EXE_UTIL_REGION_STATS__
--- Definition current  Thu Feb  4 19:52:31 2016
+-- Definition current  Thu Aug  4 19:25:16 2016
 
   (
     CATALOG_NAME                     CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
@@ -71,6 +72,8 @@ A            B
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
   , OBJECT_NAME                      CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , REGION_SERVER                    CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
   , REGION_NUM                       LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
   , REGION_NAME                      CHAR(512 BYTES) CHARACTER SET UTF8 COLLATE
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -87,7 +90,7 @@ A            B
 >>invoke table(region stats (t002t1));
 
 -- Definition of Trafodion table TRAFODION.T002SCH.EXE_UTIL_REGION_STATS__
--- Definition current  Thu Feb  4 19:52:33 2016
+-- Definition current  Thu Aug  4 19:25:18 2016
 
   (
     CATALOG_NAME                     CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
@@ -96,6 +99,8 @@ A            B
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
   , OBJECT_NAME                      CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , REGION_SERVER                    CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
   , REGION_NUM                       LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
   , REGION_NAME                      CHAR(512 BYTES) CHARACTER SET UTF8 COLLATE
       DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
@@ -120,7 +125,7 @@ A            B
 (EXPR)                                                    REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES  STORE_FILE_UNCOMP_SIZE  STORE_FILE_SIZE       MEM_STORE_SIZE        (EXPR)                         (EXPR)
 --------------------------------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------  ----------------------  --------------------  --------------------  -----------------------------  ------------------------------
 
-T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1/d522d6121fbfa207bd9c28442738415e                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2                0                       0                     0                     0  ReadRequestsCount: 2           WriteRequestsCount: 1         
+T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1/1470338662761                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0                       0                     0                     0  ReadRequestsCount: 2           WriteRequestsCount: 1         
 
 --- 1 row(s) selected.
 >>
@@ -134,7 +139,7 @@ T002SCH.T002T1                                                               1
 (EXPR)                                                    REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES  STORE_FILE_UNCOMP_SIZE  STORE_FILE_SIZE       MEM_STORE_SIZE        (EXPR)                         (EXPR)
 --------------------------------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------  ----------------------  --------------------  --------------------  -----------------------------  ------------------------------
 
-T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I1/df8c7764dba0c8c2a12fa21a751519c8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
+T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I1/1470338665125                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
 
 --- 1 row(s) selected.
 >>
@@ -148,10 +153,10 @@ T002SCH.T002T1                                                               1
 (EXPR)                                                    REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES  STORE_FILE_UNCOMP_SIZE  STORE_FILE_SIZE       MEM_STORE_SIZE        (EXPR)                         (EXPR)
 --------------------------------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------  ----------------------  --------------------  --------------------  -----------------------------  ------------------------------
 
-T002SCH.T002T2                                                               1  TRAFODION.T002SCH.T002T2/9b49ca8c556929d29bc8ddb78ff25440                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
-T002SCH.T002T2                                                               2  TRAFODION.T002SCH.T002T2/6ab09339afe346a5ff0f44e490f2aca9                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2                0                       0                     0                     0  ReadRequestsCount: 1           WriteRequestsCount: 1         
-T002SCH.T002T2                                                               3  TRAFODION.T002SCH.T002T2/f4019a144619415f704e8649c3129bfb                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
-T002SCH.T002T2                                                               4  TRAFODION.T002SCH.T002T2/68b4bbc50fad222c73ccd471fae3f3a8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
+T002SCH.T002T2                                                               1  TRAFODION.T002SCH.T002T2/1470338698762                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
+T002SCH.T002T2                                                               2  TRAFODION.T002SCH.T002T2/1470338698762                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0                       0                     0                     0  ReadRequestsCount: 1           WriteRequestsCount: 1         
+T002SCH.T002T2                                                               3  TRAFODION.T002SCH.T002T2/1470338698762                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
+T002SCH.T002T2                                                               4  TRAFODION.T002SCH.T002T2/1470338698762                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 0         
 
 --- 4 row(s) selected.
 >>
@@ -165,7 +170,7 @@ T002SCH.T002T2                                                               4
 (EXPR)                                                    REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES  STORE_FILE_UNCOMP_SIZE  STORE_FILE_SIZE       MEM_STORE_SIZE        (EXPR)                         (EXPR)
 --------------------------------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------  ----------------------  --------------------  --------------------  -----------------------------  ------------------------------
 
-T002SCH.T002T2                                                               1  TRAFODION.T002SCH.T002T2I1/7ff66f4b5dae3ef6d951d5cfc904248f                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
+T002SCH.T002T2                                                               1  TRAFODION.T002SCH.T002T2I1/1470338701334                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2                0                       0                     0                     0  ReadRequestsCount: 1           WriteRequestsCount: 1         
 
 --- 1 row(s) selected.
 >>
@@ -223,8 +228,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1/d522d6121fbfa207bd9c28442738415e
+  RegionName:         TRAFODION.T002SCH.T002T1/1470338662761
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -255,8 +261,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1I1/df8c7764dba0c8c2a12fa21a751519c8
+  RegionName:         TRAFODION.T002SCH.T002T1I1/1470338665125
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -287,8 +294,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T2/9b49ca8c556929d29bc8ddb78ff25440
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -297,8 +305,9 @@ Stats Details
   ReadRequestsCount:  0
   WriteRequestsCount: 0
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          2
-  RegionName:         TRAFODION.T002SCH.T002T2/6ab09339afe346a5ff0f44e490f2aca9
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -307,8 +316,9 @@ Stats Details
   ReadRequestsCount:  1
   WriteRequestsCount: 1
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          3
-  RegionName:         TRAFODION.T002SCH.T002T2/f4019a144619415f704e8649c3129bfb
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -317,8 +327,9 @@ Stats Details
   ReadRequestsCount:  0
   WriteRequestsCount: 0
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          4
-  RegionName:         TRAFODION.T002SCH.T002T2/68b4bbc50fad222c73ccd471fae3f3a8
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -349,8 +360,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T2I1/7ff66f4b5dae3ef6d951d5cfc904248f
+  RegionName:         TRAFODION.T002SCH.T002T2I1/1470338701334
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -382,8 +394,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1/d522d6121fbfa207bd9c28442738415e
+  RegionName:         TRAFODION.T002SCH.T002T1/1470338662761
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -417,8 +430,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.SB_HISTOGRAMS/594c70b4a5fbe31a1100dd1bda47da5c
+  RegionName:         TRAFODION.T002SCH.SB_HISTOGRAMS/1470338658677
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -445,8 +459,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.SB_HISTOGRAM_INTERVALS/94b6ffefc5df9a62180e5a2401e18d9e
+  RegionName:         TRAFODION.T002SCH.SB_HISTOGRAM_INTERVALS/1470338660549
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -473,8 +488,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1/d522d6121fbfa207bd9c28442738415e
+  RegionName:         TRAFODION.T002SCH.T002T1/1470338662761
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -501,8 +517,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T2/9b49ca8c556929d29bc8ddb78ff25440
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -511,8 +528,9 @@ Stats Details
   ReadRequestsCount:  0
   WriteRequestsCount: 0
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          2
-  RegionName:         TRAFODION.T002SCH.T002T2/6ab09339afe346a5ff0f44e490f2aca9
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -521,8 +539,9 @@ Stats Details
   ReadRequestsCount:  1
   WriteRequestsCount: 1
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          3
-  RegionName:         TRAFODION.T002SCH.T002T2/f4019a144619415f704e8649c3129bfb
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -531,8 +550,9 @@ Stats Details
   ReadRequestsCount:  0
   WriteRequestsCount: 0
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          4
-  RegionName:         TRAFODION.T002SCH.T002T2/68b4bbc50fad222c73ccd471fae3f3a8
+  RegionName:         TRAFODION.T002SCH.T002T2/1470338698762
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -556,8 +576,8 @@ Stats Details
 (EXPR)                                                    REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES  STORE_FILE_UNCOMP_SIZE  STORE_FILE_SIZE       MEM_STORE_SIZE        (EXPR)                         (EXPR)
 --------------------------------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------  ----------------------  --------------------  --------------------  -----------------------------  ------------------------------
 
-T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I1/df8c7764dba0c8c2a12fa21a751519c8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
-T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I2/75b6084d412d14874f15e83cda7ae6ce                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
+T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I1/1470338665125                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
+T002SCH.T002T1                                                               1  TRAFODION.T002SCH.T002T1I2/1470338670665                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    2                0                       0                     0                     0  ReadRequestsCount: 0           WriteRequestsCount: 1         
 
 --- 2 row(s) selected.
 >>get region stats for 
@@ -582,8 +602,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1I1/df8c7764dba0c8c2a12fa21a751519c8
+  RegionName:         TRAFODION.T002SCH.T002T1I1/1470338665125
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -610,8 +631,9 @@ Stats Summary
 Stats Details
 =============
 
+  RegionServer:       ansharma-3:44229
   RegionNum:          1
-  RegionName:         TRAFODION.T002SCH.T002T1I2/75b6084d412d14874f15e83cda7ae6ce
+  RegionName:         TRAFODION.T002SCH.T002T1I2/1470338670665
   NumStores:          2
   NumStoreFiles:      0
   UncompressedSize:   0 (less than 1MB)
@@ -760,4 +782,97 @@ Stats Summary
 
 --- SQL operation complete.
 >>
+>>-- where preds
+>>select cast(trim(schema_name) || '.' || trim(object_name) as char(30) character set iso88591),
++> region_num, region_name, num_stores, num_store_files
++> from table(region stats(t002t1))
++> where object_name = 'T002T1';
+
+(EXPR)                          REGION_NUM            REGION_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       NUM_STORES   NUM_STORE_FILES
+------------------------------  --------------------  --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  -----------  ---------------
+
+T002SCH.T002T1                                     1  TRAFODION.T002SCH.T002T1/1470338662761                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      2                0
+
+--- 1 row(s) selected.
+>>
+>>select  cast(trim(object_name) as char(30) character set iso88591),
++> sum(store_file_size)
++> from table(region statistics (using (select * from (
++>   get tables in schema t002sch, no header, return full names) x(a) ))) 
++> where object_name like 'T002T1%'
++> group by 1 order by 2 desc;
+
+(EXPR)                          (EXPR)              
+------------------------------  --------------------
+
+T002T1                                             0
+
+--- 1 row(s) selected.
+>>
+>>obey TEST002(cluster_stats);
+>>invoke table(cluster stats());
+
+-- Definition of Trafodion table TRAFODION.T002SCH.EXE_UTIL_CLUSTER_STATS__
+-- Definition current  Thu Aug  4 19:25:21 2016
+
+  (
+    REGION_SERVER                    CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , REGION_NAME                      CHAR(512 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , CATALOG_NAME                     CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , SCHEMA_NAME                      CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , OBJECT_NAME                      CHAR(256 BYTES) CHARACTER SET UTF8 COLLATE
+      DEFAULT NO DEFAULT NOT NULL NOT DROPPABLE
+  , NUM_STORES                       INT NO DEFAULT NOT NULL NOT DROPPABLE
+  , NUM_STORE_FILES                  INT NO DEFAULT NOT NULL NOT DROPPABLE
+  , STORE_FILE_UNCOMP_SIZE           LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
+  , STORE_FILE_SIZE                  LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
+  , MEM_STORE_SIZE                   LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
+  , READ_REQUESTS_COUNT              LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
+  , WRITE_REQUESTS_COUNT             LARGEINT NO DEFAULT NOT NULL NOT DROPPABLE
+  )
+
+--- SQL operation complete.
+>>
+>>select cast(trim(schema_name) || '.' || trim(object_name) as char(30) character set iso88591),
++> sum(store_file_size)
++> from table(cluster stats())
++> where schema_name = 'T002SCH'
++> group by 1 order by 2 desc;
+
+(EXPR)                          (EXPR)              
+------------------------------  --------------------
+
+T002SCH.SB_HISTOGRAM_INTERVALS                     0
+T002SCH.T002T1I2                                   0
+T002SCH.SB_HISTOGRAMS                              0
+T002SCH.T002T1                                     0
+T002SCH.T002T2                                     0
+T002SCH.T002T1I1                                   0
+T002SCH.T002T2I1                                   0
+
+--- 7 row(s) selected.
+>>
+>>select cast('RegionName: ' || trim(region_name) as char(30) character set iso88591),
++> sum(store_file_size)
++> from table(cluster stats())
++> where schema_name = 'T002SCH'
++> group by 1 order by 2 desc;
+
+(EXPR)                          (EXPR)              
+------------------------------  --------------------
+
+RegionName: 1470338670665                          0
+RegionName: 1470338698762                          0
+RegionName: 1470338658677                          0
+RegionName: 1470338660549                          0
+RegionName: 1470338665125                          0
+RegionName: 1470338701334                          0
+RegionName: 1470338662761                          0
+
+--- 7 row(s) selected.
+>>
 >>log;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/regress/seabase/FILTER002
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/FILTER002 b/core/sql/regress/seabase/FILTER002
index 28e1a95..44c4056 100755
--- a/core/sql/regress/seabase/FILTER002
+++ b/core/sql/regress/seabase/FILTER002
@@ -25,7 +25,9 @@
 
 fil=$1
 sed "
-s/\(RegionName:[ ]*TRAFODION.[A-Z0-9._]*\/\)[A-Za-z0-9]*/\1REGION-NAME/g
+s/^\([ ]*RegionServer:[ ]*[\.]*\) .*/\1 RegionServer removed/g
+s/^\([ ]*RegionName:[ ]*[\.]*\) .*/\1 RegionName removed/g
+#s/\(RegionName:[ ]*TRAFODION.[A-Z0-9._]*\/\)[A-Za-z0-9]*/\1REGION-NAME/g
 s/TRAFODION\.T002SCH\.T002[A-Z0-9]*\/[A-Za-z0-9]*/REGION_NAME /g
 s/ReadRequestsCount: [ ]*[0-9]*/READ_REQUESTS_COUNT /g
 s/WriteRequestsCount: [ ]*[0-9]*/WRITE_REQUESTS_COUNT /g

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/regress/seabase/TEST002
----------------------------------------------------------------------
diff --git a/core/sql/regress/seabase/TEST002 b/core/sql/regress/seabase/TEST002
index 5d9fd9d..a013e1b 100644
--- a/core/sql/regress/seabase/TEST002
+++ b/core/sql/regress/seabase/TEST002
@@ -19,13 +19,14 @@
 --
 -- @@@ END COPYRIGHT @@@
 
--- Tests to retrieve region space and access stats
+-- Tests to retrieve region/cluster space and access stats
 
 obey TEST002(clean_up);
 
 log LOG002 clear;
 obey TEST002(setup);
-obey TEST002(dml);
+obey TEST002(region_stats);
+obey TEST002(cluster_stats);
 log;
 exit;
 
@@ -54,7 +55,8 @@ sh regrhbase.ksh flush 'TRAFODION.T002SCH.T002T2I1';
 
 select * from t002t2;
 
-?section dml
+
+?section region_stats
 set schema t002sch;
 invoke table(region stats ());
 invoke table(region stats (t002t1));
@@ -136,9 +138,37 @@ get region stats for
   (select * from 
     (get tables in schema t002sch, no header, return full names)x(a)), summary;
 
+-- where preds
+select cast(trim(schema_name) || '.' || trim(object_name) as char(30) character set iso88591),
+ region_num, region_name, num_stores, num_store_files
+ from table(region stats(t002t1))
+ where object_name = 'T002T1';
+
+select  cast(trim(object_name) as char(30) character set iso88591),
+ sum(store_file_size)
+ from table(region statistics (using (select * from (
+   get tables in schema t002sch, no header, return full names) x(a) ))) 
+ where object_name like 'T002T1%'
+ group by 1 order by 2 desc;
+
+?section cluster_stats
+invoke table(cluster stats());
+
+select cast(trim(schema_name) || '.' || trim(object_name) as char(30) character set iso88591),
+ sum(store_file_size)
+ from table(cluster stats())
+ where schema_name = 'T002SCH'
+ group by 1 order by 2 desc;
+
+select cast('RegionName: ' || trim(region_name) as char(30) character set iso88591),
+ sum(store_file_size)
+ from table(cluster stats())
+ where schema_name = 'T002SCH'
+ group by 1 order by 2 desc;
+
 ?section clean_up
 set schema t002sch;
 drop table t002t1 cascade;
 drop table t002t2 cascade;
-drop schema t002sch;
+drop schema t002sch cascade;
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
----------------------------------------------------------------------
diff --git a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
index 988d382..6f7b60b 100644
--- a/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
+++ b/core/sql/sqlcomp/CmpSeabaseDDLtable.cpp
@@ -8581,6 +8581,8 @@ short CmpSeabaseDDL::getTextFromMD(const char * catalogName,
       Lng32 decodedLen =
         str_decode(decodedData, decodedMaxLen,
                    binaryText.data(), binaryText.length());
+      if (decodedLen < 0)
+        return -1;
 
       outText.append(decodedData, decodedLen);
     }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
index ea2c7d8..d1a68ec 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
@@ -106,6 +106,15 @@ public class HBaseClient {
 
     private PoolMap<String, HTableClient> hTableClientsFree;
     private PoolMap<String, HTableClient> hTableClientsInUse;
+
+    // variables used for getRegionStats() and getClusterStats()
+    private int regionStatsEntries = 0;
+    private int clusterStatsState = 1;
+    private TrafRegionStats rsc;
+    private byte[][] regionInfo = null;
+    private int currRegion = 0;
+    private static final int MAX_REGION_INFO_ROWS = 100;
+
     // this set of constants MUST be kept in sync with the C++ enum in
     // ExpHbaseDefs.h
     public static final int HBASE_NAME = 0;
@@ -733,12 +742,110 @@ public class HBaseClient {
             return hbaseTables;
     }
 
+    public byte[][]  getClusterStats() 
+             throws MasterNotRunningException, IOException {
+            if (logger.isDebugEnabled()) logger.debug("HBaseClient.getClusterStats called.");
+
+            while (true) {
+                switch (clusterStatsState) {
+                case 1:
+                    {
+                        rsc = new TrafRegionStats();
+                        rsc.Open();
+
+                        regionInfo = new byte[MAX_REGION_INFO_ROWS][];
+
+                        currRegion = 0;
+
+                        clusterStatsState = 2;
+                    }
+                    break;
+                    
+                case 3:
+                    {
+                        rsc.Close();
+                        
+                        clusterStatsState = 1;
+
+                         return null;
+                    }
+                    
+                case 2:
+                    {
+                        if (currRegion >= MAX_REGION_INFO_ROWS) {
+
+                            regionStatsEntries = currRegion;
+
+                            currRegion = 0;
+                            return regionInfo;
+                        }
+                            
+                        if (! rsc.GetNextRegion()) {
+                            if (currRegion > 0) {
+                                clusterStatsState = 3;
+
+                                regionStatsEntries = currRegion;
+
+                                
+                                currRegion = 0;
+                                return regionInfo;
+                            }
+
+                            clusterStatsState = 3;
+                            break;
+                        }
+                     
+                        SizeInfo regionSizeInfo  = rsc.getCurrRegionSizeInfo();
+
+                        String serverName = regionSizeInfo.serverName;
+                        String regionName = regionSizeInfo.regionName;
+                        String tableName  = regionSizeInfo.tableName;
+                        
+                        int  numStores           = regionSizeInfo.numStores;
+                        int  numStoreFiles       = regionSizeInfo.numStoreFiles;
+                        Long storeUncompSize     = regionSizeInfo.storeUncompSize;
+                        Long storeFileSize       = regionSizeInfo.storeFileSize;
+                        Long memStoreSize        = regionSizeInfo.memStoreSize;
+                        Long readRequestsCount   = regionSizeInfo.readRequestsCount;
+                        Long writeRequestsCount   = regionSizeInfo.writeRequestsCount;
+                        
+                        String oneRegion = "";
+                        oneRegion += serverName + "|";
+                        oneRegion += regionName + "|";
+                        oneRegion += tableName  + "|";
+                        oneRegion += String.valueOf(numStores) + "|";
+                        oneRegion += String.valueOf(numStoreFiles) + "|";
+                        oneRegion += String.valueOf(storeUncompSize) + "|";
+                        oneRegion += String.valueOf(storeFileSize) + "|";
+                        oneRegion += String.valueOf(memStoreSize) + "|";
+                        oneRegion += String.valueOf(readRequestsCount) + "|";
+                        oneRegion += String.valueOf(writeRequestsCount) + "|";
+                        
+                        regionInfo[currRegion++] = oneRegion.getBytes();
+
+                    }
+
+                } // switch
+            }
+
+    }
+
+    // number of regionInfo entries returned by getRegionStats.
+    public int getRegionStatsEntries() {
+ 
+        return regionStatsEntries;
+    }
 
     public byte[][]  getRegionStats(String tableName) 
              throws MasterNotRunningException, IOException {
             if (logger.isDebugEnabled()) logger.debug("HBaseClient.getRegionStats(" + tableName + ") called.");
 
             Admin admin = getConnection().getAdmin();
+            if (tableName == null) //tableName.isEmpty())
+                return getClusterStats();
+
+            //            HBaseAdmin admin = new HBaseAdmin(config);
+
             HTable htbl = new HTable(config, tableName);
             HRegionInfo hregInfo = null;
             byte[][] regionInfo = null;
@@ -748,27 +855,31 @@ public class HBaseClient {
                 NavigableMap<HRegionInfo, ServerName> locations
                     = htbl.getRegionLocations();
                 regionInfo = new byte[locations.size()][]; 
-                int i = 0; 
+                regionStatsEntries = 0; 
  
                 for (Map.Entry<HRegionInfo, ServerName> entry: 
                          locations.entrySet()) {
                 
                     hregInfo = entry.getKey();                    
-                    byte[] regionName = hregInfo.getRegionName();
+                    ServerName serverName = entry.getValue();
+                     byte[] regionName = hregInfo.getRegionName();
                     String encodedRegionName = hregInfo.getEncodedName();
                     String ppRegionName = HRegionInfo.prettyPrint(encodedRegionName);
-                    SizeInfo regionSizeInfo = rsc.getRegionSizeInfo(regionName);
+                    SizeInfo regionSizeInfo  = rsc.getRegionSizeInfo(regionName);
+                    String serverNameStr     = regionSizeInfo.serverName;
                     int  numStores           = regionSizeInfo.numStores;
                     int  numStoreFiles       = regionSizeInfo.numStoreFiles;
                     Long storeUncompSize     = regionSizeInfo.storeUncompSize;
                     Long storeFileSize       = regionSizeInfo.storeFileSize;
                     Long memStoreSize        = regionSizeInfo.memStoreSize;
                     Long readRequestsCount   = regionSizeInfo.readRequestsCount;
-                    Long writeRequestsCount   = regionSizeInfo.writeRequestsCount;
+                    Long writeRequestsCount  = regionSizeInfo.writeRequestsCount;
 
+                    String ppTableName = regionSizeInfo.tableName;
+                    ppRegionName = regionSizeInfo.regionName;
                     String oneRegion;
-                    //                    oneRegion  = "/hbase/data/hbase/default/" + tableName + "/" + ppRegionName + "|";
-                    oneRegion  = tableName + "/" + ppRegionName + "|";
+                    oneRegion = serverNameStr + "|";
+                    oneRegion += ppTableName + "/" + ppRegionName + "|";
                     oneRegion += String.valueOf(numStores) + "|";
                     oneRegion += String.valueOf(numStoreFiles) + "|";
                     oneRegion += String.valueOf(storeUncompSize) + "|";
@@ -777,7 +888,7 @@ public class HBaseClient {
                     oneRegion += String.valueOf(readRequestsCount) + "|";
                     oneRegion += String.valueOf(writeRequestsCount) + "|";
                     
-                    regionInfo[i++] = oneRegion.getBytes();
+                    regionInfo[regionStatsEntries++] = oneRegion.getBytes();
 
                 }
             }

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/src/main/java/org/trafodion/sql/TrafRegionStats.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/TrafRegionStats.java b/core/sql/src/main/java/org/trafodion/sql/TrafRegionStats.java
index 9cf4f67..89fa90f 100644
--- a/core/sql/src/main/java/org/trafodion/sql/TrafRegionStats.java
+++ b/core/sql/src/main/java/org/trafodion/sql/TrafRegionStats.java
@@ -24,6 +24,7 @@ package org.trafodion.sql;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.ClusterStatus;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.RegionLoad;
@@ -31,18 +32,25 @@ import org.apache.hadoop.hbase.ServerLoad;
 import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
 
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.TreeSet;
 import org.apache.hadoop.hbase.util.Bytes;
 
+import java.lang.Byte;
+
 class SizeInfo {
+    String serverName;
+    String regionName;
+    String tableName;
     int  numStores;
     int  numStoreFiles;
     Long storeUncompSize;
@@ -53,10 +61,22 @@ class SizeInfo {
 };
 
 public class TrafRegionStats {
-    
+
+    private HBaseAdmin hbAdmin;
+    private ClusterStatus clusterStatus;
+    private Collection<ServerName> servers;
+    private ServerName server;
+    private ServerLoad serverLoad;
+    private Iterator iterServer;
+    private Iterator iterRegion;
+    private boolean firstTime;
+    final long megaByte = 1024L * 1024L;
+
     private final Map<byte[], SizeInfo> sizeInfoMap = 
         new TreeMap<byte[], SizeInfo>(Bytes.BYTES_COMPARATOR);
-    
+
+    private SizeInfo currRegionSizeInfo = null;
+
     static final String ENABLE_REGIONSIZECALCULATOR = "hbase.regionsizecalculator.enable";
     
     boolean enabled(Configuration configuration) {
@@ -74,7 +94,9 @@ public class TrafRegionStats {
     public Map<byte[], SizeInfo> getRegionSizeMap() {
         return Collections.unmodifiableMap(sizeInfoMap);
     }
+
     
+
     public TrafRegionStats (HTable table, Admin admin) throws IOException {
         
             if (!enabled(table.getConfiguration())) {
@@ -96,7 +118,7 @@ public class TrafRegionStats {
             //iterate all cluster regions, filter regions from our table and compute their size
             for (ServerName serverName: servers) {
                 ServerLoad serverLoad = clusterStatus.getLoad(serverName);
-                
+
                 for (RegionLoad regionLoad: serverLoad.getRegionsLoad().values()) {
                     byte[] regionId = regionLoad.getName();
                     
@@ -111,7 +133,12 @@ public class TrafRegionStats {
                         // this method is available in HBase 2.0.0
                         //                        Long lastMajorCompactionTs = regionLoad.getLastMajorCompactionTs();
 
+                        byte[][] regNameParts = HRegionInfo.parseRegionName(regionLoad.getName());
+
                         SizeInfo sizeInfo = new SizeInfo();
+                        sizeInfo.serverName = serverName.toShortString();
+                        sizeInfo.regionName = new String(regNameParts[2]); 
+                        sizeInfo.tableName = new String(regNameParts[0]);
                         sizeInfo.numStores = numStores;
                         sizeInfo.numStoreFiles = numStoreFiles;
                         sizeInfo.storeUncompSize = storeUncompSizeBytes;
@@ -128,5 +155,90 @@ public class TrafRegionStats {
             }
             
     }
+
+
+    public TrafRegionStats () throws IOException {
+        Configuration config = HBaseConfiguration.create();
+
+        hbAdmin = new HBaseAdmin(config);
+    }
+
+    public boolean Open () throws IOException {
+        
+        clusterStatus = hbAdmin.getClusterStatus();
+        servers = clusterStatus.getServers();
+        iterServer = servers.iterator();
+
+        firstTime = true;
+
+        return true;
+    }
+
+    public boolean GetNextServer () throws IOException {
+        
+        if (! iterServer.hasNext())
+            return false;
+        
+        server = (ServerName)iterServer.next();
+        serverLoad = clusterStatus.getLoad(server);
+
+        return true;
+    }
+
+    public boolean GetNextRegion () throws IOException {
+        
+        if ((firstTime) || (! iterRegion.hasNext())) {
+            firstTime = false;
+            if (! GetNextServer())
+                return false;
+            else
+              iterRegion = serverLoad.getRegionsLoad().values().iterator();  
+        }
+
+        RegionLoad regionLoad = (RegionLoad)iterRegion.next();
+
+        byte[] regionId = regionLoad.getName();
+        
+        int  numStores = regionLoad.getStores();
+        int  numStoreFiles = regionLoad.getStorefiles();
+        Long storeUncompSizeBytes = regionLoad.getStoreUncompressedSizeMB() * megaByte;
+        Long storeFileSizeBytes = regionLoad.getStorefileSizeMB() * megaByte;
+        Long memStoreSizeBytes = regionLoad.getMemStoreSizeMB() * megaByte;
+        
+        // this method is available in HBase 2.0.0
+        // Long lastMajorCompactionTs = regionLoad.getLastMajorCompactionTs();
+        
+        byte[][] regNameParts = HRegionInfo.parseRegionName(regionLoad.getName());
+
+        currRegionSizeInfo = new SizeInfo();
+
+        currRegionSizeInfo.serverName = new String(server.toShortString());
+        currRegionSizeInfo.regionName = new String(regNameParts[2]);
+
+  
+        currRegionSizeInfo.tableName = new String(regNameParts[0]);
+        currRegionSizeInfo.numStores = numStores;
+        currRegionSizeInfo.numStoreFiles = numStoreFiles;
+        currRegionSizeInfo.storeUncompSize = storeUncompSizeBytes;
+        currRegionSizeInfo.storeFileSize = storeFileSizeBytes;
+        currRegionSizeInfo.memStoreSize = memStoreSizeBytes;
+        
+        currRegionSizeInfo.readRequestsCount = regionLoad.getReadRequestsCount();
+        currRegionSizeInfo.writeRequestsCount = regionLoad.getWriteRequestsCount();
+
+        return true;
+    }
+
+    public SizeInfo getCurrRegionSizeInfo() {
+        return currRegionSizeInfo;
+    }
+    
+    public boolean Close () throws IOException {
+        
+        hbAdmin.close();
+
+        return true;
+    }
+
 }
 


[3/5] incubator-trafodion git commit: fix to a core during retrieval of cluster stats

Posted by an...@apache.org.
fix to a core during retrieval of cluster stats

crash showed on on jenkins machine


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

Branch: refs/heads/master
Commit: 0e1dd175647219c7b350107f04af5e03d3b7757a
Parents: 92c8453
Author: Anoop Sharma <an...@esgyn.com>
Authored: Fri Aug 5 01:25:26 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Fri Aug 5 01:25:26 2016 +0000

----------------------------------------------------------------------
 core/sql/optimizer/OptRange.cpp                    | 17 ++++++++++++++---
 .../main/java/org/trafodion/sql/HBaseClient.java   | 11 +++++------
 2 files changed, 19 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0e1dd175/core/sql/optimizer/OptRange.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/OptRange.cpp b/core/sql/optimizer/OptRange.cpp
index 2d773c2..c5f1610 100644
--- a/core/sql/optimizer/OptRange.cpp
+++ b/core/sql/optimizer/OptRange.cpp
@@ -2429,7 +2429,18 @@ double getDoubleValue(ConstValue* val, logLevel level)
 
   switch (valueStorageSize)
     {
-      case 2:
+      case 1: // tinyint
+        {
+          assertLogAndThrow1(CAT_SQL_COMP_RANGE, level,
+                           isExactNumeric, QRDescriptorException,
+                           "const value of size 1 not exact numeric: %d",
+                           constValType->getTypeQualifier());
+          Int8 i8val;
+          memcpy(&i8val, valuePtr, valueStorageSize);
+          return i8val / scaleDivisor;
+        }
+
+      case 2: // smallint
         {
           assertLogAndThrow1(CAT_SQL_COMP_RANGE, level,
                            isExactNumeric, QRDescriptorException,
@@ -2440,7 +2451,7 @@ double getDoubleValue(ConstValue* val, logLevel level)
           return i16val / scaleDivisor;
         }
 
-      case 4:
+      case 4: //  int
         if (isExactNumeric)
           {
             Lng32 i32val;
@@ -2454,7 +2465,7 @@ double getDoubleValue(ConstValue* val, logLevel level)
             return fltval;
           }
       
-      case 8:
+      case 8: // largeint
         if (isExactNumeric)
           {
             // possible loss of data

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/0e1dd175/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
----------------------------------------------------------------------
diff --git a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
index d1a68ec..b984d3a 100644
--- a/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
+++ b/core/sql/src/main/java/org/trafodion/sql/HBaseClient.java
@@ -748,7 +748,7 @@ public class HBaseClient {
 
             while (true) {
                 switch (clusterStatsState) {
-                case 1:
+                case 1: // open
                     {
                         rsc = new TrafRegionStats();
                         rsc.Open();
@@ -761,16 +761,16 @@ public class HBaseClient {
                     }
                     break;
                     
-                case 3:
+                case 3: // close
                     {
                         rsc.Close();
                         
                         clusterStatsState = 1;
 
-                         return null;
+                        return null;
                     }
                     
-                case 2:
+                case 2: // fetch
                     {
                         if (currRegion >= MAX_REGION_INFO_ROWS) {
 
@@ -786,9 +786,8 @@ public class HBaseClient {
 
                                 regionStatsEntries = currRegion;
 
-                                
                                 currRegion = 0;
-                                return regionInfo;
+                                return Arrays.copyOf(regionInfo, regionStatsEntries);
                             }
 
                             clusterStatsState = 3;


[2/5] incubator-trafodion git commit: [JIRA TRAFODION-2141] Cluster view of hbase stats

Posted by an...@apache.org.
[JIRA TRAFODION-2141] Cluster view of hbase stats

-- added column REGION_SERVER to region stats virtual table

-- added cluster view of hbase stats
   Syntax: select * from table(cluster stats());

-- added support for 'where' pred in stats queries
  Syntax: select * from table(cluster stats()) where schema_name = 'SCH';


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

Branch: refs/heads/master
Commit: 92c845312d1d3bff885cdc5fe92a89d526748377
Parents: 37901fb
Author: Anoop Sharma <an...@esgyn.com>
Authored: Thu Aug 4 19:28:21 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Thu Aug 4 19:28:21 2016 +0000

----------------------------------------------------------------------
 core/sql/bin/SqlciErrors.txt                    |   1 +
 core/sql/comexe/ComTdbExeUtil.cpp               |   3 +-
 core/sql/comexe/ComTdbExeUtil.h                 |  89 +++--
 core/sql/common/str.cpp                         |  23 +-
 core/sql/executor/ExExeUtil.h                   |  48 ++-
 core/sql/executor/ExExeUtilCommon.cpp           |  31 ++
 core/sql/executor/ExExeUtilGet.cpp              | 396 +++++++++++++++++--
 core/sql/executor/ExExplain.cpp                 |  26 +-
 core/sql/executor/HBaseClient_JNI.cpp           |  48 ++-
 core/sql/executor/HBaseClient_JNI.h             |   2 +
 core/sql/exp/ExpHbaseInterface.cpp              |  20 +
 core/sql/exp/ExpHbaseInterface.h                |   3 +
 core/sql/generator/GenRelExeUtil.cpp            |  39 +-
 core/sql/optimizer/BindRelExpr.cpp              |  21 +-
 core/sql/optimizer/RelExeUtil.cpp               |   9 +-
 core/sql/optimizer/RelExeUtil.h                 |  23 +-
 core/sql/parser/sqlparser.y                     |  25 +-
 core/sql/regress/seabase/EXPECTED002            | 173 ++++++--
 core/sql/regress/seabase/FILTER002              |   4 +-
 core/sql/regress/seabase/TEST002                |  38 +-
 core/sql/sqlcomp/CmpSeabaseDDLtable.cpp         |   2 +
 .../java/org/trafodion/sql/HBaseClient.java     | 125 +++++-
 .../java/org/trafodion/sql/TrafRegionStats.java | 118 +++++-
 23 files changed, 1105 insertions(+), 162 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/bin/SqlciErrors.txt
----------------------------------------------------------------------
diff --git a/core/sql/bin/SqlciErrors.txt b/core/sql/bin/SqlciErrors.txt
index f21cf09..9eae741 100644
--- a/core/sql/bin/SqlciErrors.txt
+++ b/core/sql/bin/SqlciErrors.txt
@@ -1570,6 +1570,7 @@ $1~String1 --------------------------------
 8448 ZZZZZ 99999 BEGINNER MAJOR DBADMIN Unable to access Hbase interface. Call to $0~string0 returned error $1~string1($0~int0). Cause: $2~string2.
 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.
 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/92c84531/core/sql/comexe/ComTdbExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbExeUtil.cpp b/core/sql/comexe/ComTdbExeUtil.cpp
index 0f22329..d45c97d 100644
--- a/core/sql/comexe/ComTdbExeUtil.cpp
+++ b/core/sql/comexe/ComTdbExeUtil.cpp
@@ -2885,6 +2885,7 @@ ComTdbExeUtilRegionStats::ComTdbExeUtilRegionStats
      char * tableName,
      ex_expr_base * input_expr,
      ULng32 input_rowlen,
+     ex_expr_base * scan_expr,
      ex_cri_desc * work_cri_desc,
      const unsigned short work_atp_index,
      ex_cri_desc * given_cri_desc,
@@ -2898,7 +2899,7 @@ ComTdbExeUtilRegionStats::ComTdbExeUtilRegionStats
 		     tableName, strlen(tableName),
 		     input_expr, input_rowlen,
 		     NULL, 0,
-		     NULL,
+		     scan_expr,
 		     work_cri_desc, work_atp_index,
 		     given_cri_desc, returned_cri_desc,
 		     down, up, 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/comexe/ComTdbExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/comexe/ComTdbExeUtil.h b/core/sql/comexe/ComTdbExeUtil.h
index 8d40556..1009f75 100644
--- a/core/sql/comexe/ComTdbExeUtil.h
+++ b/core/sql/comexe/ComTdbExeUtil.h
@@ -3509,29 +3509,32 @@ private:
   char         fillersExeUtilHbaseUnLoad_[16];          // 38 - 53
 };
 
+#define STATS_NAME_MAX_LEN 256
+#define STATS_REGION_NAME_MAX_LEN 512
+
 static const ComTdbVirtTableColumnInfo comTdbRegionStatsVirtTableColumnInfo[] =
   {
     { "CATALOG_NAME",                   0, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
     { "SCHEMA_NAME",                    1, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
     { "OBJECT_NAME",                    2, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "REGION_NUM",                     3, COM_USER_COLUMN, REC_BIN64_SIGNED,  4, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "REGION_NAME",                    4, COM_USER_COLUMN, REC_BYTE_F_ASCII,  512, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "NUM_STORES",                     5, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "NUM_STORE_FILES",                6, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "STORE_FILE_UNCOMP_SIZE",         7, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "STORE_FILE_SIZE",                8, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "MEM_STORE_SIZE",                 9, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "READ_REQUESTS_COUNT",           10, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
-    { "WRITE_REQUESTS_COUNT",          11, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  }
+    { "REGION_SERVER",                  3, COM_USER_COLUMN, REC_BYTE_F_ASCII,    256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "REGION_NUM",                     4, COM_USER_COLUMN, REC_BIN64_SIGNED,  4, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "REGION_NAME",                    5, COM_USER_COLUMN, REC_BYTE_F_ASCII,  512, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "NUM_STORES",                     6, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "NUM_STORE_FILES",                7, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "STORE_FILE_UNCOMP_SIZE",         8, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "STORE_FILE_SIZE",                9, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "MEM_STORE_SIZE",                10, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "READ_REQUESTS_COUNT",           11, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "WRITE_REQUESTS_COUNT",          12, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  }
   };
 
-#define STATS_NAME_MAX_LEN 256
-#define STATS_REGION_NAME_MAX_LEN 512
 struct ComTdbRegionStatsVirtTableColumnStruct
 {
   char   catalogName[STATS_NAME_MAX_LEN];
   char   schemaName[STATS_NAME_MAX_LEN];
   char   objectName[STATS_NAME_MAX_LEN];
+  char   regionServer[STATS_NAME_MAX_LEN];
   Int64  regionNum;
   char   regionName[STATS_REGION_NAME_MAX_LEN];
   Lng32  numStores;
@@ -3543,6 +3546,38 @@ struct ComTdbRegionStatsVirtTableColumnStruct
   Int64  writeRequestsCount;
 };
 
+static const ComTdbVirtTableColumnInfo comTdbClusterStatsVirtTableColumnInfo[] =
+  {
+    { "REGION_SERVER",                  0, COM_USER_COLUMN, REC_BYTE_F_ASCII,    256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "REGION_NAME",                    1, COM_USER_COLUMN, REC_BYTE_F_ASCII,  512, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "CATALOG_NAME",                   1, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "SCHEMA_NAME",                    2, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "OBJECT_NAME",                    3, COM_USER_COLUMN, REC_BYTE_F_ASCII,  256, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "NUM_STORES",                     4, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "NUM_STORE_FILES",                5, COM_USER_COLUMN, REC_BIN32_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "STORE_FILE_UNCOMP_SIZE",         6, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "STORE_FILE_SIZE",                7, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "MEM_STORE_SIZE",                 8, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "READ_REQUESTS_COUNT",            9, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  },
+    { "WRITE_REQUESTS_COUNT",          10, COM_USER_COLUMN, REC_BIN64_SIGNED,    8, FALSE, SQLCHARSETCODE_UTF8 , 0, 0, 0, 0, 0, 0, 0, COM_NO_DEFAULT, "",NULL,NULL, COM_UNKNOWN_DIRECTION_LIT, 0  }
+  };
+
+struct ComTdbClusterStatsVirtTableColumnStruct
+{
+  char   regionServer[STATS_NAME_MAX_LEN];
+  char   regionName[STATS_REGION_NAME_MAX_LEN];
+  char   catalogName[STATS_NAME_MAX_LEN];
+  char   schemaName[STATS_NAME_MAX_LEN];
+  char   objectName[STATS_NAME_MAX_LEN];
+  Lng32  numStores;
+  Lng32  numStoreFiles;
+  Int64  storeFileUncompSize;
+  Int64  storeFileSize;
+  Int64  memStoreSize;
+  Int64  readRequestsCount;
+  Int64  writeRequestsCount;
+};
+
 
 class ComTdbExeUtilRegionStats : public ComTdbExeUtil
 {
@@ -3558,6 +3593,7 @@ public:
        char * tableName,
        ex_expr_base * input_expr,
        ULng32 input_rowlen,
+       ex_expr_base * scan_expr,
        ex_cri_desc * work_cri_desc,
        const unsigned short work_atp_index,
        ex_cri_desc * given_cri_desc,
@@ -3568,9 +3604,6 @@ public:
        ULng32 buffer_size
        );
   
-  //  Long pack (void *);
-  //  Lng32 unpack(void *, void * reallocator);
-  
   void setIsIndex(NABoolean v)
   {(v ? flags_ |= IS_INDEX : flags_ &= ~IS_INDEX); };
   NABoolean isIndex() { return (flags_ & IS_INDEX) != 0; };
@@ -3583,6 +3616,11 @@ public:
   {(v ? flags_ |= SUMMARY_ONLY : flags_ &= ~SUMMARY_ONLY); };
   NABoolean summaryOnly() { return (flags_ & SUMMARY_ONLY) != 0; };
 
+  void setClusterView(NABoolean v)
+  {(v ? flags_ |= CLUSTER_VIEW : flags_ &= ~CLUSTER_VIEW); };
+  NABoolean clusterView() { return (flags_ & CLUSTER_VIEW) != 0; };
+  const NABoolean clusterView() const { return (flags_ & CLUSTER_VIEW) != 0; };
+
   // ---------------------------------------------------------------------
   // Redefine virtual functions required for Versioning.
   //----------------------------------------------------------------------
@@ -3590,25 +3628,31 @@ public:
 
   virtual const char *getNodeName() const 
   { 
-    return "GET_REGION_STATS";
+    return (clusterView() ? "GET_CLUSTER_STATS" : "GET_REGION_STATS");
   };
 
-  static int getVirtTableNumCols()
+  int getVirtTableNumCols()
   {
-    return sizeof(comTdbRegionStatsVirtTableColumnInfo)/sizeof(ComTdbVirtTableColumnInfo);
+    return 
+      (clusterView() 
+       ? sizeof(comTdbClusterStatsVirtTableColumnInfo)/sizeof(ComTdbVirtTableColumnInfo)
+       : sizeof(comTdbRegionStatsVirtTableColumnInfo)/sizeof(ComTdbVirtTableColumnInfo));
   }
 
-  static ComTdbVirtTableColumnInfo * getVirtTableColumnInfo()
+  ComTdbVirtTableColumnInfo * getVirtTableColumnInfo()
   {
-    return (ComTdbVirtTableColumnInfo*)comTdbRegionStatsVirtTableColumnInfo;
+    return (ComTdbVirtTableColumnInfo*)
+      (clusterView() 
+       ? comTdbClusterStatsVirtTableColumnInfo 
+       : comTdbRegionStatsVirtTableColumnInfo);
   }
 
-  static int getVirtTableNumKeys()
+  int getVirtTableNumKeys()
   {
     return 0;
   }
 
-  static ComTdbVirtTableKeyInfo * getVirtTableKeyInfo()
+  ComTdbVirtTableKeyInfo * getVirtTableKeyInfo()
   {
     return NULL;
   }
@@ -3618,7 +3662,8 @@ private:
   {
     IS_INDEX       = 0x0001,
     DISPLAY_FORMAT = 0x0002,
-    SUMMARY_ONLY   = 0x0004
+    SUMMARY_ONLY   = 0x0004,
+    CLUSTER_VIEW   = 0x0008
   };
 
   UInt32 flags_;                                     // 00-03

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/common/str.cpp
----------------------------------------------------------------------
diff --git a/core/sql/common/str.cpp b/core/sql/common/str.cpp
index e728143..8823f56 100644
--- a/core/sql/common/str.cpp
+++ b/core/sql/common/str.cpp
@@ -954,7 +954,9 @@ Lng32 str_decode(void *tgt, Lng32 tgtMaxLen, const char *src, Lng32 srcLen)
 
   Lng32 length = str_decoded_len(srcLen);
 
-  assert(tgtMaxLen >= length);
+  //  assert(tgtMaxLen >= length);
+  if (NOT (tgtMaxLen >= length))
+    return -1;
 
   Lng32 srcix = 0;
   Lng32 tgtix = 0;
@@ -964,29 +966,30 @@ Lng32 str_decode(void *tgt, Lng32 tgtMaxLen, const char *src, Lng32 srcLen)
   while (srcix+1 < srcLen)
     {
       // first byte comes from 6 bits of first char and 2 bits of second char
-      assert(src1[srcix]-minChar < 64 && src1[srcix+1]-minChar < 64);
-#pragma nowarn(1506)   // warning elimination
+      if (NOT (src1[srcix]-minChar < 64 && src1[srcix+1]-minChar < 64))
+        return -1;
+
+      //      assert(src1[srcix]-minChar < 64 && src1[srcix+1]-minChar < 64);
       target[tgtix]  = (src1[srcix]-minChar) << 2;
-#pragma warn(1506)  // warning elimination
       target[tgtix] |= (src1[srcix+1]-minChar) >> 4;
 
       if (srcix+2 < srcLen)
 	{
           // second byte gets 4 bits from second and 4 bits from third char
-          assert(src1[srcix+2]-minChar < 64);
-#pragma nowarn(1506)   // warning elimination
+          if (NOT (src1[srcix+2]-minChar < 64))
+            return -1;
+          //          assert(src1[srcix+2]-minChar < 64);
           target[tgtix+1]  = ((src1[srcix+1]-minChar) & 0xf) << 4;
-#pragma warn(1506)  // warning elimination
 	  target[tgtix+1] |= (src1[srcix+2]-minChar) >> 2;
 	}
 
       if (srcix+3 < srcLen)
 	{
 	  // third byte gets 2 bits from third and 6 bits from fourth char
-          assert(src1[srcix+3]-minChar < 64);
-#pragma nowarn(1506)   // warning elimination
+          if (NOT (src1[srcix+3]-minChar < 64))
+            return -1;
+          //          assert(src1[srcix+3]-minChar < 64);
           target[tgtix+2]  = ((src1[srcix+2]-minChar) & 0x3) << 6;
-#pragma warn(1506)  // warning elimination
 	  target[tgtix+2] |= ((src1[srcix+3]-minChar) & 0x3f);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/ExExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtil.h b/core/sql/executor/ExExeUtil.h
index 1f0f876..b6b96fc 100755
--- a/core/sql/executor/ExExeUtil.h
+++ b/core/sql/executor/ExExeUtil.h
@@ -245,6 +245,9 @@ class ExExeUtilTcb : public ex_tcb
                      short &rc,
 		     NABoolean monitorThis=FALSE);
     
+  ex_expr::exp_return_type evalScanExpr(char * ptr, Lng32 len, 
+                                        NABoolean copyToVCbuf);
+
   char * getStatusString(const char * operation,
                          const char * status,
                          const char * object,
@@ -2477,8 +2480,6 @@ protected:
                       NABoolean isShorthandView,
                       char* &viewName, Lng32 &len);
 
-  ex_expr::exp_return_type evalScanExpr(char * ptr, Lng32 len);
-
 private:
 
   Lng32 setupObjectTypeForUserQuery();
@@ -3766,6 +3767,7 @@ private:
     EVAL_INPUT_,
     COLLECT_STATS_,
     POPULATE_STATS_BUF_,
+    EVAL_EXPR_,
     RETURN_STATS_BUF_,
     HANDLE_ERROR_,
     DONE_
@@ -3794,6 +3796,8 @@ protected:
 
   Int32 currIndex_;
 
+  Int32 numRegionStatsEntries_;
+
   char * catName_;
   char * schName_;
   char * objName_;
@@ -3854,6 +3858,46 @@ protected:
 
 //////////////////////////////////////////////////////////////////////////
 // -----------------------------------------------------------------------
+// ExExeUtilClusterStatsTcb
+// -----------------------------------------------------------------------
+class ExExeUtilClusterStatsTcb : public ExExeUtilRegionStatsTcb
+{
+  friend class ExExeUtilClusterStatsTdb;
+  friend class ExExeUtilPrivateState;
+
+public:
+  // Constructor
+  ExExeUtilClusterStatsTcb(const ComTdbExeUtilRegionStats & exe_util_tdb,
+                           ex_globals * glob = 0);
+
+  ~ExExeUtilClusterStatsTcb();
+
+  virtual short work();
+
+private:
+  enum Step
+  {
+    INITIAL_,
+    EVAL_INPUT_,
+    COLLECT_STATS_,
+    POPULATE_STATS_BUF_,
+    EVAL_EXPR_,
+    RETURN_STATS_BUF_,
+    HANDLE_ERROR_,
+    DONE_
+  };
+  Step step_;
+
+  short collectStats();
+  short populateStats(Int32 currIndex, NABoolean nullTerminate = FALSE);
+
+protected:
+  ComTdbClusterStatsVirtTableColumnStruct* stats_;  
+
+};
+
+//////////////////////////////////////////////////////////////////////////
+// -----------------------------------------------------------------------
 // ExExeUtilLobInfoTdb
 // -----------------------------------------------------------------------
 class ExExeUtilLobInfoTdb : public ComTdbExeUtilLobInfo

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/ExExeUtilCommon.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilCommon.cpp b/core/sql/executor/ExExeUtilCommon.cpp
index 51bac92..ed0d302 100644
--- a/core/sql/executor/ExExeUtilCommon.cpp
+++ b/core/sql/executor/ExExeUtilCommon.cpp
@@ -1834,6 +1834,37 @@ Lng32 ExExeUtilTcb::extractParts
   return 0;
 }
 
+ex_expr::exp_return_type ExExeUtilTcb::evalScanExpr(char * ptr, Lng32 len,
+                                                    NABoolean copyToVCbuf)
+{
+  ex_expr::exp_return_type exprRetCode = ex_expr::EXPR_OK;
+
+  if (exeUtilTdb().scanExpr_)
+    {
+      ex_queue_entry * pentry_down = qparent_.down->getHeadEntry();
+
+      char * exprPtr = ptr;
+      if (copyToVCbuf)
+        {
+          exprPtr = new(getGlobals()->getDefaultHeap())
+            char[SQL_VARCHAR_HDR_SIZE + len];
+          short shortLen = (short)len;
+          str_cpy_all((char*)exprPtr, (char*)&shortLen, SQL_VARCHAR_HDR_SIZE);
+          str_cpy_all(&exprPtr[SQL_VARCHAR_HDR_SIZE], ptr, shortLen);
+        }
+
+      workAtp_->getTupp(exeUtilTdb().workAtpIndex())
+	.setDataPointer(exprPtr);
+
+      exprRetCode =
+	exeUtilTdb().scanExpr_->eval(pentry_down->getAtp(), workAtp_);
+
+      if (exprPtr != ptr)
+        NADELETEBASIC(exprPtr, getGlobals()->getDefaultHeap());
+    }
+
+  return exprRetCode;
+}
 
 
 /////////////////////////////////////////////////////////////////////////////

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/ExExeUtilGet.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExeUtilGet.cpp b/core/sql/executor/ExExeUtilGet.cpp
index 90a8d06..c438752 100644
--- a/core/sql/executor/ExExeUtilGet.cpp
+++ b/core/sql/executor/ExExeUtilGet.cpp
@@ -738,31 +738,6 @@ Lng32 ExExeUtilGetMetadataInfoTcb::getUsedObjects(Queue * infoList,
     }
 }
 
-ex_expr::exp_return_type ExExeUtilGetMetadataInfoTcb::evalScanExpr(char * ptr, Lng32 len)
-{
-  ex_expr::exp_return_type exprRetCode = ex_expr::EXPR_OK;
-
-  if (getMItdb().scanExpr_)
-    {
-      ex_queue_entry * pentry_down = qparent_.down->getHeadEntry();
-
-      char * exprPtr = new(getGlobals()->getDefaultHeap())
-	char[SQL_VARCHAR_HDR_SIZE + len];
-      short shortLen = (short)len;
-      str_cpy_all((char*)exprPtr, (char*)&shortLen, SQL_VARCHAR_HDR_SIZE);
-      str_cpy_all(&exprPtr[SQL_VARCHAR_HDR_SIZE], ptr, shortLen);
-      workAtp_->getTupp(getMItdb().workAtpIndex())
-	.setDataPointer(exprPtr);
-
-      exprRetCode =
-	getMItdb().scanExpr_->eval(pentry_down->getAtp(), workAtp_);
-
-      NADELETEBASIC(exprPtr, getGlobals()->getDefaultHeap());
-    }
-
-  return exprRetCode;
-}
-
 short ExExeUtilGetMetadataInfoTcb::displayHeading()
 {
   if (getMItdb().noHeader())
@@ -2186,7 +2161,7 @@ short ExExeUtilGetMetadataInfoTcb::work()
 	      exprRetCode = ex_expr::EXPR_FALSE;
 
 	    if (exprRetCode == ex_expr::EXPR_TRUE)
-	      exprRetCode = evalScanExpr(ptr, len);
+	      exprRetCode = evalScanExpr(ptr, len, TRUE);
 	    if (exprRetCode == ex_expr::EXPR_FALSE)
 	      {
 		// row does not pass the scan expression,
@@ -2289,7 +2264,7 @@ short ExExeUtilGetMetadataInfoTcb::work()
 		break;
 	      }
 
-	    exprRetCode = evalScanExpr(viewName, len);
+	    exprRetCode = evalScanExpr(viewName, len, TRUE);
 	    if (exprRetCode == ex_expr::EXPR_FALSE)
 	      {
 		// row does not pass the scan expression,
@@ -2338,7 +2313,7 @@ short ExExeUtilGetMetadataInfoTcb::work()
 		break;
 	      }
 
-	    exprRetCode = evalScanExpr(viewName, len);
+	    exprRetCode = evalScanExpr(viewName, len, TRUE);
 	    if (exprRetCode == ex_expr::EXPR_FALSE)
 	      {
 		// row does not pass the scan expression,
@@ -3152,7 +3127,7 @@ short ExExeUtilGetHbaseObjectsTcb::work()
 
         case EVAL_EXPR_:
           {
-            exprRetCode = evalScanExpr(hbaseName_, strlen(hbaseName_));
+            exprRetCode = evalScanExpr(hbaseName_, strlen(hbaseName_), TRUE);
 	    if (exprRetCode == ex_expr::EXPR_FALSE)
 	      {
 		// row does not pass the scan expression,
@@ -5438,9 +5413,11 @@ ex_tcb * ExExeUtilRegionStatsTdb::build(ex_globals * glob)
 
   if (displayFormat())
     exe_util_tcb = new(glob->getSpace()) ExExeUtilRegionStatsFormatTcb(*this, glob);
+  else if (clusterView())
+    exe_util_tcb = new(glob->getSpace()) ExExeUtilClusterStatsTcb(*this, glob);
   else
     exe_util_tcb = new(glob->getSpace()) ExExeUtilRegionStatsTcb(*this, glob);
-    
+  
   exe_util_tcb->registerSubtasks();
 
   return (exe_util_tcb);
@@ -5568,6 +5545,8 @@ short ExExeUtilRegionStatsTcb::populateStats
   if (nullTerminate)
     stats_->objectName[strlen(objName_)] = 0;
   
+  str_pad(stats_->regionServer, sizeof(stats_->regionServer), ' ');
+
   str_pad(stats_->regionName, sizeof(stats_->regionName), ' ');
   stats_->regionNum       = currIndex_+1;
   
@@ -5590,14 +5569,25 @@ short ExExeUtilRegionStatsTcb::populateStats
   char * sep1 = strchr(regionInfo, '|');
   if (sep1)
     {
-      str_cpy_all(stats_->regionName, regionInfo, 
+      str_cpy_all(stats_->regionServer, regionInfo, 
                   (Lng32)(sep1 - regionInfo)); 
 
       if (nullTerminate)
-        stats_->regionName[sep1 - regionInfo] = 0;
+        stats_->regionServer[sep1 - regionInfo] = 0;
+    }
+
+  char * sepStart = sep1+1;
+  sep1 = strchr(sepStart, '|');
+  if (sep1)
+    {
+      str_cpy_all(stats_->regionName, sepStart, 
+                  (Lng32)(sep1 - sepStart)); 
+
+      if (nullTerminate)
+        stats_->regionName[sep1 - sepStart] = 0;
     }
   
-  char * sepStart = sep1;
+  sepStart = sep1;
   stats_->numStores = getEmbeddedNumValue(sepStart, '|', FALSE);
   stats_->numStoreFiles = getEmbeddedNumValue(sepStart, '|', FALSE);
   stats_->storeFileUncompSize = getEmbeddedNumValue(sepStart, '|', FALSE);
@@ -5613,6 +5603,7 @@ short ExExeUtilRegionStatsTcb::work()
 {
   short retcode = 0;
   Lng32 cliRC = 0;
+  ex_expr::exp_return_type exprRetCode = ex_expr::EXPR_OK;
 
   // if no parent request, return
   if (qparent_.down->isEmpty())
@@ -5705,10 +5696,27 @@ short ExExeUtilRegionStatsTcb::work()
                 break;
               }
 
-	    step_ = RETURN_STATS_BUF_;
+	    step_ = EVAL_EXPR_;
 	  }
 	break;
 
+        case EVAL_EXPR_:
+          {
+            exprRetCode = evalScanExpr((char*)stats_, statsBufLen_, FALSE);
+	    if (exprRetCode == ex_expr::EXPR_FALSE)
+	      {
+		// row does not pass the scan expression,
+		// move to the next row.
+                currIndex_++;
+
+		step_ = POPULATE_STATS_BUF_;
+		break;
+	      }
+            
+            step_ = RETURN_STATS_BUF_;
+          }
+          break;
+
 	case RETURN_STATS_BUF_:
 	  {
 	    if (qparent_.up->isFull())
@@ -5830,6 +5838,8 @@ short ExExeUtilRegionStatsFormatTcb::computeTotals()
   str_pad(statsTotals_->objectName, sizeof(statsTotals_->objectName), ' ');
   str_cpy_all(statsTotals_->objectName, objName_, strlen(objName_));
 
+  str_pad(statsTotals_->regionServer, sizeof(statsTotals_->regionServer), ' ');
+
   str_pad(statsTotals_->regionName, sizeof(statsTotals_->regionName), ' ');
 
   for (Int32 currIndex = 0; currIndex < regionInfoList_->entries(); currIndex++)
@@ -6116,6 +6126,11 @@ short ExExeUtilRegionStatsFormatTcb::work()
             char buf[1000];
 	    short rc = 0;
 
+            str_sprintf(buf, "  RegionServer:       %s", 
+                        removeTrailingBlanks(stats_->regionServer, STATS_NAME_MAX_LEN).data(), TRUE);
+	    if (moveRowToUpQueue(buf, strlen(buf), &rc))
+	      return rc;
+  
             str_sprintf(buf, "  RegionNum:          %d", currIndex_+1);
 	    if (moveRowToUpQueue(buf, strlen(buf), &rc))
 	      return rc;
@@ -6208,6 +6223,319 @@ short ExExeUtilRegionStatsFormatTcb::work()
   return WORK_OK;
 }
 
+////////////////////////////////////////////////////////////////
+// Constructor for class ExExeUtilClusterStatsTcb
+///////////////////////////////////////////////////////////////
+ExExeUtilClusterStatsTcb::ExExeUtilClusterStatsTcb(
+     const ComTdbExeUtilRegionStats & exe_util_tdb,
+     ex_globals * glob)
+     : ExExeUtilRegionStatsTcb( exe_util_tdb, glob)
+{
+  statsBuf_ = new(glob->getDefaultHeap()) char[sizeof(ComTdbClusterStatsVirtTableColumnStruct)];
+  statsBufLen_ = sizeof(ComTdbClusterStatsVirtTableColumnStruct);
+
+  stats_ = (ComTdbClusterStatsVirtTableColumnStruct*)statsBuf_;
+
+  int jniDebugPort = 0;
+  int jniDebugTimeout = 0;
+  ehi_ = ExpHbaseInterface::newInstance(glob->getDefaultHeap(),
+					(char*)"", //exe_util_tdb.server(), 
+					(char*)"", //exe_util_tdb.zkPort(),
+                                        jniDebugPort,
+                                        jniDebugTimeout);
+
+  regionInfoList_ = NULL;
+  
+  // get hbase rootdir location. Max linux pathlength is 1024.
+  hbaseRootdir_ = new(glob->getDefaultHeap()) char[1030];
+  strcpy(hbaseRootdir_, "/hbase");
+
+  step_ = INITIAL_;
+}
+
+ExExeUtilClusterStatsTcb::~ExExeUtilClusterStatsTcb()
+{
+  if (statsBuf_)
+    NADELETEBASIC(statsBuf_, getGlobals()->getDefaultHeap());
+
+  if (ehi_)
+    delete ehi_;
+
+  statsBuf_ = NULL;
+}
+
+short ExExeUtilClusterStatsTcb::collectStats()
+{
+  numRegionStatsEntries_ = 0;
+  regionInfoList_ = ehi_->getClusterStats(numRegionStatsEntries_);
+  if (! regionInfoList_)
+    {
+      return 1; // EOD
+    }
+ 
+  currIndex_ = 0;
+
+  return 0;
+}
+
+// RETURN: 1, not a TRAFODION region. 0, is a TRAFODION region.
+//        -1, error.
+short ExExeUtilClusterStatsTcb::populateStats
+(Int32 currIndex, NABoolean nullTerminate)
+{
+  str_pad(stats_->catalogName, sizeof(stats_->catalogName), ' ');
+  str_pad(stats_->schemaName, sizeof(stats_->schemaName), ' ');
+  str_pad(stats_->objectName, sizeof(stats_->objectName), ' ');
+
+  str_pad(stats_->regionServer, sizeof(stats_->regionServer), ' ');
+
+  str_pad(stats_->regionName, sizeof(stats_->regionName), ' ');
+   
+  char regionInfoBuf[5000];
+  Int32 len = 0;
+  char *regionInfo = regionInfoBuf;
+  char *val = regionInfoList_->at(currIndex).val;
+  len = regionInfoList_->at(currIndex).len; 
+  if (len >= sizeof(regionInfoBuf))
+     len = sizeof(regionInfoBuf)-1;
+  strncpy(regionInfoBuf, val, len);
+  regionInfoBuf[len] = '\0';
+  stats_->numStores                = 0;
+  stats_->numStoreFiles            = 0;
+  stats_->storeFileUncompSize      = 0;
+  stats_->storeFileSize            = 0;
+  stats_->memStoreSize             = 0;
+  
+  char longBuf[30];
+  char * sep1 = strchr(regionInfo, '|');
+  if (sep1)
+    {
+      str_cpy_all(stats_->regionServer, regionInfo, 
+                  (Lng32)(sep1 - regionInfo)); 
+
+      if (nullTerminate)
+        stats_->regionServer[sep1 - regionInfo] = 0;
+    }
+
+  char * sepStart = sep1+1;
+  sep1 = strchr(sepStart, '|');
+  if (sep1)
+    {
+      str_cpy_all(stats_->regionName, sepStart, 
+                  (Lng32)(sep1 - sepStart)); 
+
+      if (nullTerminate)
+        stats_->regionName[sep1 - sepStart] = 0;
+    }
+
+  char tableName[3*STATS_NAME_MAX_LEN + 3];
+  sepStart = sep1+1;
+  sep1 = strchr(sepStart, '|');
+  if (sep1)
+    {
+      str_cpy_all(tableName, sepStart, 
+                  (Lng32)(sep1 - sepStart)); 
+
+      tableName[sep1 - sepStart] = 0;
+
+      char tableNameBuf[3*STATS_NAME_MAX_LEN + 30];
+
+      Lng32 numParts = 0;
+      char *parts[4];
+      LateNameInfo::extractParts(tableName, tableNameBuf, numParts, parts, FALSE);
+
+      if (numParts == 3)
+        {
+          str_cpy_all(stats_->catalogName, parts[0], strlen(parts[0]));
+          if (nullTerminate)
+            stats_->catalogName[strlen(parts[0])] = 0;
+
+          str_cpy_all(stats_->schemaName, parts[1], strlen(parts[1]));
+          if (nullTerminate)
+            stats_->schemaName[strlen(parts[1])] = 0;
+      
+          str_cpy_all(stats_->objectName, parts[2], strlen(parts[2]));
+          if (nullTerminate)
+            stats_->objectName[strlen(parts[2])] = 0;
+        }
+
+      if ((numParts != 3) ||
+          (str_cmp(stats_->catalogName, TRAFODION_SYSCAT_LIT, strlen(TRAFODION_SYSCAT_LIT)) != 0))
+        {
+          // this is not a trafodion region, skip it.
+          return 1;
+        }
+    }
+  
+  sepStart = sep1;
+  stats_->numStores = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->numStoreFiles = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->storeFileUncompSize = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->storeFileSize = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->memStoreSize = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->readRequestsCount = getEmbeddedNumValue(sepStart, '|', FALSE);
+  stats_->writeRequestsCount = getEmbeddedNumValue(sepStart, '|', FALSE);
+  
+  return 0;
+}
+
+short ExExeUtilClusterStatsTcb::work()
+{
+  short retcode = 0;
+  Lng32 cliRC = 0;
+  ex_expr::exp_return_type exprRetCode = ex_expr::EXPR_OK;
+
+  // if no parent request, return
+  if (qparent_.down->isEmpty())
+    return WORK_OK;
+  
+  // if no room in up queue, won't be able to return data/status.
+  // Come back later.
+  if (qparent_.up->isFull())
+    return WORK_OK;
+  
+  ex_queue_entry * pentry_down = qparent_.down->getHeadEntry();
+  ExExeUtilPrivateState & pstate =
+    *((ExExeUtilPrivateState*) pentry_down->pstate);
+
+  // Get the globals stucture of the master executor.
+  ExExeStmtGlobals *exeGlob = getGlobals()->castToExExeStmtGlobals();
+  ExMasterStmtGlobals *masterGlob = exeGlob->castToExMasterStmtGlobals();
+  ContextCli * currContext = masterGlob->getCliGlobals()->currContext();
+
+  ComDiagsArea * diags = getDiagsArea();
+
+  while (1)
+    {
+      switch (step_)
+	{
+	case INITIAL_:
+	  {
+            if (ehi_ == NULL)
+              {
+                step_ = HANDLE_ERROR_;
+                break;
+              }
+
+	    step_ = COLLECT_STATS_;
+	  }
+	break;
+
+       case COLLECT_STATS_:
+          {
+            retcode = collectStats();
+            if (retcode == 1) // EOD
+              {
+                step_ = DONE_;
+                break;
+              }
+            else if (retcode < 0)
+              {
+		*diags << DgSqlCode(-8451);
+
+                step_ = HANDLE_ERROR_;
+                break;
+              }
+
+            currIndex_ = 0;
+
+            step_ = POPULATE_STATS_BUF_;
+          }
+          break;
+
+	case POPULATE_STATS_BUF_:
+	  {
+            if (currIndex_ == numRegionStatsEntries_) //regionInfoList_->entries())
+              {
+                step_ = COLLECT_STATS_;
+                break;
+              }
+            
+            retcode = populateStats(currIndex_);
+            if (retcode == 1) // not TRAFODION region, skip it
+              {
+                currIndex_++;
+
+                step_ = POPULATE_STATS_BUF_;
+                break;
+              }
+            else if (retcode < 0)
+              {
+                step_ = HANDLE_ERROR_;
+                break;
+              }
+
+	    step_ = EVAL_EXPR_;
+	  }
+	break;
+
+        case EVAL_EXPR_:
+          {
+            exprRetCode = evalScanExpr((char*)stats_, statsBufLen_, FALSE);
+	    if (exprRetCode == ex_expr::EXPR_FALSE)
+	      {
+		// row does not pass the scan expression,
+		// move to the next row.
+                currIndex_++;
+
+		step_ = POPULATE_STATS_BUF_;
+		break;
+	      }
+            
+            step_ = RETURN_STATS_BUF_;
+          }
+          break;
+
+	case RETURN_STATS_BUF_:
+	  {
+	    if (qparent_.up->isFull())
+	      return WORK_OK;
+
+	    short rc = 0;
+	    if (moveRowToUpQueue((char*)stats_, statsBufLen_, &rc, FALSE))
+	      return rc;
+
+ 
+            currIndex_++;
+
+            step_ = POPULATE_STATS_BUF_;
+	  }
+	break;
+
+	case HANDLE_ERROR_:
+	  {
+	    retcode = handleError();
+	    if (retcode == 1)
+	      return WORK_OK;
+	    
+	    step_ = DONE_;
+	  }
+	break;
+	
+	case DONE_:
+	  {
+            if (regionInfoList_ != NULL) {
+               deleteNAArray(getHeap(), regionInfoList_);
+               regionInfoList_ = NULL;
+            }
+	    retcode = handleDone();
+	    if (retcode == 1)
+	      return WORK_OK;
+	    
+	    step_ = INITIAL_;
+	    
+	    return WORK_CALL_AGAIN;
+	  }
+	break;
+
+
+	} // switch
+
+    } // while
+
+  return WORK_OK;
+}
+
 
 ///////////////////////////////////////////////////////////////////
 ex_tcb * ExExeUtilLobInfoTdb::build(ex_globals * glob)

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/ExExplain.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/ExExplain.cpp b/core/sql/executor/ExExplain.cpp
index 28c64ce..c0b5d0c 100644
--- a/core/sql/executor/ExExplain.cpp
+++ b/core/sql/executor/ExExplain.cpp
@@ -544,8 +544,16 @@ short ExExplainTcb::processExplainStmt()
     {
       explainFragLen_ = str_decoded_len(cliInterface.getExplainDataLen());
       explainFrag_ = new(getHeap()) char[explainFragLen_];
-      str_decode(explainFrag_, explainFragLen_, 
-                 cliInterface.getExplainDataPtr(), cliInterface.getExplainDataLen());
+      if (str_decode(explainFrag_, explainFragLen_, 
+                     cliInterface.getExplainDataPtr(), cliInterface.getExplainDataLen()) < 0)
+        {
+          diagsArea = pEntryDown->getAtp()->getDiagsArea();
+          ExRaiseSqlError(getGlobals()->getDefaultHeap(),
+                          &diagsArea, EXE_NO_EXPLAIN_INFO);
+          if (diagsArea != pEntryDown->getAtp()->getDiagsArea())
+            pEntryDown->getAtp()->setDiagsArea(diagsArea);
+          goto label_error2;
+        }
 
       // skip ExplainReposInfo and point explainAddr to actual explain structures.
       setExplainAddr((Int64)&explainFrag_[sizeof(ExplainReposInfo)]);  
@@ -602,7 +610,8 @@ short ExExplainTcb::processExplainPlan()
   
   explainFragLen_ = str_decoded_len(explainPlanLen_);
   explainFrag_ = new(getHeap()) char[explainFragLen_];
-  str_decode(explainFrag_, explainFragLen_, explainPlan_, explainPlanLen_);
+  if (str_decode(explainFrag_, explainFragLen_, explainPlan_, explainPlanLen_) < 0)
+    return 0;
 
   // explain repos info header is at the beginning of stored data.
   ExplainReposInfo * eri = (ExplainReposInfo*)explainFrag_;
@@ -1731,7 +1740,16 @@ short ExExplainTcb::getExplainFromRepos(char * qid, Lng32 qidLen)
   
   explainFragLen_ = str_decoded_len(len-1); // remove trailing null terminator
   explainFrag_ = new(getHeap()) char[explainFragLen_];
-  str_decode(explainFrag_, explainFragLen_, ptr, len-1);
+  if (str_decode(explainFrag_, explainFragLen_, ptr, len-1) < 0)
+    {
+      diagsArea = pEntryDown->getAtp()->getDiagsArea();
+      ExRaiseSqlError(getGlobals()->getDefaultHeap(), 
+                      &diagsArea, EXE_NO_EXPLAIN_INFO);
+      if (diagsArea != pEntryDown->getAtp()->getDiagsArea())
+        pEntryDown->getAtp()->setDiagsArea(diagsArea);
+
+      goto label_error2;
+    }
 
   // explain repos info header is at the beginning of stored data.
   eri = (ExplainReposInfo*)explainFrag_;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/HBaseClient_JNI.cpp
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.cpp b/core/sql/executor/HBaseClient_JNI.cpp
index 9f3bd70..947cc1d 100644
--- a/core/sql/executor/HBaseClient_JNI.cpp
+++ b/core/sql/executor/HBaseClient_JNI.cpp
@@ -232,6 +232,8 @@ HBC_RetCode HBaseClient_JNI::init()
     JavaMethods_[JM_LIST_ALL       ].jm_signature = "(Ljava/lang/String;)[[B";
     JavaMethods_[JM_GET_REGION_STATS       ].jm_name      = "getRegionStats";
     JavaMethods_[JM_GET_REGION_STATS       ].jm_signature = "(Ljava/lang/String;)[[B";
+    JavaMethods_[JM_GET_REGION_STATS_ENTRIES       ].jm_name      = "getRegionStatsEntries";
+    JavaMethods_[JM_GET_REGION_STATS_ENTRIES       ].jm_signature = "()I";
     JavaMethods_[JM_COPY       ].jm_name      = "copy";
     JavaMethods_[JM_COPY       ].jm_signature = "(Ljava/lang/String;Ljava/lang/String;Z)Z";
     JavaMethods_[JM_EXISTS     ].jm_name      = "exists";
@@ -1174,6 +1176,37 @@ NAArray<HbaseStr>* HBaseClient_JNI::listAll(NAHeap *heap, const char* pattern)
      return hbaseTables;
 }
 
+Int32 HBaseClient_JNI::getRegionStatsEntries()
+{
+  QRLogger::log(CAT_SQL_HBASE, LL_DEBUG, "HBaseClient_JNI::getRegionStatsEntries() called.");
+
+  if (jenv_ == NULL)
+     if (initJVM() != JOI_OK)
+       return NULL;
+
+  if (jenv_->PushLocalFrame(jniHandleCapacity_) != 0) {
+     getExceptionDetails();
+     return NULL;
+  }
+
+  tsRecentJMFromJNI = JavaMethods_[JM_GET_REGION_STATS_ENTRIES].jm_full_name;
+  jint numEntries = 
+    (jint)jenv_->CallIntMethod(javaObj_, JavaMethods_[JM_GET_REGION_STATS_ENTRIES].methodID);
+
+  if (jenv_->ExceptionCheck())
+  {
+    getExceptionDetails(jenv_);
+    logError(CAT_SQL_HBASE, __FILE__, __LINE__);
+    logError(CAT_SQL_HBASE, "HBaseClient_JNI::getRegionStatsEntries()", getLastError());
+    jenv_->PopLocalFrame(NULL);
+    return NULL;
+  }
+
+  jenv_->PopLocalFrame(NULL);
+
+  return numEntries;
+}
+
 //////////////////////////////////////////////////////////////////////////////
 // 
 //////////////////////////////////////////////////////////////////////////////
@@ -1189,12 +1222,15 @@ NAArray<HbaseStr>* HBaseClient_JNI::getRegionStats(NAHeap *heap, const char* tbl
      getExceptionDetails();
      return NULL;
   }
-  jstring js_tblName = jenv_->NewStringUTF(tblName);
-  if (js_tblName == NULL) 
-  {
-    GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_REGION_STATS));
-    jenv_->PopLocalFrame(NULL);
-    return NULL;
+  jstring js_tblName = NULL;
+  if (tblName) {
+    js_tblName = jenv_->NewStringUTF(tblName);
+    if (js_tblName == NULL) 
+      {
+        GetCliGlobals()->setJniErrorStr(getErrorText(HBC_ERROR_REGION_STATS));
+        jenv_->PopLocalFrame(NULL);
+        return NULL;
+      }
   }
 
   tsRecentJMFromJNI = JavaMethods_[JM_GET_REGION_STATS].jm_full_name;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/executor/HBaseClient_JNI.h
----------------------------------------------------------------------
diff --git a/core/sql/executor/HBaseClient_JNI.h b/core/sql/executor/HBaseClient_JNI.h
index 05ab77a..a8690fb 100644
--- a/core/sql/executor/HBaseClient_JNI.h
+++ b/core/sql/executor/HBaseClient_JNI.h
@@ -439,6 +439,7 @@ public:
                    NABoolean force);
   NAArray<HbaseStr>* listAll(NAHeap *heap, const char* pattern);
   NAArray<HbaseStr>* getRegionStats(NAHeap *heap, const char* tblName);
+  Int32 getRegionStatsEntries();
 
   HBC_RetCode exists(const char* fileName, Int64 transID);
   HBC_RetCode grant(const Text& user, const Text& tableName, const TextVec& actionCodes); 
@@ -525,6 +526,7 @@ private:
    ,JM_DROP_ALL
    ,JM_LIST_ALL
    ,JM_GET_REGION_STATS
+   ,JM_GET_REGION_STATS_ENTRIES
    ,JM_COPY
    ,JM_EXISTS
    ,JM_GRANT

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/exp/ExpHbaseInterface.cpp
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpHbaseInterface.cpp b/core/sql/exp/ExpHbaseInterface.cpp
index 1498b1c..001f0f8 100644
--- a/core/sql/exp/ExpHbaseInterface.cpp
+++ b/core/sql/exp/ExpHbaseInterface.cpp
@@ -1559,7 +1559,27 @@ NAArray<HbaseStr> * ExpHbaseInterface_JNI::getRegionStats(const HbaseStr& tblNam
   NAArray<HbaseStr>* regionStats = client_->getRegionStats((NAHeap *)heap_, tblName.val);
   if (regionStats == NULL)
     return NULL;
+
+  Int32 numEntries = client_->getRegionStatsEntries();
+
+  return regionStats;
+}
+
+NAArray<HbaseStr> * ExpHbaseInterface_JNI::getClusterStats(Int32 &numEntries)
+{
+  if (client_ == NULL)
+    {
+      if (init(hbs_) != HBASE_ACCESS_SUCCESS)
+        return NULL;
+    }
   
+  NAArray<HbaseStr>* regionStats = 
+    client_->getRegionStats((NAHeap *)heap_, NULL);
+  if (regionStats == NULL)
+    return NULL;
+  
+  numEntries = client_->getRegionStatsEntries();
+
   return regionStats;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/exp/ExpHbaseInterface.h
----------------------------------------------------------------------
diff --git a/core/sql/exp/ExpHbaseInterface.h b/core/sql/exp/ExpHbaseInterface.h
index 0826f45..67fa03b 100644
--- a/core/sql/exp/ExpHbaseInterface.h
+++ b/core/sql/exp/ExpHbaseInterface.h
@@ -367,6 +367,8 @@ class ExpHbaseInterface : public NABasicObject
   // get regions and size
   virtual NAArray<HbaseStr> *getRegionStats(const HbaseStr& tblName) = 0;
 
+  virtual NAArray<HbaseStr> *getClusterStats(Int32 &numEntries) = 0;
+
 protected:
   enum 
     {
@@ -667,6 +669,7 @@ virtual Lng32 initHFileParams(HbaseStr &tblName,
                                    ARRAY(const char *)& nodeNames) ;
 
   virtual NAArray<HbaseStr>* getRegionStats(const HbaseStr& tblName);
+  virtual NAArray<HbaseStr>* getClusterStats(Int32 &numEntries);
 
 private:
   bool  useTRex_;

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/generator/GenRelExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/generator/GenRelExeUtil.cpp b/core/sql/generator/GenRelExeUtil.cpp
index 82ffd07..bf54220 100644
--- a/core/sql/generator/GenRelExeUtil.cpp
+++ b/core/sql/generator/GenRelExeUtil.cpp
@@ -3366,20 +3366,25 @@ short ExeUtilHiveTruncate::codeGen(Generator * generator)
 // class ExeUtilRegionStats
 ////////////////////////////////////////////////////////////////////
 const char * ExeUtilRegionStats::getVirtualTableName()
-{ return ("EXE_UTIL_REGION_STATS__"); }
+{ return (clusterView_ ? "EXE_UTIL_CLUSTER_STATS__" : "EXE_UTIL_REGION_STATS__"); }
 
 TrafDesc *ExeUtilRegionStats::createVirtualTableDesc()
 {
   TrafDesc * table_desc = NULL;
+
+  ComTdbExeUtilRegionStats rs;
+  rs.setClusterView(clusterView_);
+
   if (displayFormat_)
     table_desc = ExeUtilExpr::createVirtualTableDesc();
   else
     table_desc = Generator::createVirtualTableDesc(
 	 getVirtualTableName(),
-	 ComTdbExeUtilRegionStats::getVirtTableNumCols(),
-	 ComTdbExeUtilRegionStats::getVirtTableColumnInfo(),
-	 ComTdbExeUtilRegionStats::getVirtTableNumKeys(),
-	 ComTdbExeUtilRegionStats::getVirtTableKeyInfo());
+	 rs.getVirtTableNumCols(),
+	 rs.getVirtTableColumnInfo(),
+	 rs.getVirtTableNumKeys(),
+	 rs.getVirtTableKeyInfo());
+
   return table_desc;
 }
 short ExeUtilRegionStats::codeGen(Generator * generator)
@@ -3400,8 +3405,11 @@ short ExeUtilRegionStats::codeGen(Generator * generator)
   const int work_atp = 1;
   const int exe_util_row_atp_index = 2;
 
+  // if selection pred, then assign work atp/atpindex to attrs.
+  // Once selection pred has been generated, atp/atpindex will be
+  // changed to returned atp/atpindex.
   short rc = processOutputRow(generator, work_atp, exe_util_row_atp_index,
-                              returnedDesc);
+                              returnedDesc, (NOT selectionPred().isEmpty()));
   if (rc)
     {
       return -1;
@@ -3440,7 +3448,21 @@ short ExeUtilRegionStats::codeGen(Generator * generator)
                                    &input_expr);
     }
 
-  char * tableName = space->AllocateAndCopyToAlignedSpace
+  ex_expr *scanExpr = NULL;
+  // generate tuple selection expression, if present
+  if (NOT selectionPred().isEmpty())
+    {
+      ItemExpr* pred = selectionPred().rebuildExprTree(ITM_AND,TRUE,TRUE);
+      expGen->generateExpr(pred->getValueId(),ex_expr::exp_SCAN_PRED,&scanExpr);
+
+      // The output row will be returned as the last entry of the returned atp.
+      // Change the atp and atpindex of the returned values to indicate that.
+      expGen->assignAtpAndAtpIndex(getVirtualTableDesc()->getColumnList(),
+                                   0, returnedDesc->noTuples()-1);
+    }
+  
+  char * tableName = NULL;
+  tableName = space->AllocateAndCopyToAlignedSpace
     (generator->genGetNameAsAnsiNAString(getTableName()), 0);
 
   ComTdbExeUtilRegionStats * exe_util_tdb = new(space) 
@@ -3448,6 +3470,7 @@ short ExeUtilRegionStats::codeGen(Generator * generator)
          tableName,
 	 input_expr,
 	 inputRowLen,
+         scanExpr,
 	 workCriDesc,
 	 exe_util_row_atp_index,
 	 givenDesc,
@@ -3464,6 +3487,8 @@ short ExeUtilRegionStats::codeGen(Generator * generator)
 
   exe_util_tdb->setSummaryOnly(summaryOnly_);
 
+  exe_util_tdb->setClusterView(clusterView_);
+
   if(!generator->explainDisabled()) {
     generator->setExplainTuple(
        addExplainInfo(exe_util_tdb, 0, 0, generator));

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/optimizer/BindRelExpr.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/BindRelExpr.cpp b/core/sql/optimizer/BindRelExpr.cpp
index fc59331..b67e148 100644
--- a/core/sql/optimizer/BindRelExpr.cpp
+++ b/core/sql/optimizer/BindRelExpr.cpp
@@ -1315,6 +1315,11 @@ TrafDesc *generateSpecialDesc(const CorrName& corrName)
           ExeUtilRegionStats eudss;
           desc = eudss.createVirtualTableDesc();
         }
+      else if (corrName.getQualifiedNameObj().getObjectName() == ExeUtilRegionStats::getVirtualTableClusterViewNameStr())
+        {
+          ExeUtilRegionStats eudss(TRUE);
+          desc = eudss.createVirtualTableDesc();
+        }
     }
 
   return desc;
@@ -1324,22 +1329,6 @@ TrafDesc *generateSpecialDesc(const CorrName& corrName)
 // -----------------------------------------------------------------------
 // member functions for class BindWA
 // -----------------------------------------------------------------------
-// LCOV_EXCL_START - cnu
-/*
-static NABoolean checkForReservedObjectName(QualifiedName &inName)
-{
-  if ((inName.getCatalogName() == "NEO") &&
-      (inName.getSchemaName() == "PUBLIC_ACCESS_SCHEMA") &&
-      (inName.getObjectName() == "_MAINTAIN_CONTROL_INFO_"))
-    {
-      return TRUE;
-    }
-
-  return FALSE;
-}
-*/
-
-// LCOV_EXCL_STOP
 
 NARoutine *BindWA::getNARoutine ( const QualifiedName &name )
 {

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/optimizer/RelExeUtil.cpp
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExeUtil.cpp b/core/sql/optimizer/RelExeUtil.cpp
index 0711aa7..50a42b6 100644
--- a/core/sql/optimizer/RelExeUtil.cpp
+++ b/core/sql/optimizer/RelExeUtil.cpp
@@ -3111,6 +3111,7 @@ ExeUtilRegionStats::ExeUtilRegionStats
  NABoolean summaryOnly,
  NABoolean isIndex,
  NABoolean forDisplay,
+ NABoolean clusterView,
  RelExpr * child,
  CollHeap *oHeap)
      : ExeUtilExpr(REGION_STATS_, objectName,
@@ -3118,6 +3119,7 @@ ExeUtilRegionStats::ExeUtilRegionStats
        summaryOnly_(summaryOnly),
        isIndex_(isIndex),
        displayFormat_(forDisplay),
+       clusterView_(clusterView),
        errorInParams_(FALSE),
        inputColList_(NULL)
 {
@@ -3131,6 +3133,7 @@ RelExpr * ExeUtilRegionStats::copyTopNode(RelExpr *derivedNode, CollHeap* outHea
     result = new (outHeap) ExeUtilRegionStats(getTableName(),
                                               summaryOnly_, isIndex_, 
                                               displayFormat_,
+                                              clusterView_,
                                               NULL,
                                               outHeap);
   else
@@ -3159,7 +3162,8 @@ RelExpr * ExeUtilRegionStats::bindNode(BindWA *bindWA)
     return this;
   }
 
-  if (getTableName().getQualifiedNameObj().getObjectName().isNull())
+  if ((NOT clusterView_) &&
+      (getTableName().getQualifiedNameObj().getObjectName().isNull()))
     {
       *CmpCommon::diags() << DgSqlCode(-4218) << DgString0("REGION STATS");
       
@@ -3167,7 +3171,8 @@ RelExpr * ExeUtilRegionStats::bindNode(BindWA *bindWA)
       return this;
     }
 
-  if (! child(0))
+  if ((! child(0)) &&
+      (NOT getTableName().getQualifiedNameObj().getObjectName().isNull()))
     {
       NATable * naTable = bindWA->getNATable(getTableName());
       if ((!naTable) || (bindWA->errStatus()))

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/optimizer/RelExeUtil.h
----------------------------------------------------------------------
diff --git a/core/sql/optimizer/RelExeUtil.h b/core/sql/optimizer/RelExeUtil.h
index 4de738e..2040a34 100644
--- a/core/sql/optimizer/RelExeUtil.h
+++ b/core/sql/optimizer/RelExeUtil.h
@@ -1751,15 +1751,24 @@ public:
                      NABoolean summaryOnly,
                      NABoolean isIndex,
                      NABoolean forDisplay,
-                     RelExpr * child = NULL,
+                     NABoolean clusterView,
+                     RelExpr * child,
                      CollHeap *oHeap = CmpCommon::statementHeap());
   
   ExeUtilRegionStats():
        summaryOnly_(FALSE),
        isIndex_(FALSE),
-       displayFormat_(FALSE)
+       displayFormat_(FALSE),
+       clusterView_(FALSE)
   {}
- 
+
+  ExeUtilRegionStats(NABoolean clusterView):
+       summaryOnly_(FALSE),
+       isIndex_(FALSE),
+       displayFormat_(FALSE),
+       clusterView_(clusterView)
+  {}
+
   virtual RelExpr * bindNode(BindWA *bindWAPtr);
 
   // a method used for recomputing the outer references (external dataflow
@@ -1775,13 +1784,17 @@ public:
   virtual const char 	*getVirtualTableName();
   static const char * getVirtualTableNameStr() 
   { return "EXE_UTIL_REGION_STATS__";}
+
   virtual TrafDesc 	*createVirtualTableDesc();
 
+  static const char * getVirtualTableClusterViewNameStr() 
+  { return "EXE_UTIL_CLUSTER_STATS__"; }
+
   virtual NABoolean producesOutput() { return TRUE; }
 
   virtual int getArity() const { return ((child(0) == NULL) ? 0 : 1); }
 
- virtual NABoolean aqrSupported() { return TRUE; }
+  virtual NABoolean aqrSupported() { return TRUE; }
 
 private:
   ItemExpr * inputColList_;
@@ -1792,6 +1805,8 @@ private:
 
   NABoolean displayFormat_;
 
+  NABoolean clusterView_;
+
   NABoolean errorInParams_;
 };
 

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/92c84531/core/sql/parser/sqlparser.y
----------------------------------------------------------------------
diff --git a/core/sql/parser/sqlparser.y b/core/sql/parser/sqlparser.y
index 3059f3f..27c43fb 100755
--- a/core/sql/parser/sqlparser.y
+++ b/core/sql/parser/sqlparser.y
@@ -6035,21 +6035,26 @@ TOK_TABLE '(' TOK_INTERNALSP '(' character_string_literal ')' ')'
 
     $$ = lle;
   }
+| TOK_TABLE '(' TOK_CLUSTER stats_or_statistics '(' ')' ')'
+  {
+    $$ = new (PARSERHEAP()) 
+      ExeUtilRegionStats(CorrName(""), FALSE, FALSE, FALSE, TRUE, NULL, PARSERHEAP());
+  }
 | TOK_TABLE '(' TOK_REGION stats_or_statistics '(' ')' ')'
   {
     $$ = new (PARSERHEAP()) 
-      ExeUtilRegionStats(CorrName(""), FALSE, FALSE, FALSE, NULL, PARSERHEAP());
+      ExeUtilRegionStats(CorrName(""), FALSE, FALSE, FALSE, FALSE, NULL, PARSERHEAP());
   }
 | TOK_TABLE '(' TOK_REGION stats_or_statistics '(' table_name ')' ')'
   {
     $$ = new (PARSERHEAP()) 
-      ExeUtilRegionStats(*$6, FALSE, FALSE, FALSE, NULL, PARSERHEAP());
+      ExeUtilRegionStats(*$6, FALSE, FALSE, FALSE, FALSE, NULL, PARSERHEAP());
   }
 | TOK_TABLE '(' TOK_REGION stats_or_statistics '(' TOK_INDEX table_name ')' ')'
   {
     $7->setSpecialType(ExtendedQualName::INDEX_TABLE);
     $$ = new (PARSERHEAP()) 
-      ExeUtilRegionStats(*$7, FALSE, TRUE, FALSE, NULL, PARSERHEAP());
+      ExeUtilRegionStats(*$7, FALSE, TRUE, FALSE, FALSE, NULL, PARSERHEAP());
   }
 | TOK_TABLE '(' TOK_LOB stats_or_statistics '(' ')' ')'
   {
@@ -6064,7 +6069,7 @@ TOK_TABLE '(' TOK_INTERNALSP '(' character_string_literal ')' ')'
 | TOK_TABLE '(' TOK_REGION stats_or_statistics '(' TOK_USING rel_subquery ')' ')'
   {
     $$ = new (PARSERHEAP()) 
-      ExeUtilRegionStats(CorrName("DUMMY"), FALSE, FALSE, FALSE, $7, PARSERHEAP());
+      ExeUtilRegionStats(CorrName("DUMMY"), FALSE, FALSE, FALSE, FALSE, $7, PARSERHEAP());
   }
 
 hivemd_identifier : 
@@ -16404,38 +16409,38 @@ exe_util_init_hbase : TOK_INITIALIZE TOK_TRAFODION
 exe_util_get_region_access_stats : TOK_GET TOK_REGION stats_or_statistics TOK_FOR TOK_TABLE table_name
                {
                  $$ = new (PARSERHEAP()) 
-                   ExeUtilRegionStats(*$6, FALSE, FALSE, TRUE, NULL, PARSERHEAP());
+                   ExeUtilRegionStats(*$6, FALSE, FALSE, TRUE, FALSE, NULL, PARSERHEAP());
 	       } 
              | TOK_GET TOK_REGION stats_or_statistics TOK_FOR TOK_INDEX table_name
                {
                  $6->setSpecialType(ExtendedQualName::INDEX_TABLE);
 
                  $$ = new (PARSERHEAP()) 
-                   ExeUtilRegionStats(*$6, FALSE, TRUE, TRUE, NULL, PARSERHEAP());
+                   ExeUtilRegionStats(*$6, FALSE, TRUE, TRUE, FALSE, NULL, PARSERHEAP());
 	       } 
              | TOK_GET TOK_REGION stats_or_statistics TOK_FOR rel_subquery 
                {
                  $$ = new (PARSERHEAP()) 
                    ExeUtilRegionStats(
-                        CorrName("DUMMY"), FALSE, TRUE, TRUE, $5, PARSERHEAP());
+                        CorrName("DUMMY"), FALSE, TRUE, TRUE, FALSE, $5, PARSERHEAP());
 	       } 
              | TOK_GET TOK_REGION stats_or_statistics TOK_FOR TOK_TABLE table_name ',' TOK_SUMMARY
                {
                  $$ = new (PARSERHEAP()) 
-                   ExeUtilRegionStats(*$6, TRUE, FALSE, TRUE, NULL, PARSERHEAP());
+                   ExeUtilRegionStats(*$6, TRUE, FALSE, TRUE, FALSE, NULL, PARSERHEAP());
 	       } 
              | TOK_GET TOK_REGION stats_or_statistics TOK_FOR TOK_INDEX table_name ',' TOK_SUMMARY
                {
                  $6->setSpecialType(ExtendedQualName::INDEX_TABLE);
 
                  $$ = new (PARSERHEAP()) 
-                   ExeUtilRegionStats(*$6, TRUE, TRUE, TRUE, NULL, PARSERHEAP());
+                   ExeUtilRegionStats(*$6, TRUE, TRUE, TRUE, FALSE, NULL, PARSERHEAP());
 	       } 
              | TOK_GET TOK_REGION stats_or_statistics TOK_FOR rel_subquery ',' TOK_SUMMARY
                {
                  $$ = new (PARSERHEAP()) 
                    ExeUtilRegionStats(
-                        CorrName("DUMMY"), TRUE, TRUE, TRUE, $5, PARSERHEAP());
+                        CorrName("DUMMY"), TRUE, TRUE, TRUE, FALSE, $5, PARSERHEAP());
 	       } 
 
 stats_or_statistics : TOK_STATS


[4/5] incubator-trafodion git commit: updated expected file compGeneral/EXPECTED042

Posted by an...@apache.org.
updated expected file compGeneral/EXPECTED042


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

Branch: refs/heads/master
Commit: c7830893f73770b63ef218e330a90003e9f8c837
Parents: 0e1dd17
Author: Anoop Sharma <an...@esgyn.com>
Authored: Fri Aug 5 20:23:46 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Fri Aug 5 20:23:46 2016 +0000

----------------------------------------------------------------------
 core/sql/regress/compGeneral/EXPECTED042 | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/c7830893/core/sql/regress/compGeneral/EXPECTED042
----------------------------------------------------------------------
diff --git a/core/sql/regress/compGeneral/EXPECTED042 b/core/sql/regress/compGeneral/EXPECTED042
index dc6d864..e0ab126 100644
--- a/core/sql/regress/compGeneral/EXPECTED042
+++ b/core/sql/regress/compGeneral/EXPECTED042
@@ -2225,8 +2225,8 @@ NUM_HKEYS   NUM_SKEYS   NUM_MAX_VALUES_PER_KEY  NUM_HASH_TABLE_BUCKETS
        134           1              1               0
        142           0              1               0
        142           1              1               0
-       150           2              3               0
-       150           3              3               0
+       174           2              3               0
+       174           3              3               0
        187           0              4               0
        187           0              4               0
        201           0              2               1
@@ -2319,8 +2319,8 @@ NUM_HKEYS   NUM_SKEYS   NUM_MAX_VALUES_PER_KEY  NUM_HASH_TABLE_BUCKETS
        134           1              1               0
        142           0              1               0
        142           1              1               0
-       150           2              3               0
-       150           3              3               0
+       174           2              3               0
+       174           3              3               0
        187           0              4               0
        187           0              4               0
        201           0              2               1


[5/5] incubator-trafodion git commit: Merge [TRAFODION-2141] PR-641 Cluster view of hbase stats

Posted by an...@apache.org.
Merge [TRAFODION-2141] PR-641 Cluster view of hbase stats


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

Branch: refs/heads/master
Commit: 9f3542dcf3c4911f3972e0a3446331c7d476164b
Parents: a6b6211 c783089
Author: Anoop Sharma <an...@esgyn.com>
Authored: Sat Aug 6 02:45:50 2016 +0000
Committer: Anoop Sharma <an...@esgyn.com>
Committed: Sat Aug 6 02:45:50 2016 +0000

----------------------------------------------------------------------
 core/sql/bin/SqlciErrors.txt                    |   1 +
 core/sql/comexe/ComTdbExeUtil.cpp               |   3 +-
 core/sql/comexe/ComTdbExeUtil.h                 |  89 +++--
 core/sql/common/str.cpp                         |  23 +-
 core/sql/executor/ExExeUtil.h                   |  48 ++-
 core/sql/executor/ExExeUtilCommon.cpp           |  31 ++
 core/sql/executor/ExExeUtilGet.cpp              | 396 +++++++++++++++++--
 core/sql/executor/ExExplain.cpp                 |  26 +-
 core/sql/executor/HBaseClient_JNI.cpp           |  48 ++-
 core/sql/executor/HBaseClient_JNI.h             |   2 +
 core/sql/exp/ExpHbaseInterface.cpp              |  20 +
 core/sql/exp/ExpHbaseInterface.h                |   3 +
 core/sql/generator/GenRelExeUtil.cpp            |  39 +-
 core/sql/optimizer/BindRelExpr.cpp              |  21 +-
 core/sql/optimizer/OptRange.cpp                 |  17 +-
 core/sql/optimizer/RelExeUtil.cpp               |   9 +-
 core/sql/optimizer/RelExeUtil.h                 |  23 +-
 core/sql/parser/sqlparser.y                     |  25 +-
 core/sql/regress/compGeneral/EXPECTED042        |   8 +-
 core/sql/regress/seabase/EXPECTED002            | 173 ++++++--
 core/sql/regress/seabase/FILTER002              |   4 +-
 core/sql/regress/seabase/TEST002                |  38 +-
 core/sql/sqlcomp/CmpSeabaseDDLtable.cpp         |   2 +
 .../java/org/trafodion/sql/HBaseClient.java     | 124 +++++-
 .../java/org/trafodion/sql/TrafRegionStats.java | 118 +++++-
 25 files changed, 1122 insertions(+), 169 deletions(-)
----------------------------------------------------------------------