You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by px...@apache.org on 2016/03/20 18:51:25 UTC

[1/5] hive git commit: HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master c0c08a3a0 -> a0a53713a


http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_disablecbo_4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_disablecbo_4.q.out b/ql/src/test/results/clientpositive/masking_disablecbo_4.q.out
new file mode 100644
index 0000000..8233936
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_disablecbo_4.q.out
@@ -0,0 +1,229 @@
+PREHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test_subq
+POSTHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test_subq
+POSTHOOK: Lineage: masking_test_subq.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test_subq.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (key = '5') (type: boolean)
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: '5' (type: string)
+                outputColumnNames: _col0
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1
+PREHOOK: type: QUERY
+POSTHOOK: query: --should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key = 5)) (type: boolean)
+              Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: 5 (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: --should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key = 5)) (type: boolean)
+              Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: 5 (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: --should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: int), value (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+


[2/5] hive git commit: HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Posted by px...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_disablecbo_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_disablecbo_3.q.out b/ql/src/test/results/clientpositive/masking_disablecbo_3.q.out
new file mode 100644
index 0000000..8826500
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_disablecbo_3.q.out
@@ -0,0 +1,7737 @@
+PREHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test_subq
+POSTHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test_subq
+POSTHOOK: Lineage: masking_test_subq.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test_subq.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: int), value (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+0	val_0
+0	val_0
+0	val_0
+2	val_2
+4	val_4
+5	val_5
+5	val_5
+5	val_5
+8	val_8
+9	val_9
+10	val_10
+11	val_11
+12	val_12
+12	val_12
+15	val_15
+15	val_15
+17	val_17
+18	val_18
+18	val_18
+19	val_19
+20	val_20
+24	val_24
+24	val_24
+26	val_26
+26	val_26
+27	val_27
+28	val_28
+30	val_30
+33	val_33
+34	val_34
+35	val_35
+35	val_35
+35	val_35
+37	val_37
+37	val_37
+41	val_41
+42	val_42
+42	val_42
+43	val_43
+44	val_44
+47	val_47
+51	val_51
+51	val_51
+53	val_53
+54	val_54
+57	val_57
+58	val_58
+58	val_58
+64	val_64
+65	val_65
+66	val_66
+67	val_67
+67	val_67
+69	val_69
+70	val_70
+70	val_70
+70	val_70
+72	val_72
+72	val_72
+74	val_74
+76	val_76
+76	val_76
+77	val_77
+78	val_78
+80	val_80
+82	val_82
+83	val_83
+83	val_83
+84	val_84
+84	val_84
+85	val_85
+86	val_86
+87	val_87
+90	val_90
+90	val_90
+90	val_90
+92	val_92
+95	val_95
+95	val_95
+96	val_96
+97	val_97
+97	val_97
+98	val_98
+98	val_98
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+200	val_200
+200	val_200
+201	val_201
+202	val_202
+203	val_203
+203	val_203
+205	val_205
+205	val_205
+207	val_207
+207	val_207
+208	val_208
+208	val_208
+208	val_208
+209	val_209
+209	val_209
+213	val_213
+213	val_213
+214	val_214
+216	val_216
+216	val_216
+217	val_217
+217	val_217
+218	val_218
+219	val_219
+219	val_219
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+233	val_233
+233	val_233
+235	val_235
+237	val_237
+237	val_237
+238	val_238
+238	val_238
+239	val_239
+239	val_239
+241	val_241
+242	val_242
+242	val_242
+244	val_244
+247	val_247
+248	val_248
+249	val_249
+252	val_252
+255	val_255
+255	val_255
+256	val_256
+256	val_256
+257	val_257
+258	val_258
+260	val_260
+262	val_262
+263	val_263
+265	val_265
+265	val_265
+266	val_266
+272	val_272
+272	val_272
+273	val_273
+273	val_273
+273	val_273
+274	val_274
+275	val_275
+277	val_277
+277	val_277
+277	val_277
+277	val_277
+278	val_278
+278	val_278
+280	val_280
+280	val_280
+281	val_281
+281	val_281
+282	val_282
+282	val_282
+283	val_283
+284	val_284
+285	val_285
+286	val_286
+287	val_287
+288	val_288
+288	val_288
+289	val_289
+291	val_291
+292	val_292
+296	val_296
+298	val_298
+298	val_298
+298	val_298
+302	val_302
+305	val_305
+306	val_306
+307	val_307
+307	val_307
+308	val_308
+309	val_309
+309	val_309
+310	val_310
+311	val_311
+311	val_311
+311	val_311
+315	val_315
+316	val_316
+316	val_316
+316	val_316
+317	val_317
+317	val_317
+318	val_318
+318	val_318
+318	val_318
+321	val_321
+321	val_321
+322	val_322
+322	val_322
+323	val_323
+325	val_325
+325	val_325
+327	val_327
+327	val_327
+327	val_327
+331	val_331
+331	val_331
+332	val_332
+333	val_333
+333	val_333
+335	val_335
+336	val_336
+338	val_338
+339	val_339
+341	val_341
+342	val_342
+342	val_342
+344	val_344
+344	val_344
+345	val_345
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+351	val_351
+353	val_353
+353	val_353
+356	val_356
+360	val_360
+362	val_362
+364	val_364
+365	val_365
+366	val_366
+367	val_367
+367	val_367
+368	val_368
+369	val_369
+369	val_369
+369	val_369
+373	val_373
+374	val_374
+375	val_375
+377	val_377
+378	val_378
+379	val_379
+382	val_382
+382	val_382
+384	val_384
+384	val_384
+384	val_384
+386	val_386
+389	val_389
+392	val_392
+393	val_393
+394	val_394
+395	val_395
+395	val_395
+396	val_396
+396	val_396
+396	val_396
+397	val_397
+397	val_397
+399	val_399
+399	val_399
+400	val_400
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+402	val_402
+403	val_403
+403	val_403
+403	val_403
+404	val_404
+404	val_404
+406	val_406
+406	val_406
+406	val_406
+406	val_406
+407	val_407
+409	val_409
+409	val_409
+409	val_409
+411	val_411
+413	val_413
+413	val_413
+414	val_414
+414	val_414
+417	val_417
+417	val_417
+417	val_417
+418	val_418
+419	val_419
+421	val_421
+424	val_424
+424	val_424
+427	val_427
+429	val_429
+429	val_429
+430	val_430
+430	val_430
+430	val_430
+431	val_431
+431	val_431
+431	val_431
+432	val_432
+435	val_435
+436	val_436
+437	val_437
+438	val_438
+438	val_438
+438	val_438
+439	val_439
+439	val_439
+443	val_443
+444	val_444
+446	val_446
+448	val_448
+449	val_449
+452	val_452
+453	val_453
+454	val_454
+454	val_454
+454	val_454
+455	val_455
+457	val_457
+458	val_458
+458	val_458
+459	val_459
+459	val_459
+460	val_460
+462	val_462
+462	val_462
+463	val_463
+463	val_463
+466	val_466
+466	val_466
+466	val_466
+467	val_467
+468	val_468
+468	val_468
+468	val_468
+468	val_468
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+470	val_470
+472	val_472
+475	val_475
+477	val_477
+478	val_478
+478	val_478
+479	val_479
+480	val_480
+480	val_480
+480	val_480
+481	val_481
+482	val_482
+483	val_483
+484	val_484
+485	val_485
+487	val_487
+489	val_489
+489	val_489
+489	val_489
+489	val_489
+490	val_490
+491	val_491
+492	val_492
+492	val_492
+493	val_493
+494	val_494
+495	val_495
+496	val_496
+497	val_497
+498	val_498
+498	val_498
+498	val_498
+PREHOOK: query: explain select * from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(key) is not null and (key > 0)) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: int), value (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2	val_2
+4	val_4
+5	val_5
+5	val_5
+5	val_5
+8	val_8
+9	val_9
+10	val_10
+11	val_11
+12	val_12
+12	val_12
+15	val_15
+15	val_15
+17	val_17
+18	val_18
+18	val_18
+19	val_19
+20	val_20
+24	val_24
+24	val_24
+26	val_26
+26	val_26
+27	val_27
+28	val_28
+30	val_30
+33	val_33
+34	val_34
+35	val_35
+35	val_35
+35	val_35
+37	val_37
+37	val_37
+41	val_41
+42	val_42
+42	val_42
+43	val_43
+44	val_44
+47	val_47
+51	val_51
+51	val_51
+53	val_53
+54	val_54
+57	val_57
+58	val_58
+58	val_58
+64	val_64
+65	val_65
+66	val_66
+67	val_67
+67	val_67
+69	val_69
+70	val_70
+70	val_70
+70	val_70
+72	val_72
+72	val_72
+74	val_74
+76	val_76
+76	val_76
+77	val_77
+78	val_78
+80	val_80
+82	val_82
+83	val_83
+83	val_83
+84	val_84
+84	val_84
+85	val_85
+86	val_86
+87	val_87
+90	val_90
+90	val_90
+90	val_90
+92	val_92
+95	val_95
+95	val_95
+96	val_96
+97	val_97
+97	val_97
+98	val_98
+98	val_98
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+200	val_200
+200	val_200
+201	val_201
+202	val_202
+203	val_203
+203	val_203
+205	val_205
+205	val_205
+207	val_207
+207	val_207
+208	val_208
+208	val_208
+208	val_208
+209	val_209
+209	val_209
+213	val_213
+213	val_213
+214	val_214
+216	val_216
+216	val_216
+217	val_217
+217	val_217
+218	val_218
+219	val_219
+219	val_219
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+233	val_233
+233	val_233
+235	val_235
+237	val_237
+237	val_237
+238	val_238
+238	val_238
+239	val_239
+239	val_239
+241	val_241
+242	val_242
+242	val_242
+244	val_244
+247	val_247
+248	val_248
+249	val_249
+252	val_252
+255	val_255
+255	val_255
+256	val_256
+256	val_256
+257	val_257
+258	val_258
+260	val_260
+262	val_262
+263	val_263
+265	val_265
+265	val_265
+266	val_266
+272	val_272
+272	val_272
+273	val_273
+273	val_273
+273	val_273
+274	val_274
+275	val_275
+277	val_277
+277	val_277
+277	val_277
+277	val_277
+278	val_278
+278	val_278
+280	val_280
+280	val_280
+281	val_281
+281	val_281
+282	val_282
+282	val_282
+283	val_283
+284	val_284
+285	val_285
+286	val_286
+287	val_287
+288	val_288
+288	val_288
+289	val_289
+291	val_291
+292	val_292
+296	val_296
+298	val_298
+298	val_298
+298	val_298
+302	val_302
+305	val_305
+306	val_306
+307	val_307
+307	val_307
+308	val_308
+309	val_309
+309	val_309
+310	val_310
+311	val_311
+311	val_311
+311	val_311
+315	val_315
+316	val_316
+316	val_316
+316	val_316
+317	val_317
+317	val_317
+318	val_318
+318	val_318
+318	val_318
+321	val_321
+321	val_321
+322	val_322
+322	val_322
+323	val_323
+325	val_325
+325	val_325
+327	val_327
+327	val_327
+327	val_327
+331	val_331
+331	val_331
+332	val_332
+333	val_333
+333	val_333
+335	val_335
+336	val_336
+338	val_338
+339	val_339
+341	val_341
+342	val_342
+342	val_342
+344	val_344
+344	val_344
+345	val_345
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+351	val_351
+353	val_353
+353	val_353
+356	val_356
+360	val_360
+362	val_362
+364	val_364
+365	val_365
+366	val_366
+367	val_367
+367	val_367
+368	val_368
+369	val_369
+369	val_369
+369	val_369
+373	val_373
+374	val_374
+375	val_375
+377	val_377
+378	val_378
+379	val_379
+382	val_382
+382	val_382
+384	val_384
+384	val_384
+384	val_384
+386	val_386
+389	val_389
+392	val_392
+393	val_393
+394	val_394
+395	val_395
+395	val_395
+396	val_396
+396	val_396
+396	val_396
+397	val_397
+397	val_397
+399	val_399
+399	val_399
+400	val_400
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+402	val_402
+403	val_403
+403	val_403
+403	val_403
+404	val_404
+404	val_404
+406	val_406
+406	val_406
+406	val_406
+406	val_406
+407	val_407
+409	val_409
+409	val_409
+409	val_409
+411	val_411
+413	val_413
+413	val_413
+414	val_414
+414	val_414
+417	val_417
+417	val_417
+417	val_417
+418	val_418
+419	val_419
+421	val_421
+424	val_424
+424	val_424
+427	val_427
+429	val_429
+429	val_429
+430	val_430
+430	val_430
+430	val_430
+431	val_431
+431	val_431
+431	val_431
+432	val_432
+435	val_435
+436	val_436
+437	val_437
+438	val_438
+438	val_438
+438	val_438
+439	val_439
+439	val_439
+443	val_443
+444	val_444
+446	val_446
+448	val_448
+449	val_449
+452	val_452
+453	val_453
+454	val_454
+454	val_454
+454	val_454
+455	val_455
+457	val_457
+458	val_458
+458	val_458
+459	val_459
+459	val_459
+460	val_460
+462	val_462
+462	val_462
+463	val_463
+463	val_463
+466	val_466
+466	val_466
+466	val_466
+467	val_467
+468	val_468
+468	val_468
+468	val_468
+468	val_468
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+470	val_470
+472	val_472
+475	val_475
+477	val_477
+478	val_478
+478	val_478
+479	val_479
+480	val_480
+480	val_480
+480	val_480
+481	val_481
+482	val_482
+483	val_483
+484	val_484
+485	val_485
+487	val_487
+489	val_489
+489	val_489
+489	val_489
+489	val_489
+490	val_490
+491	val_491
+492	val_492
+492	val_492
+493	val_493
+494	val_494
+495	val_495
+496	val_496
+497	val_497
+498	val_498
+498	val_498
+498	val_498
+PREHOOK: query: explain select key from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(key) is not null and (key > 0)) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: int)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select key from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select key from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2
+4
+5
+5
+5
+8
+9
+10
+11
+12
+12
+15
+15
+17
+18
+18
+19
+20
+24
+24
+26
+26
+27
+28
+30
+33
+34
+35
+35
+35
+37
+37
+41
+42
+42
+43
+44
+47
+51
+51
+53
+54
+57
+58
+58
+64
+65
+66
+67
+67
+69
+70
+70
+70
+72
+72
+74
+76
+76
+77
+78
+80
+82
+83
+83
+84
+84
+85
+86
+87
+90
+90
+90
+92
+95
+95
+96
+97
+97
+98
+98
+100
+100
+103
+103
+104
+104
+105
+111
+113
+113
+114
+116
+118
+118
+119
+119
+119
+120
+120
+125
+125
+126
+128
+128
+128
+129
+129
+131
+133
+134
+134
+136
+137
+137
+138
+138
+138
+138
+143
+145
+146
+146
+149
+149
+150
+152
+152
+153
+155
+156
+157
+158
+160
+162
+163
+164
+164
+165
+165
+166
+167
+167
+167
+168
+169
+169
+169
+169
+170
+172
+172
+174
+174
+175
+175
+176
+176
+177
+178
+179
+179
+180
+181
+183
+186
+187
+187
+187
+189
+190
+191
+191
+192
+193
+193
+193
+194
+195
+195
+196
+197
+197
+199
+199
+199
+200
+200
+201
+202
+203
+203
+205
+205
+207
+207
+208
+208
+208
+209
+209
+213
+213
+214
+216
+216
+217
+217
+218
+219
+219
+221
+221
+222
+223
+223
+224
+224
+226
+228
+229
+229
+230
+230
+230
+230
+230
+233
+233
+235
+237
+237
+238
+238
+239
+239
+241
+242
+242
+244
+247
+248
+249
+252
+255
+255
+256
+256
+257
+258
+260
+262
+263
+265
+265
+266
+272
+272
+273
+273
+273
+274
+275
+277
+277
+277
+277
+278
+278
+280
+280
+281
+281
+282
+282
+283
+284
+285
+286
+287
+288
+288
+289
+291
+292
+296
+298
+298
+298
+302
+305
+306
+307
+307
+308
+309
+309
+310
+311
+311
+311
+315
+316
+316
+316
+317
+317
+318
+318
+318
+321
+321
+322
+322
+323
+325
+325
+327
+327
+327
+331
+331
+332
+333
+333
+335
+336
+338
+339
+341
+342
+342
+344
+344
+345
+348
+348
+348
+348
+348
+351
+353
+353
+356
+360
+362
+364
+365
+366
+367
+367
+368
+369
+369
+369
+373
+374
+375
+377
+378
+379
+382
+382
+384
+384
+384
+386
+389
+392
+393
+394
+395
+395
+396
+396
+396
+397
+397
+399
+399
+400
+401
+401
+401
+401
+401
+402
+403
+403
+403
+404
+404
+406
+406
+406
+406
+407
+409
+409
+409
+411
+413
+413
+414
+414
+417
+417
+417
+418
+419
+421
+424
+424
+427
+429
+429
+430
+430
+430
+431
+431
+431
+432
+435
+436
+437
+438
+438
+438
+439
+439
+443
+444
+446
+448
+449
+452
+453
+454
+454
+454
+455
+457
+458
+458
+459
+459
+460
+462
+462
+463
+463
+466
+466
+466
+467
+468
+468
+468
+468
+469
+469
+469
+469
+469
+470
+472
+475
+477
+478
+478
+479
+480
+480
+480
+481
+482
+483
+484
+485
+487
+489
+489
+489
+489
+490
+491
+492
+492
+493
+494
+495
+496
+497
+498
+498
+498
+PREHOOK: query: explain select value from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select value from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(key) is not null and (key > 0)) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                value expressions: value (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col1 (type: string)
+            outputColumnNames: _col0
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select value from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select value from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+val_2
+val_4
+val_5
+val_5
+val_5
+val_8
+val_9
+val_10
+val_11
+val_12
+val_12
+val_15
+val_15
+val_17
+val_18
+val_18
+val_19
+val_20
+val_24
+val_24
+val_26
+val_26
+val_27
+val_28
+val_30
+val_33
+val_34
+val_35
+val_35
+val_35
+val_37
+val_37
+val_41
+val_42
+val_42
+val_43
+val_44
+val_47
+val_51
+val_51
+val_53
+val_54
+val_57
+val_58
+val_58
+val_64
+val_65
+val_66
+val_67
+val_67
+val_69
+val_70
+val_70
+val_70
+val_72
+val_72
+val_74
+val_76
+val_76
+val_77
+val_78
+val_80
+val_82
+val_83
+val_83
+val_84
+val_84
+val_85
+val_86
+val_87
+val_90
+val_90
+val_90
+val_92
+val_95
+val_95
+val_96
+val_97
+val_97
+val_98
+val_98
+val_100
+val_100
+val_103
+val_103
+val_104
+val_104
+val_105
+val_111
+val_113
+val_113
+val_114
+val_116
+val_118
+val_118
+val_119
+val_119
+val_119
+val_120
+val_120
+val_125
+val_125
+val_126
+val_128
+val_128
+val_128
+val_129
+val_129
+val_131
+val_133
+val_134
+val_134
+val_136
+val_137
+val_137
+val_138
+val_138
+val_138
+val_138
+val_143
+val_145
+val_146
+val_146
+val_149
+val_149
+val_150
+val_152
+val_152
+val_153
+val_155
+val_156
+val_157
+val_158
+val_160
+val_162
+val_163
+val_164
+val_164
+val_165
+val_165
+val_166
+val_167
+val_167
+val_167
+val_168
+val_169
+val_169
+val_169
+val_169
+val_170
+val_172
+val_172
+val_174
+val_174
+val_175
+val_175
+val_176
+val_176
+val_177
+val_178
+val_179
+val_179
+val_180
+val_181
+val_183
+val_186
+val_187
+val_187
+val_187
+val_189
+val_190
+val_191
+val_191
+val_192
+val_193
+val_193
+val_193
+val_194
+val_195
+val_195
+val_196
+val_197
+val_197
+val_199
+val_199
+val_199
+val_200
+val_200
+val_201
+val_202
+val_203
+val_203
+val_205
+val_205
+val_207
+val_207
+val_208
+val_208
+val_208
+val_209
+val_209
+val_213
+val_213
+val_214
+val_216
+val_216
+val_217
+val_217
+val_218
+val_219
+val_219
+val_221
+val_221
+val_222
+val_223
+val_223
+val_224
+val_224
+val_226
+val_228
+val_229
+val_229
+val_230
+val_230
+val_230
+val_230
+val_230
+val_233
+val_233
+val_235
+val_237
+val_237
+val_238
+val_238
+val_239
+val_239
+val_241
+val_242
+val_242
+val_244
+val_247
+val_248
+val_249
+val_252
+val_255
+val_255
+val_256
+val_256
+val_257
+val_258
+val_260
+val_262
+val_263
+val_265
+val_265
+val_266
+val_272
+val_272
+val_273
+val_273
+val_273
+val_274
+val_275
+val_277
+val_277
+val_277
+val_277
+val_278
+val_278
+val_280
+val_280
+val_281
+val_281
+val_282
+val_282
+val_283
+val_284
+val_285
+val_286
+val_287
+val_288
+val_288
+val_289
+val_291
+val_292
+val_296
+val_298
+val_298
+val_298
+val_302
+val_305
+val_306
+val_307
+val_307
+val_308
+val_309
+val_309
+val_310
+val_311
+val_311
+val_311
+val_315
+val_316
+val_316
+val_316
+val_317
+val_317
+val_318
+val_318
+val_318
+val_321
+val_321
+val_322
+val_322
+val_323
+val_325
+val_325
+val_327
+val_327
+val_327
+val_331
+val_331
+val_332
+val_333
+val_333
+val_335
+val_336
+val_338
+val_339
+val_341
+val_342
+val_342
+val_344
+val_344
+val_345
+val_348
+val_348
+val_348
+val_348
+val_348
+val_351
+val_353
+val_353
+val_356
+val_360
+val_362
+val_364
+val_365
+val_366
+val_367
+val_367
+val_368
+val_369
+val_369
+val_369
+val_373
+val_374
+val_375
+val_377
+val_378
+val_379
+val_382
+val_382
+val_384
+val_384
+val_384
+val_386
+val_389
+val_392
+val_393
+val_394
+val_395
+val_395
+val_396
+val_396
+val_396
+val_397
+val_397
+val_399
+val_399
+val_400
+val_401
+val_401
+val_401
+val_401
+val_401
+val_402
+val_403
+val_403
+val_403
+val_404
+val_404
+val_406
+val_406
+val_406
+val_406
+val_407
+val_409
+val_409
+val_409
+val_411
+val_413
+val_413
+val_414
+val_414
+val_417
+val_417
+val_417
+val_418
+val_419
+val_421
+val_424
+val_424
+val_427
+val_429
+val_429
+val_430
+val_430
+val_430
+val_431
+val_431
+val_431
+val_432
+val_435
+val_436
+val_437
+val_438
+val_438
+val_438
+val_439
+val_439
+val_443
+val_444
+val_446
+val_448
+val_449
+val_452
+val_453
+val_454
+val_454
+val_454
+val_455
+val_457
+val_458
+val_458
+val_459
+val_459
+val_460
+val_462
+val_462
+val_463
+val_463
+val_466
+val_466
+val_466
+val_467
+val_468
+val_468
+val_468
+val_468
+val_469
+val_469
+val_469
+val_469
+val_469
+val_470
+val_472
+val_475
+val_477
+val_478
+val_478
+val_479
+val_480
+val_480
+val_480
+val_481
+val_482
+val_483
+val_484
+val_485
+val_487
+val_489
+val_489
+val_489
+val_489
+val_490
+val_491
+val_492
+val_492
+val_493
+val_494
+val_495
+val_496
+val_497
+val_498
+val_498
+val_498
+PREHOOK: query: explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                sort order: ++
+                Map-reduce partition columns: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: int), value (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), key (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: string), _col1 (type: string)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+            1 UDFToDouble(_col0) (type: double), UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: UDFToDouble(_col0) (type: double)
+              sort order: +
+              Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+              Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: srcpart
+            Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double)
+                sort order: +
+                Map-reduce partition columns: UDFToDouble(key) (type: double)
+                Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: string), value (type: string), ds (type: string), hr (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(key) (type: double)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+2	val_2	2	val_2	2008-04-09	11
+2	val_2	2	val_2	2008-04-08	11
+2	val_2	2	val_2	2008-04-09	12
+2	val_2	2	val_2	2008-04-08	12
+4	val_4	4	val_4	2008-04-08	12
+4	val_4	4	val_4	2008-04-09	12
+4	val_4	4	val_4	2008-04-08	11
+4	val_4	4	val_4	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+8	val_8	8	val_8	2008-04-08	11
+8	val_8	8	val_8	2008-04-09	11
+8	val_8	8	val_8	2008-04-08	12
+8	val_8	8	val_8	2008-04-09	12
+9	val_9	9	val_9	2008-04-08	12
+9	val_9	9	val_9	2008-04-09	12
+9	val_9	9	val_9	2008-04-09	11
+9	val_9	9	val_9	2008-04-08	11
+10	val_10	10	val_10	2008-04-09	11
+10	val_10	10	val_10	2008-04-09	12
+10	val_10	10	val_10	2008-04-08	12
+10	val_10	10	val_10	2008-04-08	11
+11	val_11	11	val_11	2008-04-09	12
+11	val_11	11	val_11	2008-04-09	11
+11	val_11	11	val_11	2008-04-08	12
+11	val_11	11	val_11	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-09	12
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	12
+17	val_17	17	val_17	2008-04-09	11
+17	val_17	17	val_17	2008-04-09	12
+17	val_17	17	val_17	2008-04-08	12
+17	val_17	17	val_17	2008-04-08	11
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-08	11
+19	val_19	19	val_19	2008-04-09	11
+19	val_19	19	val_19	2008-04-09	12
+19	val_19	19	val_19	2008-04-08	11
+19	val_19	19	val_19	2008-04-08	12
+20	val_20	20	val_20	2008-04-08	11
+20	val_20	20	val_20	2008-04-09	11
+20	val_20	20	val_20	2008-04-08	12
+20	val_20	20	val_20	2008-04-09	12
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	11
+27	val_27	27	val_27	2008-04-09	12
+27	val_27	27	val_27	2008-04-09	11
+27	val_27	27	val_27	2008-04-08	12
+27	val_27	27	val_27	2008-04-08	11
+28	val_28	28	val_28	2008-04-08	12
+28	val_28	28	val_28	2008-04-09	11
+28	val_28	28	val_28	2008-04-09	12
+28	val_28	28	val_28	2008-04-08	11
+30	val_30	30	val_30	2008-04-09	12
+30	val_30	30	val_30	2008-04-09	11
+30	val_30	30	val_30	2008-04-08	11
+30	val_30	30	val_30	2008-04-08	12
+33	val_33	33	val_33	2008-04-08	11
+33	val_33	33	val_33	2008-04-08	12
+33	val_33	33	val_33	2008-04-09	11
+33	val_33	33	val_33	2008-04-09	12
+34	val_34	34	val_34	2008-04-09	11
+34	val_34	34	val_34	2008-04-09	12
+34	val_34	34	val_34	2008-04-08	11
+34	val_34	34	val_34	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+41	val_41	41	val_41	2008-04-08	11
+41	val_41	41	val_41	2008-04-09	11
+41	val_41	41	val_41	2008-04-09	12
+41	val_41	41	val_41	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	11
+43	val_43	43	val_43	2008-04-09	12
+43	val_43	43	val_43	2008-04-08	12
+43	val_43	43	val_43	2008-04-09	11
+43	val_43	43	val_43	2008-04-08	11
+44	val_44	44	val_44	2008-04-09	11
+44	val_44	44	val_44	2008-04-08	11
+44	val_44	44	val_44	2008-04-09	12
+44	val_44	44	val_44	2008-04-08	12
+47	val_47	47	val_47	2008-04-08	11
+47	val_47	47	val_47	2008-04-08	12
+47	val_47	47	val_47	2008-04-09	12
+47	val_47	47	val_47	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-09	11
+53	val_53	53	val_53	2008-04-08	11
+53	val_53	53	val_53	2008-04-09	11
+53	val_53	53	val_53	2008-04-09	12
+53	val_53	53	val_53	2008-04-08	12
+54	val_54	54	val_54	2008-04-08	11
+54	val_54	54	val_54	2008-04-09	12
+54	val_54	54	val_54	2008-04-09	11
+54	val_54	54	val_54	2008-04-08	12
+57	val_57	57	val_57	2008-04-08	12
+57	val_57	57	val_57	2008-04-08	11
+57	val_57	57	val_57	2008-04-09	11
+57	val_57	57	val_57	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	12
+64	val_64	64	val_64	2008-04-09	12
+64	val_64	64	val_64	2008-04-08	11
+64	val_64	64	val_64	2008-04-08	12
+64	val_64	64	val_64	2008-04-09	11
+65	val_65	65	val_65	2008-04-09	11
+65	val_65	65	val_65	2008-04-09	12
+65	val_65	65	val_65	2008-04-08	11
+65	val_65	65	val_65	2008-04-08	12
+66	val_66	66	val_66	2008-04-09	12
+66	val_66	66	val_66	2008-04-09	11
+66	val_66	66	val_66	2008-04-08	11
+66	val_66	66	val_66	2008-04-08	12
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+69	val_69	69	val_69	2008-04-09	12
+69	val_69	69	val_69	2008-04-08	11
+69	val_69	69	val_69	2008-04-08	12
+69	val_69	69	val_69	2008-04-09	11
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	11
+74	val_74	74	val_74	2008-04-09	11
+74	val_74	74	val_74	2008-04-08	12
+74	val_74	74	val_74	2008-04-09	12
+74	val_74	74	val_74	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-09	11
+77	val_77	77	val_77	2008-04-08	12
+77	val_77	77	val_77	2008-04-09	12
+77	val_77	77	val_77	2008-04-09	11
+77	val_77	77	val_77	2008-04-08	11
+78	val_78	78	val_78	2008-04-09	11
+78	val_78	78	val_78	2008-04-08	11
+78	val_78	78	val_78	2008-04-09	12
+78	val_78	78	val_78	2008-04-08	12
+80	val_80	80	val_80	2008-04-09	11
+80	val_80	80	val_80	2008-04-08	11
+80	val_80	80	val_80	2008-04-09	12
+80	val_80	80	val_80	2008-04-08	12
+82	val_82	82	val_82	2008-04-08	12
+82	val_82	82	val_82	2008-04-09	11
+82	val_82	82	val_82	2008-04-08	11
+82	val_82	82	val_82	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-08	12
+85	val_85	85	val_85	2008-04-09	12
+85	val_85	85	val_85	2008-04-09	11
+85	val_85	85	val_85	2008-04-08	11
+85	val_85	85	val_85	2008-04-08	12
+86	val_86	86	val_86	2008-04-08	12
+86	val_86	86	val_86	2008-04-09	11
+86	val_86	86	val_86	2008-04-08	11
+86	val_86	86	val_86	2008-04-09	12
+87	val_87	87	val_87	2008-04-09	12
+87	val_87	87	val_87	2008-04-08	11
+87	val_87	87	val_87	2008-04-08	12
+87	val_87	87	val_87	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+92	val_92	92	val_92	2008-04-09	11
+92	val_92	92	val_92	2008-04-09	12
+92	val_92	92	val_92	2008-04-08	12
+92	val_92	92	val_92	2008-04-08	11
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	11
+96	val_96	96	val_96	2008-04-09	12
+96	val_96	96	val_96	2008-04-08	11
+96	val_96	96	val_96	2008-04-08	12
+96	val_96	96	val_96	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-09	11
+105	val_105	105	val_105	2008-04-09	12
+105	val_105	105	val_105	2008-04-09	11
+105	val_105	105	val_105	2008-04-08	11
+105	val_105	105	val_105	2008-04-08	12
+111	val_111	111	val_111	2008-04-08	12
+111	val_111	111	val_111	2008-04-08	11
+111	val_111	111	val_111	2008-04-09	12
+111	val_111	111	val_111	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-09	12
+114	val_114	114	val_114	2008-04-09	11
+114	val_114	114	val_114	2008-04-09	12
+114	val_114	114	val_114	2008-04-08	12
+114	val_114	114	val_114	2008-04-08	11
+116	val_116	116	val_116	2008-04-08	12
+116	val_116	116	val_116	2008-04-09	11
+116	val_116	116	val_116	2008-04-08	11
+116	val_116	116	val_116	2008-04-09	12
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-08	12
+126	val_126	126	val_126	2008-04-08	11
+126	val_126	126	val_126	2008-04-08	12
+126	val_126	126	val_126	2008-04-09	12
+126	val_126	126	val_126	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+131	val_131	131	val_131	2008-04-08	12
+131	val_131	131	val_131	2008-04-09	12
+131	val_131	131	val_131	2008-04-09	11
+131	val_131	131	val_131	2008-04-08	11
+133	val_133	133	val_133	2008-04-08	11
+133	val_133	133	val_133	2008-04-08	12
+133	val_133	133	val_133	2008-04-09	11
+133	val_133	133	val_133	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	11
+136	val_136	136	val_136	2008-04-09	12
+136	val_136	136	val_136	2008-04-08	12
+136	val_136	136	val_136	2008-04-08	11
+136	val_136	136	val_136	2008-04-09	11
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+143	val_143	143	val_143	2008-04-09	12
+143	val_143	143	val_143	2008-04-08	11
+143	val_143	143	val_143	2008-04-09	11
+143	val_143	143	val_143	2008-04-08	12
+145	val_145	145	val_145	2008-04-09	11
+145	val_145	145	val_145	2008-04-08	11
+145	val_145	145	val_145	2008-04-08	12
+145	val_145	145	val_145	2008-04-09	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	12
+150	val_150	150	val_150	2008-04-09	11
+150	val_150	150	val_150	2008-04-09	12
+150	val_150	150	val_150	2008-04-08	11
+150	val_150	150	val_150	2008-04-08	12
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-08	12
+153	val_153	153	val_153	2008-04-09	11
+153	val_153	153	val_153	2008-04-08	11
+153	val_153	153	val_153	2008-04-08	12
+153	val_153	153	val_153	2008-04-09	12
+155	val_155	155	val_155	2008-04-08	12
+155	val_155	155	val_155	2008-04-08	11
+155	val_155	155	val_155	2008-04-09	12
+155	val_155	155	val_155	2008-04-09	11
+156	val_156	156	val_156	2008-04-08	12
+156	val_156	156	val_156	2008-04-09	12
+156	val_156	156	val_156	2008-04-09	11
+156	val_156	156	val_156	2008-04-08	11
+157	val_157	157	val_157	2008-04-09	11
+157	val_157	157	val_157	2008-04-08	12
+157	val_157	157	val_157	2008-04-08	11
+157	val_157	157	val_157	2008-04-09	12
+158	val_158	158	val_158	2008-04-08	11
+158	val_158	158	val_158	2008-04-09	11
+158	val_158	158	val_158	2008-04-09	12
+158	val_158	158	val_158	2008-04-08	12
+160	val_160	160	val_160	2008-04-09	11
+160	val_160	160	val_160	2008-04-09	12
+160	val_160	160	val_160	2008-04-08	11
+160	val_160	160	val_160	2008-04-08	12
+162	val_162	162	val_162	2008-04-09	11
+162	val_162	162	val_162	2008-04-08	12
+162	val_162	162	val_162	2008-04-08	11
+162	val_162	162	val_162	2008-04-09	12
+163	val_163	163	val_163	2008-04-09	11
+163	val_163	163	val_163	2008-04-09	12
+163	val_163	163	val_163	2008-04-08	11
+163	val_163	163	val_163	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+166	val_166	166	val_166	2008-04-08	12
+166	val_166	166	val_166	2008-04-08	11
+166	val_166	166	val_166	2008-04-09	12
+166	val_166	166	val_166	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+168	val_168	168	val_168	2008-04-08	11
+168	val_168	168	val_168	2008-04-08	12
+168	val_168	168	val_168	2008-04-09	11
+168	val_168	168	val_168	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+170	val_170	170	val_170	2008-04-09	11
+170	val_170	170	val_170	2008-04-09	12
+170	val_170	170	val_170	2008-04-08	11
+170	val_170	170	val_170	2008-04-08	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-09	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-08	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-08	12
+177	val_177	177	val_177	2008-04-08	12
+177	val_177	177	val_177	2008-04-08	11
+177	val_177	177	val_177	2008-04-09	11
+177	val_177	177	val_177	2008-04-09	12
+178	val_178	178	val_178	2008-04-08	12
+178	val_178	178	val_178	2008-04-09	11
+178	val_178	178	val_178	2008-04-08	11
+178	val_178	178	val_178	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	11
+180	val_180	180	val_180	2008-04-09	11
+180	val_180	180	val_180	2008-04-09	12
+180	val_180	180	val_180	2008-04-08	11
+180	val_180	180	val_180	2008-04-08	12
+181	val_181	181	val_181	2008-04-09	11
+181	val_181	181	val_181	2008-04-09	12
+181	val_181	181	val_181	2008-04-08	11
+181	val_181	181	val_181	2008-04-08	12
+183	val_183	183	val_183	2008-04-08	12
+183	val_183	183	val_183	2008-04-08	11
+183	val_183	183	val_183	2008-04-09	12
+183	val_183	183	val_183	2008-04-09	11
+186	val_186	186	val_186	2008-04-08	11
+186	val_186	186	val_186	2008-04-08	12
+186	val_186	186	val_186	2008-04-09	11
+186	val_186	186	val_186	2008-04-09	12
+187	val_187	187	val_187	2008-04-09	11
+187	val_187	187	val_187	2008-04-08	12
+187	val_187	187	val_187	2008-04-08	11
+187	val_187	187	val_187	2008-04-08	12
+187	val_187	187	val_187	2008-04-09	12
+187	val_187	187	val_187	2008-04-08	11
+187	val_187	187	val_187	2008-04-09	12
+187	val_187	187	val_187	2008-04-09	12
+187	val_187	187	val_187	2008-04-08	11
+187	val_187	187	val_187	2008-04-09	11
+187	val_187	187	val_187	2008-04-09	11
+187	val_187	187	val_187	2008-04-08	12
+187	val_187	187	val_187	2008-04-09	11
+187	val_187	187	val_187	2008-04-08	12
+187	val_187	187	val_187	2008-04-08	11
+187	val_187	187	val_187	2008-04-08	12
+187	val_187	187	val_187	2008-04-09	12
+187	val_187	187	v

<TRUNCATED>

[4/5] hive git commit: HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Posted by px...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_3.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_3.q.out b/ql/src/test/results/clientpositive/masking_3.q.out
new file mode 100644
index 0000000..55c9e8f
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_3.q.out
@@ -0,0 +1,7765 @@
+PREHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test_subq
+POSTHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test_subq
+POSTHOOK: Lineage: masking_test_subq.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test_subq.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), value (type: string), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col2 (type: double), _col3 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col2 (type: double), _col3 (type: double)
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col2 (type: double), _col3 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+0	val_0
+0	val_0
+0	val_0
+2	val_2
+4	val_4
+5	val_5
+5	val_5
+5	val_5
+8	val_8
+9	val_9
+10	val_10
+11	val_11
+12	val_12
+12	val_12
+15	val_15
+15	val_15
+17	val_17
+18	val_18
+18	val_18
+19	val_19
+20	val_20
+24	val_24
+24	val_24
+26	val_26
+26	val_26
+27	val_27
+28	val_28
+30	val_30
+33	val_33
+34	val_34
+35	val_35
+35	val_35
+35	val_35
+37	val_37
+37	val_37
+41	val_41
+42	val_42
+42	val_42
+43	val_43
+44	val_44
+47	val_47
+51	val_51
+51	val_51
+53	val_53
+54	val_54
+57	val_57
+58	val_58
+58	val_58
+64	val_64
+65	val_65
+66	val_66
+67	val_67
+67	val_67
+69	val_69
+70	val_70
+70	val_70
+70	val_70
+72	val_72
+72	val_72
+74	val_74
+76	val_76
+76	val_76
+77	val_77
+78	val_78
+80	val_80
+82	val_82
+83	val_83
+83	val_83
+84	val_84
+84	val_84
+85	val_85
+86	val_86
+87	val_87
+90	val_90
+90	val_90
+90	val_90
+92	val_92
+95	val_95
+95	val_95
+96	val_96
+97	val_97
+97	val_97
+98	val_98
+98	val_98
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+200	val_200
+200	val_200
+201	val_201
+202	val_202
+203	val_203
+203	val_203
+205	val_205
+205	val_205
+207	val_207
+207	val_207
+208	val_208
+208	val_208
+208	val_208
+209	val_209
+209	val_209
+213	val_213
+213	val_213
+214	val_214
+216	val_216
+216	val_216
+217	val_217
+217	val_217
+218	val_218
+219	val_219
+219	val_219
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+233	val_233
+233	val_233
+235	val_235
+237	val_237
+237	val_237
+238	val_238
+238	val_238
+239	val_239
+239	val_239
+241	val_241
+242	val_242
+242	val_242
+244	val_244
+247	val_247
+248	val_248
+249	val_249
+252	val_252
+255	val_255
+255	val_255
+256	val_256
+256	val_256
+257	val_257
+258	val_258
+260	val_260
+262	val_262
+263	val_263
+265	val_265
+265	val_265
+266	val_266
+272	val_272
+272	val_272
+273	val_273
+273	val_273
+273	val_273
+274	val_274
+275	val_275
+277	val_277
+277	val_277
+277	val_277
+277	val_277
+278	val_278
+278	val_278
+280	val_280
+280	val_280
+281	val_281
+281	val_281
+282	val_282
+282	val_282
+283	val_283
+284	val_284
+285	val_285
+286	val_286
+287	val_287
+288	val_288
+288	val_288
+289	val_289
+291	val_291
+292	val_292
+296	val_296
+298	val_298
+298	val_298
+298	val_298
+302	val_302
+305	val_305
+306	val_306
+307	val_307
+307	val_307
+308	val_308
+309	val_309
+309	val_309
+310	val_310
+311	val_311
+311	val_311
+311	val_311
+315	val_315
+316	val_316
+316	val_316
+316	val_316
+317	val_317
+317	val_317
+318	val_318
+318	val_318
+318	val_318
+321	val_321
+321	val_321
+322	val_322
+322	val_322
+323	val_323
+325	val_325
+325	val_325
+327	val_327
+327	val_327
+327	val_327
+331	val_331
+331	val_331
+332	val_332
+333	val_333
+333	val_333
+335	val_335
+336	val_336
+338	val_338
+339	val_339
+341	val_341
+342	val_342
+342	val_342
+344	val_344
+344	val_344
+345	val_345
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+351	val_351
+353	val_353
+353	val_353
+356	val_356
+360	val_360
+362	val_362
+364	val_364
+365	val_365
+366	val_366
+367	val_367
+367	val_367
+368	val_368
+369	val_369
+369	val_369
+369	val_369
+373	val_373
+374	val_374
+375	val_375
+377	val_377
+378	val_378
+379	val_379
+382	val_382
+382	val_382
+384	val_384
+384	val_384
+384	val_384
+386	val_386
+389	val_389
+392	val_392
+393	val_393
+394	val_394
+395	val_395
+395	val_395
+396	val_396
+396	val_396
+396	val_396
+397	val_397
+397	val_397
+399	val_399
+399	val_399
+400	val_400
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+402	val_402
+403	val_403
+403	val_403
+403	val_403
+404	val_404
+404	val_404
+406	val_406
+406	val_406
+406	val_406
+406	val_406
+407	val_407
+409	val_409
+409	val_409
+409	val_409
+411	val_411
+413	val_413
+413	val_413
+414	val_414
+414	val_414
+417	val_417
+417	val_417
+417	val_417
+418	val_418
+419	val_419
+421	val_421
+424	val_424
+424	val_424
+427	val_427
+429	val_429
+429	val_429
+430	val_430
+430	val_430
+430	val_430
+431	val_431
+431	val_431
+431	val_431
+432	val_432
+435	val_435
+436	val_436
+437	val_437
+438	val_438
+438	val_438
+438	val_438
+439	val_439
+439	val_439
+443	val_443
+444	val_444
+446	val_446
+448	val_448
+449	val_449
+452	val_452
+453	val_453
+454	val_454
+454	val_454
+454	val_454
+455	val_455
+457	val_457
+458	val_458
+458	val_458
+459	val_459
+459	val_459
+460	val_460
+462	val_462
+462	val_462
+463	val_463
+463	val_463
+466	val_466
+466	val_466
+466	val_466
+467	val_467
+468	val_468
+468	val_468
+468	val_468
+468	val_468
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+470	val_470
+472	val_472
+475	val_475
+477	val_477
+478	val_478
+478	val_478
+479	val_479
+480	val_480
+480	val_480
+480	val_480
+481	val_481
+482	val_482
+483	val_483
+484	val_484
+485	val_485
+487	val_487
+489	val_489
+489	val_489
+489	val_489
+489	val_489
+490	val_490
+491	val_491
+492	val_492
+492	val_492
+493	val_493
+494	val_494
+495	val_495
+496	val_496
+497	val_497
+498	val_498
+498	val_498
+498	val_498
+PREHOOK: query: explain select * from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((key > 0) and UDFToDouble(key) is not null) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), value (type: string), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col2 (type: double), _col3 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col2 (type: double), _col3 (type: double)
+                  Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col2 (type: double), _col3 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2	val_2
+4	val_4
+5	val_5
+5	val_5
+5	val_5
+8	val_8
+9	val_9
+10	val_10
+11	val_11
+12	val_12
+12	val_12
+15	val_15
+15	val_15
+17	val_17
+18	val_18
+18	val_18
+19	val_19
+20	val_20
+24	val_24
+24	val_24
+26	val_26
+26	val_26
+27	val_27
+28	val_28
+30	val_30
+33	val_33
+34	val_34
+35	val_35
+35	val_35
+35	val_35
+37	val_37
+37	val_37
+41	val_41
+42	val_42
+42	val_42
+43	val_43
+44	val_44
+47	val_47
+51	val_51
+51	val_51
+53	val_53
+54	val_54
+57	val_57
+58	val_58
+58	val_58
+64	val_64
+65	val_65
+66	val_66
+67	val_67
+67	val_67
+69	val_69
+70	val_70
+70	val_70
+70	val_70
+72	val_72
+72	val_72
+74	val_74
+76	val_76
+76	val_76
+77	val_77
+78	val_78
+80	val_80
+82	val_82
+83	val_83
+83	val_83
+84	val_84
+84	val_84
+85	val_85
+86	val_86
+87	val_87
+90	val_90
+90	val_90
+90	val_90
+92	val_92
+95	val_95
+95	val_95
+96	val_96
+97	val_97
+97	val_97
+98	val_98
+98	val_98
+100	val_100
+100	val_100
+103	val_103
+103	val_103
+104	val_104
+104	val_104
+105	val_105
+111	val_111
+113	val_113
+113	val_113
+114	val_114
+116	val_116
+118	val_118
+118	val_118
+119	val_119
+119	val_119
+119	val_119
+120	val_120
+120	val_120
+125	val_125
+125	val_125
+126	val_126
+128	val_128
+128	val_128
+128	val_128
+129	val_129
+129	val_129
+131	val_131
+133	val_133
+134	val_134
+134	val_134
+136	val_136
+137	val_137
+137	val_137
+138	val_138
+138	val_138
+138	val_138
+138	val_138
+143	val_143
+145	val_145
+146	val_146
+146	val_146
+149	val_149
+149	val_149
+150	val_150
+152	val_152
+152	val_152
+153	val_153
+155	val_155
+156	val_156
+157	val_157
+158	val_158
+160	val_160
+162	val_162
+163	val_163
+164	val_164
+164	val_164
+165	val_165
+165	val_165
+166	val_166
+167	val_167
+167	val_167
+167	val_167
+168	val_168
+169	val_169
+169	val_169
+169	val_169
+169	val_169
+170	val_170
+172	val_172
+172	val_172
+174	val_174
+174	val_174
+175	val_175
+175	val_175
+176	val_176
+176	val_176
+177	val_177
+178	val_178
+179	val_179
+179	val_179
+180	val_180
+181	val_181
+183	val_183
+186	val_186
+187	val_187
+187	val_187
+187	val_187
+189	val_189
+190	val_190
+191	val_191
+191	val_191
+192	val_192
+193	val_193
+193	val_193
+193	val_193
+194	val_194
+195	val_195
+195	val_195
+196	val_196
+197	val_197
+197	val_197
+199	val_199
+199	val_199
+199	val_199
+200	val_200
+200	val_200
+201	val_201
+202	val_202
+203	val_203
+203	val_203
+205	val_205
+205	val_205
+207	val_207
+207	val_207
+208	val_208
+208	val_208
+208	val_208
+209	val_209
+209	val_209
+213	val_213
+213	val_213
+214	val_214
+216	val_216
+216	val_216
+217	val_217
+217	val_217
+218	val_218
+219	val_219
+219	val_219
+221	val_221
+221	val_221
+222	val_222
+223	val_223
+223	val_223
+224	val_224
+224	val_224
+226	val_226
+228	val_228
+229	val_229
+229	val_229
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+230	val_230
+233	val_233
+233	val_233
+235	val_235
+237	val_237
+237	val_237
+238	val_238
+238	val_238
+239	val_239
+239	val_239
+241	val_241
+242	val_242
+242	val_242
+244	val_244
+247	val_247
+248	val_248
+249	val_249
+252	val_252
+255	val_255
+255	val_255
+256	val_256
+256	val_256
+257	val_257
+258	val_258
+260	val_260
+262	val_262
+263	val_263
+265	val_265
+265	val_265
+266	val_266
+272	val_272
+272	val_272
+273	val_273
+273	val_273
+273	val_273
+274	val_274
+275	val_275
+277	val_277
+277	val_277
+277	val_277
+277	val_277
+278	val_278
+278	val_278
+280	val_280
+280	val_280
+281	val_281
+281	val_281
+282	val_282
+282	val_282
+283	val_283
+284	val_284
+285	val_285
+286	val_286
+287	val_287
+288	val_288
+288	val_288
+289	val_289
+291	val_291
+292	val_292
+296	val_296
+298	val_298
+298	val_298
+298	val_298
+302	val_302
+305	val_305
+306	val_306
+307	val_307
+307	val_307
+308	val_308
+309	val_309
+309	val_309
+310	val_310
+311	val_311
+311	val_311
+311	val_311
+315	val_315
+316	val_316
+316	val_316
+316	val_316
+317	val_317
+317	val_317
+318	val_318
+318	val_318
+318	val_318
+321	val_321
+321	val_321
+322	val_322
+322	val_322
+323	val_323
+325	val_325
+325	val_325
+327	val_327
+327	val_327
+327	val_327
+331	val_331
+331	val_331
+332	val_332
+333	val_333
+333	val_333
+335	val_335
+336	val_336
+338	val_338
+339	val_339
+341	val_341
+342	val_342
+342	val_342
+344	val_344
+344	val_344
+345	val_345
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+348	val_348
+351	val_351
+353	val_353
+353	val_353
+356	val_356
+360	val_360
+362	val_362
+364	val_364
+365	val_365
+366	val_366
+367	val_367
+367	val_367
+368	val_368
+369	val_369
+369	val_369
+369	val_369
+373	val_373
+374	val_374
+375	val_375
+377	val_377
+378	val_378
+379	val_379
+382	val_382
+382	val_382
+384	val_384
+384	val_384
+384	val_384
+386	val_386
+389	val_389
+392	val_392
+393	val_393
+394	val_394
+395	val_395
+395	val_395
+396	val_396
+396	val_396
+396	val_396
+397	val_397
+397	val_397
+399	val_399
+399	val_399
+400	val_400
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+401	val_401
+402	val_402
+403	val_403
+403	val_403
+403	val_403
+404	val_404
+404	val_404
+406	val_406
+406	val_406
+406	val_406
+406	val_406
+407	val_407
+409	val_409
+409	val_409
+409	val_409
+411	val_411
+413	val_413
+413	val_413
+414	val_414
+414	val_414
+417	val_417
+417	val_417
+417	val_417
+418	val_418
+419	val_419
+421	val_421
+424	val_424
+424	val_424
+427	val_427
+429	val_429
+429	val_429
+430	val_430
+430	val_430
+430	val_430
+431	val_431
+431	val_431
+431	val_431
+432	val_432
+435	val_435
+436	val_436
+437	val_437
+438	val_438
+438	val_438
+438	val_438
+439	val_439
+439	val_439
+443	val_443
+444	val_444
+446	val_446
+448	val_448
+449	val_449
+452	val_452
+453	val_453
+454	val_454
+454	val_454
+454	val_454
+455	val_455
+457	val_457
+458	val_458
+458	val_458
+459	val_459
+459	val_459
+460	val_460
+462	val_462
+462	val_462
+463	val_463
+463	val_463
+466	val_466
+466	val_466
+466	val_466
+467	val_467
+468	val_468
+468	val_468
+468	val_468
+468	val_468
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+469	val_469
+470	val_470
+472	val_472
+475	val_475
+477	val_477
+478	val_478
+478	val_478
+479	val_479
+480	val_480
+480	val_480
+480	val_480
+481	val_481
+482	val_482
+483	val_483
+484	val_484
+485	val_485
+487	val_487
+489	val_489
+489	val_489
+489	val_489
+489	val_489
+490	val_490
+491	val_491
+492	val_492
+492	val_492
+493	val_493
+494	val_494
+495	val_495
+496	val_496
+497	val_497
+498	val_498
+498	val_498
+498	val_498
+PREHOOK: query: explain select key from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((key > 0) and UDFToDouble(key) is not null) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col1 (type: double), _col2 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: double), _col2 (type: double)
+                  Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col1 (type: double), _col2 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select key from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select key from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2
+4
+5
+5
+5
+8
+9
+10
+11
+12
+12
+15
+15
+17
+18
+18
+19
+20
+24
+24
+26
+26
+27
+28
+30
+33
+34
+35
+35
+35
+37
+37
+41
+42
+42
+43
+44
+47
+51
+51
+53
+54
+57
+58
+58
+64
+65
+66
+67
+67
+69
+70
+70
+70
+72
+72
+74
+76
+76
+77
+78
+80
+82
+83
+83
+84
+84
+85
+86
+87
+90
+90
+90
+92
+95
+95
+96
+97
+97
+98
+98
+100
+100
+103
+103
+104
+104
+105
+111
+113
+113
+114
+116
+118
+118
+119
+119
+119
+120
+120
+125
+125
+126
+128
+128
+128
+129
+129
+131
+133
+134
+134
+136
+137
+137
+138
+138
+138
+138
+143
+145
+146
+146
+149
+149
+150
+152
+152
+153
+155
+156
+157
+158
+160
+162
+163
+164
+164
+165
+165
+166
+167
+167
+167
+168
+169
+169
+169
+169
+170
+172
+172
+174
+174
+175
+175
+176
+176
+177
+178
+179
+179
+180
+181
+183
+186
+187
+187
+187
+189
+190
+191
+191
+192
+193
+193
+193
+194
+195
+195
+196
+197
+197
+199
+199
+199
+200
+200
+201
+202
+203
+203
+205
+205
+207
+207
+208
+208
+208
+209
+209
+213
+213
+214
+216
+216
+217
+217
+218
+219
+219
+221
+221
+222
+223
+223
+224
+224
+226
+228
+229
+229
+230
+230
+230
+230
+230
+233
+233
+235
+237
+237
+238
+238
+239
+239
+241
+242
+242
+244
+247
+248
+249
+252
+255
+255
+256
+256
+257
+258
+260
+262
+263
+265
+265
+266
+272
+272
+273
+273
+273
+274
+275
+277
+277
+277
+277
+278
+278
+280
+280
+281
+281
+282
+282
+283
+284
+285
+286
+287
+288
+288
+289
+291
+292
+296
+298
+298
+298
+302
+305
+306
+307
+307
+308
+309
+309
+310
+311
+311
+311
+315
+316
+316
+316
+317
+317
+318
+318
+318
+321
+321
+322
+322
+323
+325
+325
+327
+327
+327
+331
+331
+332
+333
+333
+335
+336
+338
+339
+341
+342
+342
+344
+344
+345
+348
+348
+348
+348
+348
+351
+353
+353
+356
+360
+362
+364
+365
+366
+367
+367
+368
+369
+369
+369
+373
+374
+375
+377
+378
+379
+382
+382
+384
+384
+384
+386
+389
+392
+393
+394
+395
+395
+396
+396
+396
+397
+397
+399
+399
+400
+401
+401
+401
+401
+401
+402
+403
+403
+403
+404
+404
+406
+406
+406
+406
+407
+409
+409
+409
+411
+413
+413
+414
+414
+417
+417
+417
+418
+419
+421
+424
+424
+427
+429
+429
+430
+430
+430
+431
+431
+431
+432
+435
+436
+437
+438
+438
+438
+439
+439
+443
+444
+446
+448
+449
+452
+453
+454
+454
+454
+455
+457
+458
+458
+459
+459
+460
+462
+462
+463
+463
+466
+466
+466
+467
+468
+468
+468
+468
+469
+469
+469
+469
+469
+470
+472
+475
+477
+478
+478
+479
+480
+480
+480
+481
+482
+483
+484
+485
+487
+489
+489
+489
+489
+490
+491
+492
+492
+493
+494
+495
+496
+497
+498
+498
+498
+PREHOOK: query: explain select value from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select value from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((key > 0) and UDFToDouble(key) is not null) (type: boolean)
+              Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: value (type: string), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2
+                Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col1 (type: double), _col2 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col1 (type: double), _col2 (type: double)
+                  Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col1 (type: double), _col2 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select value from masking_test_subq where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select value from masking_test_subq where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+val_2
+val_4
+val_5
+val_5
+val_5
+val_8
+val_9
+val_10
+val_11
+val_12
+val_12
+val_15
+val_15
+val_17
+val_18
+val_18
+val_19
+val_20
+val_24
+val_24
+val_26
+val_26
+val_27
+val_28
+val_30
+val_33
+val_34
+val_35
+val_35
+val_35
+val_37
+val_37
+val_41
+val_42
+val_42
+val_43
+val_44
+val_47
+val_51
+val_51
+val_53
+val_54
+val_57
+val_58
+val_58
+val_64
+val_65
+val_66
+val_67
+val_67
+val_69
+val_70
+val_70
+val_70
+val_72
+val_72
+val_74
+val_76
+val_76
+val_77
+val_78
+val_80
+val_82
+val_83
+val_83
+val_84
+val_84
+val_85
+val_86
+val_87
+val_90
+val_90
+val_90
+val_92
+val_95
+val_95
+val_96
+val_97
+val_97
+val_98
+val_98
+val_100
+val_100
+val_103
+val_103
+val_104
+val_104
+val_105
+val_111
+val_113
+val_113
+val_114
+val_116
+val_118
+val_118
+val_119
+val_119
+val_119
+val_120
+val_120
+val_125
+val_125
+val_126
+val_128
+val_128
+val_128
+val_129
+val_129
+val_131
+val_133
+val_134
+val_134
+val_136
+val_137
+val_137
+val_138
+val_138
+val_138
+val_138
+val_143
+val_145
+val_146
+val_146
+val_149
+val_149
+val_150
+val_152
+val_152
+val_153
+val_155
+val_156
+val_157
+val_158
+val_160
+val_162
+val_163
+val_164
+val_164
+val_165
+val_165
+val_166
+val_167
+val_167
+val_167
+val_168
+val_169
+val_169
+val_169
+val_169
+val_170
+val_172
+val_172
+val_174
+val_174
+val_175
+val_175
+val_176
+val_176
+val_177
+val_178
+val_179
+val_179
+val_180
+val_181
+val_183
+val_186
+val_187
+val_187
+val_187
+val_189
+val_190
+val_191
+val_191
+val_192
+val_193
+val_193
+val_193
+val_194
+val_195
+val_195
+val_196
+val_197
+val_197
+val_199
+val_199
+val_199
+val_200
+val_200
+val_201
+val_202
+val_203
+val_203
+val_205
+val_205
+val_207
+val_207
+val_208
+val_208
+val_208
+val_209
+val_209
+val_213
+val_213
+val_214
+val_216
+val_216
+val_217
+val_217
+val_218
+val_219
+val_219
+val_221
+val_221
+val_222
+val_223
+val_223
+val_224
+val_224
+val_226
+val_228
+val_229
+val_229
+val_230
+val_230
+val_230
+val_230
+val_230
+val_233
+val_233
+val_235
+val_237
+val_237
+val_238
+val_238
+val_239
+val_239
+val_241
+val_242
+val_242
+val_244
+val_247
+val_248
+val_249
+val_252
+val_255
+val_255
+val_256
+val_256
+val_257
+val_258
+val_260
+val_262
+val_263
+val_265
+val_265
+val_266
+val_272
+val_272
+val_273
+val_273
+val_273
+val_274
+val_275
+val_277
+val_277
+val_277
+val_277
+val_278
+val_278
+val_280
+val_280
+val_281
+val_281
+val_282
+val_282
+val_283
+val_284
+val_285
+val_286
+val_287
+val_288
+val_288
+val_289
+val_291
+val_292
+val_296
+val_298
+val_298
+val_298
+val_302
+val_305
+val_306
+val_307
+val_307
+val_308
+val_309
+val_309
+val_310
+val_311
+val_311
+val_311
+val_315
+val_316
+val_316
+val_316
+val_317
+val_317
+val_318
+val_318
+val_318
+val_321
+val_321
+val_322
+val_322
+val_323
+val_325
+val_325
+val_327
+val_327
+val_327
+val_331
+val_331
+val_332
+val_333
+val_333
+val_335
+val_336
+val_338
+val_339
+val_341
+val_342
+val_342
+val_344
+val_344
+val_345
+val_348
+val_348
+val_348
+val_348
+val_348
+val_351
+val_353
+val_353
+val_356
+val_360
+val_362
+val_364
+val_365
+val_366
+val_367
+val_367
+val_368
+val_369
+val_369
+val_369
+val_373
+val_374
+val_375
+val_377
+val_378
+val_379
+val_382
+val_382
+val_384
+val_384
+val_384
+val_386
+val_389
+val_392
+val_393
+val_394
+val_395
+val_395
+val_396
+val_396
+val_396
+val_397
+val_397
+val_399
+val_399
+val_400
+val_401
+val_401
+val_401
+val_401
+val_401
+val_402
+val_403
+val_403
+val_403
+val_404
+val_404
+val_406
+val_406
+val_406
+val_406
+val_407
+val_409
+val_409
+val_409
+val_411
+val_413
+val_413
+val_414
+val_414
+val_417
+val_417
+val_417
+val_418
+val_419
+val_421
+val_424
+val_424
+val_427
+val_429
+val_429
+val_430
+val_430
+val_430
+val_431
+val_431
+val_431
+val_432
+val_435
+val_436
+val_437
+val_438
+val_438
+val_438
+val_439
+val_439
+val_443
+val_444
+val_446
+val_448
+val_449
+val_452
+val_453
+val_454
+val_454
+val_454
+val_455
+val_457
+val_458
+val_458
+val_459
+val_459
+val_460
+val_462
+val_462
+val_463
+val_463
+val_466
+val_466
+val_466
+val_467
+val_468
+val_468
+val_468
+val_468
+val_469
+val_469
+val_469
+val_469
+val_469
+val_470
+val_472
+val_475
+val_477
+val_478
+val_478
+val_479
+val_480
+val_480
+val_480
+val_481
+val_482
+val_483
+val_484
+val_485
+val_487
+val_489
+val_489
+val_489
+val_489
+val_490
+val_491
+val_492
+val_492
+val_493
+val_494
+val_495
+val_496
+val_497
+val_498
+val_498
+val_498
+PREHOOK: query: explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-2 depends on stages: Stage-1
+  Stage-0 depends on stages: Stage-2
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (UDFToDouble(key) is not null and key is not null) (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), value (type: string), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col2 (type: double), _col3 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col2 (type: double), _col3 (type: double)
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col2 (type: double), _col3 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazybinary.LazyBinarySerDe
+
+  Stage: Stage-2
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            Reduce Output Operator
+              key expressions: UDFToDouble(_col0) (type: double)
+              sort order: +
+              Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+              Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+              value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: srcpart
+            Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: key is not null (type: boolean)
+              Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), value (type: string), ds (type: string), hr (type: string)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col0) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                  Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(_col0) (type: double)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test_subq
+PREHOOK: Input: default@src
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test_subq
+POSTHOOK: Input: default@src
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-08	11
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-08	12
+0	val_0	0	val_0	2008-04-09	11
+0	val_0	0	val_0	2008-04-09	12
+2	val_2	2	val_2	2008-04-09	11
+2	val_2	2	val_2	2008-04-08	11
+2	val_2	2	val_2	2008-04-09	12
+2	val_2	2	val_2	2008-04-08	12
+4	val_4	4	val_4	2008-04-08	12
+4	val_4	4	val_4	2008-04-09	12
+4	val_4	4	val_4	2008-04-08	11
+4	val_4	4	val_4	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-08	11
+5	val_5	5	val_5	2008-04-09	12
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-09	11
+5	val_5	5	val_5	2008-04-08	12
+5	val_5	5	val_5	2008-04-09	12
+8	val_8	8	val_8	2008-04-08	11
+8	val_8	8	val_8	2008-04-09	11
+8	val_8	8	val_8	2008-04-08	12
+8	val_8	8	val_8	2008-04-09	12
+9	val_9	9	val_9	2008-04-08	12
+9	val_9	9	val_9	2008-04-09	12
+9	val_9	9	val_9	2008-04-09	11
+9	val_9	9	val_9	2008-04-08	11
+10	val_10	10	val_10	2008-04-09	11
+10	val_10	10	val_10	2008-04-09	12
+10	val_10	10	val_10	2008-04-08	12
+10	val_10	10	val_10	2008-04-08	11
+11	val_11	11	val_11	2008-04-09	12
+11	val_11	11	val_11	2008-04-09	11
+11	val_11	11	val_11	2008-04-08	12
+11	val_11	11	val_11	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-09	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-08	11
+12	val_12	12	val_12	2008-04-08	12
+12	val_12	12	val_12	2008-04-09	11
+12	val_12	12	val_12	2008-04-09	12
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	12
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	12
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	11
+15	val_15	15	val_15	2008-04-09	11
+15	val_15	15	val_15	2008-04-08	12
+17	val_17	17	val_17	2008-04-09	11
+17	val_17	17	val_17	2008-04-09	12
+17	val_17	17	val_17	2008-04-08	12
+17	val_17	17	val_17	2008-04-08	11
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	12
+18	val_18	18	val_18	2008-04-08	11
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	12
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-09	11
+18	val_18	18	val_18	2008-04-08	11
+19	val_19	19	val_19	2008-04-09	11
+19	val_19	19	val_19	2008-04-09	12
+19	val_19	19	val_19	2008-04-08	11
+19	val_19	19	val_19	2008-04-08	12
+20	val_20	20	val_20	2008-04-08	11
+20	val_20	20	val_20	2008-04-09	11
+20	val_20	20	val_20	2008-04-08	12
+20	val_20	20	val_20	2008-04-09	12
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-08	11
+24	val_24	24	val_24	2008-04-09	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-08	12
+24	val_24	24	val_24	2008-04-09	11
+24	val_24	24	val_24	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-08	11
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-09	12
+26	val_26	26	val_26	2008-04-09	11
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	12
+26	val_26	26	val_26	2008-04-08	11
+27	val_27	27	val_27	2008-04-09	12
+27	val_27	27	val_27	2008-04-09	11
+27	val_27	27	val_27	2008-04-08	12
+27	val_27	27	val_27	2008-04-08	11
+28	val_28	28	val_28	2008-04-08	12
+28	val_28	28	val_28	2008-04-09	11
+28	val_28	28	val_28	2008-04-09	12
+28	val_28	28	val_28	2008-04-08	11
+30	val_30	30	val_30	2008-04-09	12
+30	val_30	30	val_30	2008-04-09	11
+30	val_30	30	val_30	2008-04-08	11
+30	val_30	30	val_30	2008-04-08	12
+33	val_33	33	val_33	2008-04-08	11
+33	val_33	33	val_33	2008-04-08	12
+33	val_33	33	val_33	2008-04-09	11
+33	val_33	33	val_33	2008-04-09	12
+34	val_34	34	val_34	2008-04-09	11
+34	val_34	34	val_34	2008-04-09	12
+34	val_34	34	val_34	2008-04-08	11
+34	val_34	34	val_34	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-08	12
+35	val_35	35	val_35	2008-04-09	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-08	11
+35	val_35	35	val_35	2008-04-09	12
+35	val_35	35	val_35	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	11
+37	val_37	37	val_37	2008-04-09	12
+37	val_37	37	val_37	2008-04-08	12
+37	val_37	37	val_37	2008-04-08	11
+41	val_41	41	val_41	2008-04-08	11
+41	val_41	41	val_41	2008-04-09	11
+41	val_41	41	val_41	2008-04-09	12
+41	val_41	41	val_41	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-08	12
+42	val_42	42	val_42	2008-04-09	12
+42	val_42	42	val_42	2008-04-08	11
+42	val_42	42	val_42	2008-04-09	11
+42	val_42	42	val_42	2008-04-08	11
+43	val_43	43	val_43	2008-04-09	12
+43	val_43	43	val_43	2008-04-08	12
+43	val_43	43	val_43	2008-04-09	11
+43	val_43	43	val_43	2008-04-08	11
+44	val_44	44	val_44	2008-04-09	11
+44	val_44	44	val_44	2008-04-08	11
+44	val_44	44	val_44	2008-04-09	12
+44	val_44	44	val_44	2008-04-08	12
+47	val_47	47	val_47	2008-04-08	11
+47	val_47	47	val_47	2008-04-08	12
+47	val_47	47	val_47	2008-04-09	12
+47	val_47	47	val_47	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-08	11
+51	val_51	51	val_51	2008-04-09	11
+51	val_51	51	val_51	2008-04-09	12
+51	val_51	51	val_51	2008-04-08	12
+51	val_51	51	val_51	2008-04-09	11
+53	val_53	53	val_53	2008-04-08	11
+53	val_53	53	val_53	2008-04-09	11
+53	val_53	53	val_53	2008-04-09	12
+53	val_53	53	val_53	2008-04-08	12
+54	val_54	54	val_54	2008-04-08	11
+54	val_54	54	val_54	2008-04-09	12
+54	val_54	54	val_54	2008-04-09	11
+54	val_54	54	val_54	2008-04-08	12
+57	val_57	57	val_57	2008-04-08	12
+57	val_57	57	val_57	2008-04-08	11
+57	val_57	57	val_57	2008-04-09	11
+57	val_57	57	val_57	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	11
+58	val_58	58	val_58	2008-04-08	12
+58	val_58	58	val_58	2008-04-09	11
+58	val_58	58	val_58	2008-04-09	12
+58	val_58	58	val_58	2008-04-08	12
+64	val_64	64	val_64	2008-04-09	12
+64	val_64	64	val_64	2008-04-08	11
+64	val_64	64	val_64	2008-04-08	12
+64	val_64	64	val_64	2008-04-09	11
+65	val_65	65	val_65	2008-04-09	11
+65	val_65	65	val_65	2008-04-09	12
+65	val_65	65	val_65	2008-04-08	11
+65	val_65	65	val_65	2008-04-08	12
+66	val_66	66	val_66	2008-04-09	12
+66	val_66	66	val_66	2008-04-09	11
+66	val_66	66	val_66	2008-04-08	11
+66	val_66	66	val_66	2008-04-08	12
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-09	12
+67	val_67	67	val_67	2008-04-09	11
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+67	val_67	67	val_67	2008-04-08	11
+67	val_67	67	val_67	2008-04-08	12
+69	val_69	69	val_69	2008-04-09	12
+69	val_69	69	val_69	2008-04-08	11
+69	val_69	69	val_69	2008-04-08	12
+69	val_69	69	val_69	2008-04-09	11
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	12
+70	val_70	70	val_70	2008-04-09	11
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+70	val_70	70	val_70	2008-04-08	11
+70	val_70	70	val_70	2008-04-09	12
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-08	12
+72	val_72	72	val_72	2008-04-09	11
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	12
+72	val_72	72	val_72	2008-04-08	11
+72	val_72	72	val_72	2008-04-09	11
+74	val_74	74	val_74	2008-04-09	11
+74	val_74	74	val_74	2008-04-08	12
+74	val_74	74	val_74	2008-04-09	12
+74	val_74	74	val_74	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	12
+76	val_76	76	val_76	2008-04-08	11
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	12
+76	val_76	76	val_76	2008-04-09	11
+76	val_76	76	val_76	2008-04-09	11
+77	val_77	77	val_77	2008-04-08	12
+77	val_77	77	val_77	2008-04-09	12
+77	val_77	77	val_77	2008-04-09	11
+77	val_77	77	val_77	2008-04-08	11
+78	val_78	78	val_78	2008-04-09	11
+78	val_78	78	val_78	2008-04-08	11
+78	val_78	78	val_78	2008-04-09	12
+78	val_78	78	val_78	2008-04-08	12
+80	val_80	80	val_80	2008-04-09	11
+80	val_80	80	val_80	2008-04-08	11
+80	val_80	80	val_80	2008-04-09	12
+80	val_80	80	val_80	2008-04-08	12
+82	val_82	82	val_82	2008-04-08	12
+82	val_82	82	val_82	2008-04-09	11
+82	val_82	82	val_82	2008-04-08	11
+82	val_82	82	val_82	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-09	12
+83	val_83	83	val_83	2008-04-08	11
+83	val_83	83	val_83	2008-04-08	12
+83	val_83	83	val_83	2008-04-09	11
+83	val_83	83	val_83	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-08	11
+84	val_84	84	val_84	2008-04-09	12
+84	val_84	84	val_84	2008-04-08	12
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-09	11
+84	val_84	84	val_84	2008-04-08	12
+85	val_85	85	val_85	2008-04-09	12
+85	val_85	85	val_85	2008-04-09	11
+85	val_85	85	val_85	2008-04-08	11
+85	val_85	85	val_85	2008-04-08	12
+86	val_86	86	val_86	2008-04-08	12
+86	val_86	86	val_86	2008-04-09	11
+86	val_86	86	val_86	2008-04-08	11
+86	val_86	86	val_86	2008-04-09	12
+87	val_87	87	val_87	2008-04-09	12
+87	val_87	87	val_87	2008-04-08	11
+87	val_87	87	val_87	2008-04-08	12
+87	val_87	87	val_87	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-09	11
+90	val_90	90	val_90	2008-04-09	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	12
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-08	11
+90	val_90	90	val_90	2008-04-09	11
+92	val_92	92	val_92	2008-04-09	11
+92	val_92	92	val_92	2008-04-09	12
+92	val_92	92	val_92	2008-04-08	12
+92	val_92	92	val_92	2008-04-08	11
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-08	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-08	12
+95	val_95	95	val_95	2008-04-09	11
+95	val_95	95	val_95	2008-04-09	12
+95	val_95	95	val_95	2008-04-08	11
+96	val_96	96	val_96	2008-04-09	12
+96	val_96	96	val_96	2008-04-08	11
+96	val_96	96	val_96	2008-04-08	12
+96	val_96	96	val_96	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	12
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-09	11
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	12
+97	val_97	97	val_97	2008-04-08	11
+97	val_97	97	val_97	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-09	11
+98	val_98	98	val_98	2008-04-08	12
+98	val_98	98	val_98	2008-04-09	12
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-09	11
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-08	12
+100	val_100	100	val_100	2008-04-09	12
+100	val_100	100	val_100	2008-04-08	11
+100	val_100	100	val_100	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	12
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	11
+103	val_103	103	val_103	2008-04-09	11
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-08	12
+103	val_103	103	val_103	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-09	11
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-08	11
+104	val_104	104	val_104	2008-04-09	12
+104	val_104	104	val_104	2008-04-08	12
+104	val_104	104	val_104	2008-04-09	11
+105	val_105	105	val_105	2008-04-09	12
+105	val_105	105	val_105	2008-04-09	11
+105	val_105	105	val_105	2008-04-08	11
+105	val_105	105	val_105	2008-04-08	12
+111	val_111	111	val_111	2008-04-08	12
+111	val_111	111	val_111	2008-04-08	11
+111	val_111	111	val_111	2008-04-09	12
+111	val_111	111	val_111	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-09	12
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-08	12
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-09	11
+113	val_113	113	val_113	2008-04-08	11
+113	val_113	113	val_113	2008-04-09	12
+114	val_114	114	val_114	2008-04-09	11
+114	val_114	114	val_114	2008-04-09	12
+114	val_114	114	val_114	2008-04-08	12
+114	val_114	114	val_114	2008-04-08	11
+116	val_116	116	val_116	2008-04-08	12
+116	val_116	116	val_116	2008-04-09	11
+116	val_116	116	val_116	2008-04-08	11
+116	val_116	116	val_116	2008-04-09	12
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-09	11
+118	val_118	118	val_118	2008-04-09	12
+118	val_118	118	val_118	2008-04-08	11
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-08	12
+118	val_118	118	val_118	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	11
+119	val_119	119	val_119	2008-04-09	12
+119	val_119	119	val_119	2008-04-08	11
+119	val_119	119	val_119	2008-04-09	12
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-09	11
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-09	12
+120	val_120	120	val_120	2008-04-08	12
+120	val_120	120	val_120	2008-04-08	11
+120	val_120	120	val_120	2008-04-09	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	11
+125	val_125	125	val_125	2008-04-09	12
+125	val_125	125	val_125	2008-04-09	11
+125	val_125	125	val_125	2008-04-08	12
+125	val_125	125	val_125	2008-04-08	12
+126	val_126	126	val_126	2008-04-08	11
+126	val_126	126	val_126	2008-04-08	12
+126	val_126	126	val_126	2008-04-09	12
+126	val_126	126	val_126	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	11
+128	val_128	128	val_128	2008-04-09	11
+128	val_128	128	val_128	2008-04-09	12
+128	val_128	128	val_128	2008-04-08	12
+128	val_128	128	val_128	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	12
+129	val_129	129	val_129	2008-04-08	12
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+129	val_129	129	val_129	2008-04-09	11
+129	val_129	129	val_129	2008-04-08	11
+131	val_131	131	val_131	2008-04-08	12
+131	val_131	131	val_131	2008-04-09	12
+131	val_131	131	val_131	2008-04-09	11
+131	val_131	131	val_131	2008-04-08	11
+133	val_133	133	val_133	2008-04-08	11
+133	val_133	133	val_133	2008-04-08	12
+133	val_133	133	val_133	2008-04-09	11
+133	val_133	133	val_133	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-08	11
+134	val_134	134	val_134	2008-04-09	11
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	12
+134	val_134	134	val_134	2008-04-09	12
+134	val_134	134	val_134	2008-04-08	11
+136	val_136	136	val_136	2008-04-09	12
+136	val_136	136	val_136	2008-04-08	12
+136	val_136	136	val_136	2008-04-08	11
+136	val_136	136	val_136	2008-04-09	11
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	11
+137	val_137	137	val_137	2008-04-09	12
+137	val_137	137	val_137	2008-04-08	12
+137	val_137	137	val_137	2008-04-08	11
+137	val_137	137	val_137	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-09	12
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	12
+138	val_138	138	val_138	2008-04-09	11
+138	val_138	138	val_138	2008-04-08	11
+138	val_138	138	val_138	2008-04-08	12
+143	val_143	143	val_143	2008-04-09	12
+143	val_143	143	val_143	2008-04-08	11
+143	val_143	143	val_143	2008-04-09	11
+143	val_143	143	val_143	2008-04-08	12
+145	val_145	145	val_145	2008-04-09	11
+145	val_145	145	val_145	2008-04-08	11
+145	val_145	145	val_145	2008-04-08	12
+145	val_145	145	val_145	2008-04-09	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+146	val_146	146	val_146	2008-04-08	11
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	12
+146	val_146	146	val_146	2008-04-09	11
+146	val_146	146	val_146	2008-04-08	12
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-08	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	12
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-09	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	11
+149	val_149	149	val_149	2008-04-08	12
+150	val_150	150	val_150	2008-04-09	11
+150	val_150	150	val_150	2008-04-09	12
+150	val_150	150	val_150	2008-04-08	11
+150	val_150	150	val_150	2008-04-08	12
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-08	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-08	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-09	11
+152	val_152	152	val_152	2008-04-09	12
+152	val_152	152	val_152	2008-04-08	12
+153	val_153	153	val_153	2008-04-09	11
+153	val_153	153	val_153	2008-04-08	11
+153	val_153	153	val_153	2008-04-08	12
+153	val_153	153	val_153	2008-04-09	12
+155	val_155	155	val_155	2008-04-08	12
+155	val_155	155	val_155	2008-04-08	11
+155	val_155	155	val_155	2008-04-09	12
+155	val_155	155	val_155	2008-04-09	11
+156	val_156	156	val_156	2008-04-08	12
+156	val_156	156	val_156	2008-04-09	12
+156	val_156	156	val_156	2008-04-09	11
+156	val_156	156	val_156	2008-04-08	11
+157	val_157	157	val_157	2008-04-09	11
+157	val_157	157	val_157	2008-04-08	12
+157	val_157	157	val_157	2008-04-08	11
+157	val_157	157	val_157	2008-04-09	12
+158	val_158	158	val_158	2008-04-08	11
+158	val_158	158	val_158	2008-04-09	11
+158	val_158	158	val_158	2008-04-09	12
+158	val_158	158	val_158	2008-04-08	12
+160	val_160	160	val_160	2008-04-09	11
+160	val_160	160	val_160	2008-04-09	12
+160	val_160	160	val_160	2008-04-08	11
+160	val_160	160	val_160	2008-04-08	12
+162	val_162	162	val_162	2008-04-09	11
+162	val_162	162	val_162	2008-04-08	12
+162	val_162	162	val_162	2008-04-08	11
+162	val_162	162	val_162	2008-04-09	12
+163	val_163	163	val_163	2008-04-09	11
+163	val_163	163	val_163	2008-04-09	12
+163	val_163	163	val_163	2008-04-08	11
+163	val_163	163	val_163	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-08	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-09	11
+164	val_164	164	val_164	2008-04-09	12
+164	val_164	164	val_164	2008-04-08	12
+164	val_164	164	val_164	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-09	12
+165	val_165	165	val_165	2008-04-08	12
+165	val_165	165	val_165	2008-04-08	11
+165	val_165	165	val_165	2008-04-09	11
+166	val_166	166	val_166	2008-04-08	12
+166	val_166	166	val_166	2008-04-08	11
+166	val_166	166	val_166	2008-04-09	12
+166	val_166	166	val_166	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-08	12
+167	val_167	167	val_167	2008-04-09	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	11
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-09	12
+167	val_167	167	val_167	2008-04-08	12
+168	val_168	168	val_168	2008-04-08	11
+168	val_168	168	val_168	2008-04-08	12
+168	val_168	168	val_168	2008-04-09	11
+168	val_168	168	val_168	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-08	12
+169	val_169	169	val_169	2008-04-09	11
+169	val_169	169	val_169	2008-04-09	12
+169	val_169	169	val_169	2008-04-08	11
+169	val_169	169	val_169	2008-04-08	11
+170	val_170	170	val_170	2008-04-09	11
+170	val_170	170	val_170	2008-04-09	12
+170	val_170	170	val_170	2008-04-08	11
+170	val_170	170	val_170	2008-04-08	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-09	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-08	11
+172	val_172	172	val_172	2008-04-08	12
+172	val_172	172	val_172	2008-04-09	12
+172	val_172	172	val_172	2008-04-09	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-09	12
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	11
+174	val_174	174	val_174	2008-04-08	12
+174	val_174	174	val_174	2008-04-09	11
+174	val_174	174	val_174	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	12
+175	val_175	175	val_175	2008-04-08	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-09	11
+175	val_175	175	val_175	2008-04-08	12
+175	val_175	175	val_175	2008-04-08	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	12
+176	val_176	176	val_176	2008-04-09	12
+176	val_176	176	val_176	2008-04-08	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-09	11
+176	val_176	176	val_176	2008-04-08	12
+177	val_177	177	val_177	2008-04-08	12
+177	val_177	177	val_177	2008-04-08	11
+177	val_177	177	val_177	2008-04-09	11
+177	val_177	177	val_177	2008-04-09	12
+178	val_178	178	val_178	2008-04-08	12
+178	val_178	178	val_178	2008-04-09	11
+178	val_178	178	val_178	2008-04-08	11
+178	val_178	178	val_178	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-08	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-09	12
+179	val_179	179	val_179	2008-04-09	11
+179	val_179	179	val_179	2008-04-08	11
+179	val_179	179	val_179	2008-04-08	11
+180	val_180	180	val_180	2008-04-09	11
+180	val_180	180	val_180	2008-04-09	12
+180	val_180	180	val_180	2008-04-08	11
+180	val_180	180	val_180	2008-04-08	12
+181	val_1

<TRUNCATED>

[5/5] hive git commit: HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Posted by px...@apache.org.
HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)


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

Branch: refs/heads/master
Commit: a0a53713aa982a39f6ccb26c752473a0cf37286d
Parents: c0c08a3
Author: Pengcheng Xiong <px...@apache.org>
Authored: Sun Mar 20 10:50:47 2016 -0700
Committer: Pengcheng Xiong <px...@apache.org>
Committed: Sun Mar 20 10:50:47 2016 -0700

----------------------------------------------------------------------
 ...SQLStdHiveAuthorizationValidatorForTest.java |   29 +
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java  |  161 +
 .../apache/hadoop/hive/ql/parse/TableMask.java  |  127 +
 .../plugin/HiveAuthorizationValidator.java      |   11 +
 .../authorization/plugin/HiveAuthorizer.java    |   69 +
 .../plugin/HiveAuthorizerImpl.java              |   23 +
 .../authorization/plugin/HiveV1Authorizer.java  |   25 +
 .../sqlstd/DummyHiveAuthorizationValidator.java |   23 +
 .../SQLStdHiveAuthorizationValidator.java       |   22 +
 ql/src/test/queries/clientpositive/masking_1.q  |   27 +
 ql/src/test/queries/clientpositive/masking_2.q  |   17 +
 ql/src/test/queries/clientpositive/masking_3.q  |   27 +
 ql/src/test/queries/clientpositive/masking_4.q  |   30 +
 ql/src/test/queries/clientpositive/masking_5.q  |   22 +
 .../clientpositive/masking_disablecbo_1.q       |   28 +
 .../clientpositive/masking_disablecbo_2.q       |   18 +
 .../clientpositive/masking_disablecbo_3.q       |   28 +
 .../clientpositive/masking_disablecbo_4.q       |   31 +
 .../test/results/clientpositive/masking_1.q.out |  466 ++
 .../test/results/clientpositive/masking_2.q.out |  321 +
 .../test/results/clientpositive/masking_3.q.out | 7765 ++++++++++++++++++
 .../test/results/clientpositive/masking_4.q.out |  233 +
 .../test/results/clientpositive/masking_5.q.out |  189 +
 .../clientpositive/masking_disablecbo_1.q.out   |  462 ++
 .../clientpositive/masking_disablecbo_2.q.out   |  355 +
 .../clientpositive/masking_disablecbo_3.q.out   | 7737 +++++++++++++++++
 .../clientpositive/masking_disablecbo_4.q.out   |  229 +
 27 files changed, 18475 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidatorForTest.java
----------------------------------------------------------------------
diff --git a/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidatorForTest.java b/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidatorForTest.java
index fd39c67..c0387e2 100644
--- a/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidatorForTest.java
+++ b/itests/util/src/main/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidatorForTest.java
@@ -25,6 +25,7 @@ import javax.annotation.Nullable;
 
 import org.apache.hadoop.classification.InterfaceAudience.Private;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthzContext;
@@ -104,4 +105,32 @@ public class SQLStdHiveAuthorizationValidatorForTest extends SQLStdHiveAuthoriza
 
   }
 
+  public String getRowFilterExpression(String database, String table) throws SemanticException {
+    if (table.equals("masking_test")) {
+      return "key % 2 = 0 and key < 10";
+    } else if (table.equals("masking_test_subq")) {
+      return "key in (select key from src where src.key = masking_test_subq.key)";
+    }
+    return null;
+  }
+
+  public boolean needTransform() {
+    // In the future, we can add checking for username, groupname, etc based on
+    // HiveAuthenticationProvider. For example,
+    // "hive_test_user".equals(context.getUserName());
+    return true;
+  }
+
+  public boolean needTransform(String database, String table) {
+    return "masking_test".equals(table) || "masking_test_subq".equals(table);
+  }
+
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException {
+    if (table.equals("masking_test") && columnName.equals("value")) {
+      return "reverse(value)";
+    }
+    return columnName;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 0845bc9..58887d2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -32,8 +32,10 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Queue;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeSet;
@@ -67,6 +69,7 @@ import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.Order;
 import org.apache.hadoop.hive.ql.CompilationOpContext;
+import org.apache.hadoop.hive.ql.Context;
 import org.apache.hadoop.hive.ql.ErrorMsg;
 import org.apache.hadoop.hive.ql.QueryProperties;
 import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator;
@@ -311,6 +314,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
    */
   boolean rootTasksResolved;
 
+  private final TableMask tableMask;
+
   CreateTableDesc tableDesc;
 
   /** Not thread-safe. */
@@ -318,6 +323,14 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
 
   protected AnalyzeRewriteContext analyzeRewrite;
 
+  // A mapping from a tableName to a table object in metastore.
+  Map<String, Table> tableNameToMetaDataTableObject;
+
+  // The tokens we should ignore when we are trying to do table masking.
+  private final Set<Integer> ignoredTokens = Sets.newHashSet(HiveParser.TOK_GROUPBY,
+      HiveParser.TOK_ORDERBY, HiveParser.TOK_WINDOWSPEC, HiveParser.TOK_CLUSTERBY,
+      HiveParser.TOK_DISTRIBUTEBY, HiveParser.TOK_SORTBY);
+
   static class Phase1Ctx {
     String dest;
     int nextNum;
@@ -357,6 +370,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     globalLimitCtx = new GlobalLimitCtx();
     viewAliasToInput = new HashMap<String, ReadEntity>();
     noscan = partialscan = false;
+    tableMask = new TableMask(this, conf);
+    tableNameToMetaDataTableObject = new HashMap<>();
   }
 
   @Override
@@ -10307,6 +10322,145 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     }
   }
 
+  private Table getMetaDataTableObjectByName(String tableName) throws HiveException {
+    if (!tableNameToMetaDataTableObject.containsKey(tableName)) {
+      Table table = db.getTable(tableName);
+      tableNameToMetaDataTableObject.put(tableName, table);
+      return table;
+    } else {
+      return tableNameToMetaDataTableObject.get(tableName);
+    }
+  }
+
+  private void walkASTMarkTABREF(ASTNode ast, Set<String> cteAlias)
+      throws SemanticException {
+    Queue<Node> queue = new LinkedList<>();
+    queue.add(ast);
+    while (!queue.isEmpty()) {
+      ASTNode astNode = (ASTNode) queue.poll();
+      if (astNode.getToken().getType() == HiveParser.TOK_TABREF) {
+        int aliasIndex = 0;
+        StringBuffer additionalTabInfo = new StringBuffer();
+        for (int index = 1; index < astNode.getChildCount(); index++) {
+          ASTNode ct = (ASTNode) astNode.getChild(index);
+          // TODO: support TOK_TABLEBUCKETSAMPLE, TOK_TABLESPLITSAMPLE, and
+          // TOK_TABLEPROPERTIES
+          if (ct.getToken().getType() == HiveParser.TOK_TABLEBUCKETSAMPLE
+              || ct.getToken().getType() == HiveParser.TOK_TABLESPLITSAMPLE
+              || ct.getToken().getType() == HiveParser.TOK_TABLEPROPERTIES) {
+            additionalTabInfo.append(ctx.getTokenRewriteStream().toString(ct.getTokenStartIndex(),
+                ct.getTokenStopIndex()));
+          } else {
+            aliasIndex = index;
+          }
+        }
+
+        ASTNode tableTree = (ASTNode) (astNode.getChild(0));
+
+        String tabIdName = getUnescapedName(tableTree);
+
+        String alias;
+        if (aliasIndex != 0) {
+          alias = unescapeIdentifier(astNode.getChild(aliasIndex).getText());
+        } else {
+          alias = getUnescapedUnqualifiedTableName(tableTree);
+        }
+
+        // We need to know if it is CTE or not.
+        // A CTE may have the same name as a table.
+        // For example,
+        // with select TAB1 [masking] as TAB2
+        // select * from TAB2 [no masking]
+        if (cteAlias.contains(tabIdName)) {
+          continue;
+        }
+
+        String replacementText = null;
+        Table table = null;
+        try {
+          table = getMetaDataTableObjectByName(tabIdName);
+        } catch (HiveException e) {
+          throw new SemanticException("Table " + tabIdName + " is not found.");
+        }
+
+        if (tableMask.needTransform(table.getDbName(), table.getTableName())) {
+          replacementText = tableMask.create(table, additionalTabInfo.toString(), alias);
+        }
+        if (replacementText != null) {
+          tableMask.setNeedsRewrite(true);
+          // we replace the tabref with replacementText here.
+          tableMask.addTableMasking(astNode, replacementText);
+        }
+      }
+      if (astNode.getChildCount() > 0 && !ignoredTokens.contains(astNode.getToken().getType())) {
+        for (Node child : astNode.getChildren()) {
+          queue.offer(child);
+        }
+      }
+    }
+  }
+
+  // We walk through the AST.
+  // We replace all the TOK_TABREF by adding additional masking and filter if
+  // the table needs to be masked or filtered.
+  // For the replacement, we leverage the methods that are used for
+  // unparseTranslator.
+  public ASTNode rewriteASTWithMaskAndFilter(ASTNode ast) throws SemanticException {
+    // 1. collect information about CTE if there is any.
+    // The base table of CTE should be masked.
+    // The CTE itself should not be masked in the references in the following main query.
+    Set<String> cteAlias = new HashSet<>();
+    if (ast.getChildCount() > 0
+        && HiveParser.TOK_CTE == ((ASTNode) ast.getChild(0)).getToken().getType()) {
+      // the structure inside CTE is like this
+      // TOK_CTE
+      // TOK_SUBQUERY
+      // sq1 (may refer to sq2)
+      // ...
+      // TOK_SUBQUERY
+      // sq2
+      ASTNode cte = (ASTNode) ast.getChild(0);
+      // we start from sq2, end up with sq1.
+      for (int index = cte.getChildCount() - 1; index >= 0; index--) {
+        ASTNode subq = (ASTNode) cte.getChild(index);
+        String alias = unescapeIdentifier(subq.getChild(1).getText());
+        if (cteAlias.contains(alias)) {
+          throw new SemanticException("Duplicate definition of " + alias);
+        } else {
+          cteAlias.add(alias);
+          walkASTMarkTABREF(subq, cteAlias);
+        }
+      }
+      // walk the other part of ast
+      for (int index = 1; index < ast.getChildCount(); index++) {
+        walkASTMarkTABREF((ASTNode) ast.getChild(index), cteAlias);
+      }
+    }
+    // there is no CTE, walk the whole AST
+    else {
+      walkASTMarkTABREF(ast, cteAlias);
+    }
+    // 2. rewrite the AST, replace TABREF with masking/filtering
+    if (tableMask.needsRewrite()) {
+      tableMask.applyTableMasking(ctx.getTokenRewriteStream());
+      String rewrittenQuery = ctx.getTokenRewriteStream().toString(ast.getTokenStartIndex(),
+          ast.getTokenStopIndex());
+      ASTNode rewrittenTree;
+      // Parse the rewritten query string
+      // check if we need to ctx.setCmd(rewrittenQuery);
+      ParseDriver pd = new ParseDriver();
+      try {
+        rewrittenTree = pd.parse(rewrittenQuery);
+      } catch (ParseException e) {
+        throw new SemanticException(e);
+      }
+      rewrittenTree = ParseUtils.findRootNonNullToken(rewrittenTree);
+      return rewrittenTree;
+    } else {
+      return ast;
+    }
+  }
+
   boolean genResolvedParseTree(ASTNode ast, PlannerContext plannerCtx) throws SemanticException {
     ASTNode child = ast;
     this.ast = ast;
@@ -10362,6 +10516,13 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
         SessionState.get().setCommandType(SemanticAnalyzerFactory.getOperation(ast.getToken().getType()));
         return false;
     }
+
+    // masking and filtering should be done here
+    // the basic idea is similar to unparseTranslator.
+    if (!unparseTranslator.isEnabled() && tableMask.isEnabled()) {
+      child = rewriteASTWithMaskAndFilter(ast);
+    }
+
     // 4. continue analyzing from the child ASTNode.
     Phase1Ctx ctx_1 = initPhase1Ctx();
     preProcessForInsert(child, qb);

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/parse/TableMask.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TableMask.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TableMask.java
new file mode 100644
index 0000000..c47c2bd
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TableMask.java
@@ -0,0 +1,127 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hive.ql.parse;
+
+import java.util.List;
+
+import org.antlr.runtime.TokenRewriteStream;
+import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizer;
+import org.apache.hadoop.hive.ql.session.SessionState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The main purpose for this class is for authorization. More specifically, row
+ * filtering and column masking are done through this class. We first call
+ * create function to create the corresponding strings for row filtering and
+ * column masking. We then replace the TAB_REF with the strings.
+ */
+public class TableMask {
+
+  protected final Logger LOG = LoggerFactory.getLogger(TableMask.class);
+  HiveAuthorizer authorizer;
+  private UnparseTranslator translator;
+  private boolean enable;
+  private boolean needsRewrite;
+
+  public TableMask(SemanticAnalyzer analyzer, HiveConf conf) throws SemanticException {
+    try {
+      authorizer = SessionState.get().getAuthorizerV2();
+      if (authorizer != null && needTransform()) {
+        enable = true;
+        translator = new UnparseTranslator(conf);
+        translator.enable();
+      }
+    } catch (Exception e) {
+      LOG.warn("Failed to initialize masking policy");
+      throw new SemanticException(e);
+    }
+  }
+
+  private String createRowMask(String db, String name) throws SemanticException {
+    return authorizer.getRowFilterExpression(db, name);
+  }
+
+  private String createExpressions(String db, String tbl, String colName) throws SemanticException {
+    return authorizer.getCellValueTransformer(db, tbl, colName);
+  }
+
+  public boolean isEnabled() throws SemanticException {
+    return enable;
+  }
+
+  public boolean needTransform() throws SemanticException {
+    return authorizer.needTransform();
+  }
+
+  public boolean needTransform(String database, String table) throws SemanticException {
+    return authorizer.needTransform(database, table);
+  }
+
+  public String create(Table table, String additionalTabInfo, String alias) throws SemanticException {
+    String db = table.getDbName();
+    String tbl = table.getTableName();
+    StringBuilder sb = new StringBuilder();
+    sb.append("(SELECT ");
+    List<FieldSchema> cols = table.getAllCols();
+    boolean firstOne = true;
+    for (FieldSchema fs : cols) {
+      if (!firstOne) {
+        sb.append(", ");
+      } else {
+        firstOne = false;
+      }
+      String colName = fs.getName();
+      String expr = createExpressions(db, tbl, colName);
+      if (expr == null) {
+        sb.append(colName);
+      } else {
+        sb.append(expr + " AS " + colName);
+      }
+    }
+    sb.append(" FROM " + tbl);
+    sb.append(" " + additionalTabInfo);
+    String filter = createRowMask(db, tbl);
+    if (filter != null) {
+      sb.append(" WHERE " + filter);
+    }
+    sb.append(")" + alias);
+    LOG.debug("TableMask creates `" + sb.toString() + "`");
+    return sb.toString();
+  }
+
+  void addTableMasking(ASTNode node, String replacementText) throws SemanticException {
+	  translator.addTranslation(node, replacementText);
+  }
+
+  void applyTableMasking(TokenRewriteStream tokenRewriteStream) throws SemanticException {
+	  translator.applyTranslations(tokenRewriteStream);
+  }
+
+  public boolean needsRewrite() {
+    return needsRewrite;
+  }
+
+  public void setNeedsRewrite(boolean needsRewrite) {
+    this.needsRewrite = needsRewrite;
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizationValidator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizationValidator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizationValidator.java
index 59aabe4..1b366c2 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizationValidator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizationValidator.java
@@ -20,6 +20,8 @@ package org.apache.hadoop.hive.ql.security.authorization.plugin;
 import java.util.List;
 
 import org.apache.hadoop.classification.InterfaceAudience.Private;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 
 /**
  * Interface used to check if user has privileges to perform certain action.
@@ -40,4 +42,13 @@ public interface HiveAuthorizationValidator {
   List<HivePrivilegeObject> filterListCmdObjects(List<HivePrivilegeObject> listObjs,
       HiveAuthzContext context);
 
+  public String getRowFilterExpression(String database, String table) throws SemanticException;
+
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException;
+
+  public boolean needTransform();
+
+  public boolean needTransform(String database, String table);
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java
index c93e334..6e2ef8d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizer.java
@@ -23,6 +23,8 @@ import org.apache.hadoop.hive.common.classification.InterfaceAudience.LimitedPri
 import org.apache.hadoop.hive.common.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 import org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProvider;
 
 /**
@@ -234,5 +236,72 @@ public interface HiveAuthorizer {
    */
   Object getHiveAuthorizationTranslator() throws HiveAuthzPluginException;
 
+  /**
+   * TableMaskingPolicy defines how users can access base tables. It defines a
+   * policy on what columns and rows are hidden, masked or redacted based on
+   * user, role or location.
+   */
+  /**
+   * getRowFilterExpression is called once for each table in a query. It expects
+   * a valid filter condition to be returned. Null indicates no filtering is
+   * required.
+   *
+   * Example: table foo(c int) -> "c > 0 && c % 2 = 0"
+   *
+   * @param database
+   *          the name of the database in which the table lives
+   * @param table
+   *          the name of the table in question
+   * @return
+   * @throws SemanticException
+   */
+  public String getRowFilterExpression(String database, String table) throws SemanticException;
+
+  /**
+   * needTransform() is called once per user in a query. If the function returns
+   * true a call to needTransform(String database, String table) will happen.
+   * Returning false short-circuits the generation of row/column transforms.
+   *
+   * @return
+   * @throws SemanticException
+   */
+  public boolean needTransform();
+
+  /**
+   * needTransform(String database, String table) is called once per table in a
+   * query. If the function returns true a call to getRowFilterExpression and
+   * getCellValueTransformer will happen. Returning false short-circuits the
+   * generation of row/column transforms.
+   *
+   * @param database
+   *          the name of the database in which the table lives
+   * @param table
+   *          the name of the table in question
+   * @return
+   * @throws SemanticException
+   */
+  public boolean needTransform(String database, String table);
+
+  /**
+   * getCellValueTransformer is called once per column in each table accessed by
+   * the query. It expects a valid expression as used in a select clause. Null
+   * is not a valid option. If no transformation is needed simply return the
+   * column name.
+   *
+   * Example: column a -> "a" (no transform)
+   *
+   * Example: column a -> "reverse(a)" (call the reverse function on a)
+   *
+   * Example: column a -> "5" (replace column a with the constant 5)
+   *
+   * @param database
+   * @param table
+   * @param columnName
+   * @return
+   * @throws SemanticException
+   */
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException;
+  
 }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java
index 00fa8cf..c73d667 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveAuthorizerImpl.java
@@ -22,6 +22,8 @@ import java.util.List;
 import org.apache.hadoop.hive.common.classification.InterfaceAudience.LimitedPrivate;
 import org.apache.hadoop.hive.common.classification.InterfaceStability.Evolving;
 import org.apache.hadoop.hive.conf.HiveConf;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 
 /**
  * Convenience implementation of HiveAuthorizer.
@@ -135,4 +137,25 @@ public class HiveAuthorizerImpl extends AbstractHiveAuthorizer {
     accessController.applyAuthorizationConfigPolicy(hiveConf);
   }
 
+  @Override
+  public String getRowFilterExpression(String database, String table) throws SemanticException {
+    return authValidator.getRowFilterExpression(table, table);
+  }
+
+  @Override
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException {
+    return authValidator.getCellValueTransformer(database, table, columnName);
+  }
+
+  @Override
+  public boolean needTransform() {
+    return authValidator.needTransform();
+  }
+
+  @Override
+  public boolean needTransform(String database, String table) {
+    return authValidator.needTransform(database, table);
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveV1Authorizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveV1Authorizer.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveV1Authorizer.java
index 8a03989..c8aa9db 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveV1Authorizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/HiveV1Authorizer.java
@@ -37,6 +37,8 @@ import org.apache.hadoop.hive.metastore.api.RolePrincipalGrant;
 import org.apache.hadoop.hive.ql.metadata.Hive;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.metadata.Table;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 import org.apache.hadoop.hive.ql.security.authorization.AuthorizationUtils;
 import org.apache.hadoop.hive.ql.security.authorization.PrivilegeScope;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAccessController;
@@ -394,4 +396,27 @@ public class HiveV1Authorizer extends AbstractHiveAuthorizer {
     return listObjs;
   }
 
+
+  @Override
+  public String getRowFilterExpression(String database, String table) throws SemanticException {
+    return null;
+  }
+
+
+  @Override
+  public boolean needTransform() {
+    return false;
+  }
+
+  @Override
+  public boolean needTransform(String database, String table) {
+    return false;
+  }
+
+  @Override
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException {
+    return null;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/DummyHiveAuthorizationValidator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/DummyHiveAuthorizationValidator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/DummyHiveAuthorizationValidator.java
index 26e3a2c..e4ddc9b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/DummyHiveAuthorizationValidator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/DummyHiveAuthorizationValidator.java
@@ -21,6 +21,8 @@ import java.util.List;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizationValidator;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthzContext;
@@ -48,4 +50,25 @@ public class DummyHiveAuthorizationValidator implements HiveAuthorizationValidat
     return listObjs;
   }
 
+  @Override
+  public String getRowFilterExpression(String database, String table) throws SemanticException {
+    return null;
+  }
+
+  @Override
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException {
+    return null;
+  }
+
+  @Override
+  public boolean needTransform() {
+    return false;
+  }
+
+  @Override
+  public boolean needTransform(String database, String table) {
+    return false;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java
index 9f586be..c5d60b3 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/security/authorization/plugin/sqlstd/SQLStdHiveAuthorizationValidator.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.metastore.IMetaStoreClient;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
 import org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException;
 import org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAuthorizationValidator;
@@ -149,4 +150,25 @@ public class SQLStdHiveAuthorizationValidator implements HiveAuthorizationValida
     return listObjs;
   }
 
+  @Override
+  public String getRowFilterExpression(String database, String table) throws SemanticException {
+    return null;
+  }
+
+  @Override
+  public String getCellValueTransformer(String database, String table, String columnName)
+      throws SemanticException {
+    return null;
+  }
+
+  @Override
+  public boolean needTransform() {
+    return false;
+  }
+
+  @Override
+  public boolean needTransform(String database, String table) {
+    return false;
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_1.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_1.q b/ql/src/test/queries/clientpositive/masking_1.q
new file mode 100644
index 0000000..90f009d
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_1.q
@@ -0,0 +1,27 @@
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test as select cast(key as int) as key, value from src;
+
+explain select * from masking_test;
+select * from masking_test;
+
+explain select * from masking_test where key > 0;
+select * from masking_test where key > 0;
+
+explain select key from masking_test where key > 0;
+select key from masking_test where key > 0;
+
+explain select value from masking_test where key > 0;
+select value from masking_test where key > 0;
+
+explain select * from masking_test join srcpart on (masking_test.key = srcpart.key);
+select * from masking_test join srcpart on (masking_test.key = srcpart.key);
+
+explain select * from default.masking_test where key > 0;
+select * from default.masking_test where key > 0;
+
+explain select * from masking_test where masking_test.key > 0;
+select * from masking_test where masking_test.key > 0;
+
+explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_2.q b/ql/src/test/queries/clientpositive/masking_2.q
new file mode 100644
index 0000000..fc4a71e
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_2.q
@@ -0,0 +1,17 @@
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create view masking_test as select cast(key as int) as key, value from src;
+
+explain select * from masking_test;
+select * from masking_test;
+
+explain select * from masking_test where key > 0;
+select * from masking_test where key > 0;
+
+explain select * from src a join masking_test b on a.key = b.value where b.key > 0;
+
+explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0;
+
+explain select * from masking_test a union select b.* from masking_test b where b.key > 0;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_3.q b/ql/src/test/queries/clientpositive/masking_3.q
new file mode 100644
index 0000000..584dac1
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_3.q
@@ -0,0 +1,27 @@
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test_subq as select cast(key as int) as key, value from src;
+
+explain select * from masking_test_subq;
+select * from masking_test_subq;
+
+explain select * from masking_test_subq where key > 0;
+select * from masking_test_subq where key > 0;
+
+explain select key from masking_test_subq where key > 0;
+select key from masking_test_subq where key > 0;
+
+explain select value from masking_test_subq where key > 0;
+select value from masking_test_subq where key > 0;
+
+explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key);
+select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key);
+
+explain select * from default.masking_test_subq where key > 0;
+select * from default.masking_test_subq where key > 0;
+
+explain select * from masking_test_subq where masking_test_subq.key > 0;
+select * from masking_test_subq where masking_test_subq.key > 0;
+
+explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_4.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_4.q b/ql/src/test/queries/clientpositive/masking_4.q
new file mode 100644
index 0000000..04dd185
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_4.q
@@ -0,0 +1,30 @@
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test as select cast(key as int) as key, value from src;
+create table masking_test_subq as select cast(key as int) as key, value from src;
+
+
+explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a;
+
+
+--should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1;
+
+--should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq;
+
+--should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq;
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_5.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_5.q b/ql/src/test/queries/clientpositive/masking_5.q
new file mode 100644
index 0000000..a2f7d18
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_5.q
@@ -0,0 +1,22 @@
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test as select cast(key as int) as key, value from src;
+
+explain select * from masking_test tablesample (10 rows);
+select * from masking_test tablesample (10 rows);
+
+explain
+select * from masking_test tablesample(1 percent);
+select * from masking_test tablesample(1 percent);
+
+drop table masking_test;
+
+CREATE TABLE masking_test(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS;
+
+insert overwrite table masking_test
+select * from src;
+
+explain
+select * from masking_test tablesample (bucket 1 out of 2) s;
+select * from masking_test tablesample (bucket 1 out of 2) s;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_disablecbo_1.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_disablecbo_1.q b/ql/src/test/queries/clientpositive/masking_disablecbo_1.q
new file mode 100644
index 0000000..8fefbcf
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_disablecbo_1.q
@@ -0,0 +1,28 @@
+set hive.cbo.enable=false;
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test as select cast(key as int) as key, value from src;
+
+explain select * from masking_test;
+select * from masking_test;
+
+explain select * from masking_test where key > 0;
+select * from masking_test where key > 0;
+
+explain select key from masking_test where key > 0;
+select key from masking_test where key > 0;
+
+explain select value from masking_test where key > 0;
+select value from masking_test where key > 0;
+
+explain select * from masking_test join srcpart on (masking_test.key = srcpart.key);
+select * from masking_test join srcpart on (masking_test.key = srcpart.key);
+
+explain select * from default.masking_test where key > 0;
+select * from default.masking_test where key > 0;
+
+explain select * from masking_test where masking_test.key > 0;
+select * from masking_test where masking_test.key > 0;
+
+explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_disablecbo_2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_disablecbo_2.q b/ql/src/test/queries/clientpositive/masking_disablecbo_2.q
new file mode 100644
index 0000000..8375c52
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_disablecbo_2.q
@@ -0,0 +1,18 @@
+set hive.cbo.enable=false;
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create view masking_test as select cast(key as int) as key, value from src;
+
+explain select * from masking_test;
+select * from masking_test;
+
+explain select * from masking_test where key > 0;
+select * from masking_test where key > 0;
+
+explain select * from src a join masking_test b on a.key = b.value where b.key > 0;
+
+explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0;
+
+explain select * from masking_test a union select b.* from masking_test b where b.key > 0;
+

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_disablecbo_3.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_disablecbo_3.q b/ql/src/test/queries/clientpositive/masking_disablecbo_3.q
new file mode 100644
index 0000000..9501edd
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_disablecbo_3.q
@@ -0,0 +1,28 @@
+set hive.cbo.enable=false;
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test_subq as select cast(key as int) as key, value from src;
+
+explain select * from masking_test_subq;
+select * from masking_test_subq;
+
+explain select * from masking_test_subq where key > 0;
+select * from masking_test_subq where key > 0;
+
+explain select key from masking_test_subq where key > 0;
+select key from masking_test_subq where key > 0;
+
+explain select value from masking_test_subq where key > 0;
+select value from masking_test_subq where key > 0;
+
+explain select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key);
+select * from masking_test_subq join srcpart on (masking_test_subq.key = srcpart.key);
+
+explain select * from default.masking_test_subq where key > 0;
+select * from default.masking_test_subq where key > 0;
+
+explain select * from masking_test_subq where masking_test_subq.key > 0;
+select * from masking_test_subq where masking_test_subq.key > 0;
+
+explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/queries/clientpositive/masking_disablecbo_4.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/masking_disablecbo_4.q b/ql/src/test/queries/clientpositive/masking_disablecbo_4.q
new file mode 100644
index 0000000..7279114
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/masking_disablecbo_4.q
@@ -0,0 +1,31 @@
+set hive.cbo.enable=false;
+set hive.mapred.mode=nonstrict;
+set hive.security.authorization.manager=org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactoryForTest;
+
+create table masking_test as select cast(key as int) as key, value from src;
+create table masking_test_subq as select cast(key as int) as key, value from src;
+
+
+explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a;
+
+
+--should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1;
+
+--should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq;
+
+--should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq;

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_1.q.out b/ql/src/test/results/clientpositive/masking_1.q.out
new file mode 100644
index 0000000..ba2297e
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_1.q.out
@@ -0,0 +1,466 @@
+PREHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain select * from masking_test
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key % 2) = 0) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+0	0_lav
+4	4_lav
+8	8_lav
+0	0_lav
+0	0_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select key from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int)
+                outputColumnNames: _col0
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select key from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select key from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4
+8
+2
+PREHOOK: query: explain select value from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select value from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: reverse(value) (type: string)
+                outputColumnNames: _col0
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select value from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select value from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4_lav
+8_lav
+2_lav
+PREHOOK: query: explain select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key % 2) = 0) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col0) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: srcpart
+            Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: key is not null (type: boolean)
+              Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), value (type: string), ds (type: string), hr (type: string)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col0) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                  Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(_col0) (type: double)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+2	2_lav	2	val_2	2008-04-09	11
+2	2_lav	2	val_2	2008-04-08	11
+2	2_lav	2	val_2	2008-04-09	12
+2	2_lav	2	val_2	2008-04-08	12
+4	4_lav	4	val_4	2008-04-08	12
+4	4_lav	4	val_4	2008-04-09	12
+4	4_lav	4	val_4	2008-04-08	11
+4	4_lav	4	val_4	2008-04-09	11
+8	8_lav	8	val_8	2008-04-08	11
+8	8_lav	8	val_8	2008-04-09	11
+8	8_lav	8	val_8	2008-04-08	12
+8	8_lav	8	val_8	2008-04-09	12
+PREHOOK: query: explain select * from default.masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from default.masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from default.masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from default.masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where masking_test.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where masking_test.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where masking_test.key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where masking_test.key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((UDFToDouble(key) > 0.0) and (UDFToDouble(key) < 10.0)) and ((UDFToDouble(key) % 2.0) = 0.0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), upper(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_2.q.out b/ql/src/test/results/clientpositive/masking_2.q.out
new file mode 100644
index 0000000..3feaa24
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_2.q.out
@@ -0,0 +1,321 @@
+PREHOOK: query: create view masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create view masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+PREHOOK: query: explain select * from masking_test
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+0	0_lav
+4	4_lav
+8	8_lav
+0	0_lav
+0	0_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) and (UDFToInteger(key) > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select * from src a join masking_test b on a.key = b.value where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from src a join masking_test b on a.key = b.value where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: a
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: key is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), value (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col0 (type: string)
+                  sort order: +
+                  Map-reduce partition columns: _col0 (type: string)
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) and (UDFToInteger(key) > 0)) and reverse(value) is not null) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col1 (type: string)
+                  sort order: +
+                  Map-reduce partition columns: _col1 (type: string)
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 _col0 (type: string)
+            1 _col1 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) and UDFToInteger(key) is not null) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col0) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) and (UDFToInteger(key) > 0)) and reverse(value) is not null) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col1) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select * from masking_test a union select b.* from masking_test b where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test a union select b.* from masking_test b where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Union
+                  Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                  Group By Operator
+                    keys: _col0 (type: int), _col1 (type: string)
+                    mode: hash
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: int), _col1 (type: string)
+                      sort order: ++
+                      Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
+                      Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((UDFToInteger(key) % 2) = 0) and (UDFToInteger(key) < 10)) and (UDFToInteger(key) > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToInteger(key) (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Union
+                  Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                  Group By Operator
+                    keys: _col0 (type: int), _col1 (type: string)
+                    mode: hash
+                    outputColumnNames: _col0, _col1
+                    Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col0 (type: int), _col1 (type: string)
+                      sort order: ++
+                      Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
+                      Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Group By Operator
+          keys: KEY._col0 (type: int), KEY._col1 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 55 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 55 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+


[3/5] hive git commit: HIVE-13125: Support masking and filtering of rows/columns (Pengcheng Xiong, reviewed by Ashutosh Chauhan)

Posted by px...@apache.org.
http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_4.q.out b/ql/src/test/results/clientpositive/masking_4.q.out
new file mode 100644
index 0000000..d2ab52e
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_4.q.out
@@ -0,0 +1,233 @@
+PREHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test_subq
+POSTHOOK: query: create table masking_test_subq as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test_subq
+POSTHOOK: Lineage: masking_test_subq.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test_subq.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+with q1 as ( select key from q2 where key = '5'),
+q2 as ( select key from src where key = '5')
+select * from (select key from q1) a
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (key = '5') (type: boolean)
+              Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: '5' (type: string)
+                outputColumnNames: _col0
+                Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1
+PREHOOK: type: QUERY
+POSTHOOK: query: --should mask masking_test
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from q1
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key = 5)) (type: boolean)
+              Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: 5 (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: --should not mask masking_test_subq
+
+explain
+with masking_test_subq as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key = 5)) (type: boolean)
+              Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: 5 (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: --should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+PREHOOK: type: QUERY
+POSTHOOK: query: --should mask masking_test_subq
+
+explain
+with q1 as ( select * from masking_test where key = '5')
+select * from masking_test_subq
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test_subq
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), value (type: string), UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1, _col2, _col3
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: _col2 (type: double), _col3 (type: double)
+                  sort order: ++
+                  Map-reduce partition columns: _col2 (type: double), _col3 (type: double)
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: UDFToDouble(key) (type: double), UDFToDouble(key) (type: double)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                Group By Operator
+                  keys: _col0 (type: double), _col1 (type: double)
+                  mode: hash
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: _col0 (type: double), _col1 (type: double)
+                    sort order: ++
+                    Map-reduce partition columns: _col0 (type: double), _col1 (type: double)
+                    Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Left Semi Join 0 to 1
+          keys:
+            0 _col2 (type: double), _col3 (type: double)
+            1 _col0 (type: double), _col1 (type: double)
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_5.q.out b/ql/src/test/results/clientpositive/masking_5.q.out
new file mode 100644
index 0000000..161ce1c
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_5.q.out
@@ -0,0 +1,189 @@
+PREHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain select * from masking_test tablesample (10 rows)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test tablesample (10 rows)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Row Limit Per Split: 10
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key % 2) = 0) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test tablesample (10 rows)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test tablesample (10 rows)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+PREHOOK: query: explain
+select * from masking_test tablesample(1 percent)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select * from masking_test tablesample(1 percent)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key % 2) = 0) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test tablesample(1 percent)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test tablesample(1 percent)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+0	0_lav
+4	4_lav
+8	8_lav
+0	0_lav
+0	0_lav
+2	2_lav
+PREHOOK: query: drop table masking_test
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@masking_test
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: drop table masking_test
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Output: default@masking_test
+PREHOOK: query: CREATE TABLE masking_test(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: CREATE TABLE masking_test(key int, value string) CLUSTERED BY (key) INTO 2 BUCKETS
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+PREHOOK: query: insert overwrite table masking_test
+select * from src
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: insert overwrite table masking_test
+select * from src
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain
+select * from masking_test tablesample (bucket 1 out of 2) s
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select * from masking_test tablesample (bucket 1 out of 2) s
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((((hash(key) & 2147483647) % 2) = 0) and ((key % 2) = 0)) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 41 Data size: 435 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test tablesample (bucket 1 out of 2) s
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test tablesample (bucket 1 out of 2) s
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+2	2_lav
+0	0_lav
+0	0_lav
+8	8_lav
+4	4_lav
+0	0_lav

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_disablecbo_1.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_disablecbo_1.q.out b/ql/src/test/results/clientpositive/masking_disablecbo_1.q.out
new file mode 100644
index 0000000..8a2bc9d
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_disablecbo_1.q.out
@@ -0,0 +1,462 @@
+PREHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create table masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+POSTHOOK: Lineage: masking_test.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ]
+POSTHOOK: Lineage: masking_test.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: explain select * from masking_test
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key % 2) = 0) and (key < 10)) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+0	0_lav
+4	4_lav
+8	8_lav
+0	0_lav
+0	0_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select key from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int)
+                outputColumnNames: _col0
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select key from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select key from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4
+8
+2
+PREHOOK: query: explain select value from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select value from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: reverse(value) (type: string)
+                outputColumnNames: _col0
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select value from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select value from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4_lav
+8_lav
+2_lav
+PREHOOK: query: explain select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and UDFToDouble(key) is not null) (type: boolean)
+              Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Reduce Output Operator
+                  key expressions: UDFToDouble(_col0) (type: double)
+                  sort order: +
+                  Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: srcpart
+            Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: UDFToDouble(key) is not null (type: boolean)
+              Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: UDFToDouble(key) (type: double)
+                sort order: +
+                Map-reduce partition columns: UDFToDouble(key) (type: double)
+                Statistics: Num rows: 2000 Data size: 21248 Basic stats: COMPLETE Column stats: NONE
+                value expressions: key (type: string), value (type: string), ds (type: string), hr (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(key) (type: double)
+          outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
+          Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 2200 Data size: 23372 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@srcpart
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+PREHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test join srcpart on (masking_test.key = srcpart.key)
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@srcpart
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-08/hr=12
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=11
+POSTHOOK: Input: default@srcpart@ds=2008-04-09/hr=12
+#### A masked pattern was here ####
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-08	11
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-08	12
+0	0_lav	0	val_0	2008-04-09	11
+0	0_lav	0	val_0	2008-04-09	12
+2	2_lav	2	val_2	2008-04-09	11
+2	2_lav	2	val_2	2008-04-08	11
+2	2_lav	2	val_2	2008-04-09	12
+2	2_lav	2	val_2	2008-04-08	12
+4	4_lav	4	val_4	2008-04-08	12
+4	4_lav	4	val_4	2008-04-09	12
+4	4_lav	4	val_4	2008-04-08	11
+4	4_lav	4	val_4	2008-04-09	11
+8	8_lav	8	val_8	2008-04-08	11
+8	8_lav	8	val_8	2008-04-09	11
+8	8_lav	8	val_8	2008-04-08	12
+8	8_lav	8	val_8	2008-04-09	12
+PREHOOK: query: explain select * from default.masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from default.masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from default.masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from default.masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where masking_test.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where masking_test.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: masking_test
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: ((((key % 2) = 0) and (key < 10)) and (key > 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: int), reverse(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where masking_test.key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where masking_test.key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select key, value from (select key, value from (select key, upper(value) as value from src where key > 0) t where key < 10) t2 where key % 2 = 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: (((key > 0) and (key < 10)) and ((key % 2) = 0)) (type: boolean)
+              Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+              Select Operator
+                expressions: key (type: string), upper(value) (type: string)
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                File Output Operator
+                  compressed: false
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  table:
+                      input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                      output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                      serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+

http://git-wip-us.apache.org/repos/asf/hive/blob/a0a53713/ql/src/test/results/clientpositive/masking_disablecbo_2.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/masking_disablecbo_2.q.out b/ql/src/test/results/clientpositive/masking_disablecbo_2.q.out
new file mode 100644
index 0000000..57a8fca
--- /dev/null
+++ b/ql/src/test/results/clientpositive/masking_disablecbo_2.q.out
@@ -0,0 +1,355 @@
+PREHOOK: query: create view masking_test as select cast(key as int) as key, value from src
+PREHOOK: type: CREATEVIEW
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@masking_test
+POSTHOOK: query: create view masking_test as select cast(key as int) as key, value from src
+POSTHOOK: type: CREATEVIEW
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@masking_test
+PREHOOK: query: explain select * from masking_test
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: (((_col0 % 2) = 0) and (_col0 < 10)) (type: boolean)
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+0	0_lav
+4	4_lav
+8	8_lav
+0	0_lav
+0	0_lav
+2	2_lav
+PREHOOK: query: explain select * from masking_test where key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: ((((_col0 % 2) = 0) and (_col0 < 10)) and (_col0 > 0)) (type: boolean)
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                    table:
+                        input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select * from masking_test where key > 0
+PREHOOK: type: QUERY
+PREHOOK: Input: default@masking_test
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select * from masking_test where key > 0
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@masking_test
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+4	4_lav
+8	8_lav
+2	2_lav
+PREHOOK: query: explain select * from src a join masking_test b on a.key = b.value where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from src a join masking_test b on a.key = b.value where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: ((((_col0 % 2) = 0) and (_col0 < 10)) and (_col0 > 0)) (type: boolean)
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  Filter Operator
+                    predicate: _col1 is not null (type: boolean)
+                    Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: _col1 (type: string)
+                      sort order: +
+                      Map-reduce partition columns: _col1 (type: string)
+                      Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                      value expressions: _col0 (type: int)
+          TableScan
+            alias: a
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Filter Operator
+              predicate: key is not null (type: boolean)
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: key (type: string)
+                sort order: +
+                Map-reduce partition columns: key (type: string)
+                Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+                value expressions: value (type: string)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 key (type: string)
+            1 _col1 (type: string)
+          outputColumnNames: _col0, _col1, _col5, _col6
+          Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+          Select Operator
+            expressions: _col0 (type: string), _col1 (type: string), _col5 (type: int), _col6 (type: string)
+            outputColumnNames: _col0, _col1, _col2, _col3
+            Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+            File Output Operator
+              compressed: false
+              Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE
+              table:
+                  input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                  output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                  serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select a.*, b.key from masking_test a join masking_test b on a.key = b.value where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: ((((_col0 % 2) = 0) and (_col0 < 10)) and UDFToDouble(_col0) is not null) (type: boolean)
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  Reduce Output Operator
+                    key expressions: UDFToDouble(_col0) (type: double)
+                    sort order: +
+                    Map-reduce partition columns: UDFToDouble(_col0) (type: double)
+                    Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                    value expressions: _col0 (type: int), _col1 (type: string)
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: ((((_col0 % 2) = 0) and (_col0 < 10)) and (_col0 > 0)) (type: boolean)
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  Filter Operator
+                    predicate: UDFToDouble(_col1) is not null (type: boolean)
+                    Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                    Reduce Output Operator
+                      key expressions: UDFToDouble(_col1) (type: double)
+                      sort order: +
+                      Map-reduce partition columns: UDFToDouble(_col1) (type: double)
+                      Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                      value expressions: _col0 (type: int)
+      Reduce Operator Tree:
+        Join Operator
+          condition map:
+               Inner Join 0 to 1
+          keys:
+            0 UDFToDouble(_col0) (type: double)
+            1 UDFToDouble(_col1) (type: double)
+          outputColumnNames: _col0, _col1, _col2
+          Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 91 Data size: 969 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: explain select * from masking_test a union select b.* from masking_test b where b.key > 0
+PREHOOK: type: QUERY
+POSTHOOK: query: explain select * from masking_test a union select b.* from masking_test b where b.key > 0
+POSTHOOK: type: QUERY
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: (((_col0 % 2) = 0) and (_col0 < 10)) (type: boolean)
+                Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 83 Data size: 881 Basic stats: COMPLETE Column stats: NONE
+                  Union
+                    Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      keys: _col0 (type: int), _col1 (type: string)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int), _col1 (type: string)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
+                        Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+          TableScan
+            alias: src
+            Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: UDFToInteger(key) (type: int), value (type: string)
+              outputColumnNames: _col0, _col1
+              Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE
+              Filter Operator
+                predicate: ((((_col0 % 2) = 0) and (_col0 < 10)) and (_col0 > 0)) (type: boolean)
+                Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                Select Operator
+                  expressions: _col0 (type: int), reverse(_col1) (type: string)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 27 Data size: 286 Basic stats: COMPLETE Column stats: NONE
+                  Union
+                    Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                    Group By Operator
+                      keys: _col0 (type: int), _col1 (type: string)
+                      mode: hash
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+                      Reduce Output Operator
+                        key expressions: _col0 (type: int), _col1 (type: string)
+                        sort order: ++
+                        Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
+                        Statistics: Num rows: 110 Data size: 1167 Basic stats: COMPLETE Column stats: NONE
+      Reduce Operator Tree:
+        Group By Operator
+          keys: KEY._col0 (type: int), KEY._col1 (type: string)
+          mode: mergepartial
+          outputColumnNames: _col0, _col1
+          Statistics: Num rows: 55 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 55 Data size: 583 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+