diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java index 76aa39f..da54e53 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java @@ -172,7 +172,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // unlink connection between FS and its parent fsParent = fsOp.getParentOperators().get(0); - fsParent.getChildOperators().clear(); + fsParent.getChildOperators().remove(fsOp); DynamicPartitionCtx dpCtx = fsOp.getConf().getDynPartCtx(); int numBuckets = destTable.getNumBuckets(); diff --git a/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q b/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q index 5ef8ead..daec56d 100644 --- a/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q +++ b/ql/src/test/queries/clientpositive/dynpart_sort_optimization.q @@ -208,3 +208,35 @@ insert overwrite table over1k_part3 partition(s,t,i) select si,b,f,s,t,i from ov insert overwrite table over1k_part3 partition(s,t,i) select si,b,f,s,t,i from over1k where i=100 and t=27 and s="foo"; select sum(hash(*)) from over1k_part3; + + +-- verify multiple branches in SDPO +set hive.optimize.sort.dynamic.partition=true; + +create table over1k_part4_0(i int) + partitioned by (s string); +create table over1k_part4_1(i int) + partitioned by (s string); + +EXPLAIN +FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +; + +FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +; + +select count(1) from over1k_part4_0; +select count(1) from over1k_part4_1; + diff --git a/ql/src/test/results/clientpositive/llap/dynpart_sort_optimization.q.out b/ql/src/test/results/clientpositive/llap/dynpart_sort_optimization.q.out index 1ef0740..f3b0cff 100644 --- a/ql/src/test/results/clientpositive/llap/dynpart_sort_optimization.q.out +++ b/ql/src/test/results/clientpositive/llap/dynpart_sort_optimization.q.out @@ -3269,3 +3269,348 @@ POSTHOOK: Input: default@over1k_part3@s=wendy van buren/t=27/i=65680 POSTHOOK: Input: default@over1k_part3@s=xavier quirinius/t=27/i=65599 #### A masked pattern was here #### 17814641134 +PREHOOK: query: create table over1k_part4_0(i int) + partitioned by (s string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@over1k_part4_0 +POSTHOOK: query: create table over1k_part4_0(i int) + partitioned by (s string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@over1k_part4_0 +PREHOOK: query: create table over1k_part4_1(i int) + partitioned by (s string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@over1k_part4_1 +POSTHOOK: query: create table over1k_part4_1(i int) + partitioned by (s string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@over1k_part4_1 +PREHOOK: query: EXPLAIN +FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN +FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-2 is a root stage + Stage-3 depends on stages: Stage-2 + Stage-0 depends on stages: Stage-3 + Stage-4 depends on stages: Stage-0 + Stage-1 depends on stages: Stage-3 + Stage-5 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-2 + Tez +#### A masked pattern was here #### + Edges: + Reducer 2 <- Map 1 (SIMPLE_EDGE) + Reducer 3 <- Map 1 (SIMPLE_EDGE) +#### A masked pattern was here #### + Vertices: + Map 1 + Map Operator Tree: + TableScan + alias: over1k + Statistics: Num rows: 1025 Data size: 106636 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (s like 'bob%') (type: boolean) + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: i (type: int), s (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 512 Data size: 53265 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: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Reduce Output Operator + key expressions: _col1 (type: string) + sort order: + + Map-reduce partition columns: _col1 (type: string) + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + value expressions: _col0 (type: int) + Execution mode: llap + LLAP IO: no inputs + Reducer 2 + Execution mode: llap + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int), KEY._col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Dp Sort State: PARTITION_SORTED + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part4_0 + Reducer 3 + Execution mode: llap + Reduce Operator Tree: + Select Operator + expressions: VALUE._col0 (type: int), KEY._col1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Dp Sort State: PARTITION_SORTED + Statistics: Num rows: 512 Data size: 53265 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part4_1 + + Stage: Stage-3 + Dependency Collection + + Stage: Stage-0 + Move Operator + tables: + partition: + s + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part4_0 + + Stage: Stage-4 + Stats-Aggr Operator + + Stage: Stage-1 + Move Operator + tables: + partition: + s + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.over1k_part4_1 + + Stage: Stage-5 + Stats-Aggr Operator + +PREHOOK: query: FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +PREHOOK: type: QUERY +PREHOOK: Input: default@over1k +PREHOOK: Output: default@over1k_part4_0 +PREHOOK: Output: default@over1k_part4_1 +POSTHOOK: query: FROM ( + select i, s from over1k where s like 'bob%' +) src1k +insert overwrite table over1k_part4_0 partition(s) +select i, s +insert overwrite table over1k_part4_1 partition(s) +select i, s +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1k +POSTHOOK: Output: default@over1k_part4_0@s=bob brown +POSTHOOK: Output: default@over1k_part4_0@s=bob carson +POSTHOOK: Output: default@over1k_part4_0@s=bob davidson +POSTHOOK: Output: default@over1k_part4_0@s=bob ellison +POSTHOOK: Output: default@over1k_part4_0@s=bob falkner +POSTHOOK: Output: default@over1k_part4_0@s=bob garcia +POSTHOOK: Output: default@over1k_part4_0@s=bob hernandez +POSTHOOK: Output: default@over1k_part4_0@s=bob ichabod +POSTHOOK: Output: default@over1k_part4_0@s=bob king +POSTHOOK: Output: default@over1k_part4_0@s=bob laertes +POSTHOOK: Output: default@over1k_part4_0@s=bob miller +POSTHOOK: Output: default@over1k_part4_0@s=bob ovid +POSTHOOK: Output: default@over1k_part4_0@s=bob polk +POSTHOOK: Output: default@over1k_part4_0@s=bob quirinius +POSTHOOK: Output: default@over1k_part4_0@s=bob steinbeck +POSTHOOK: Output: default@over1k_part4_0@s=bob van buren +POSTHOOK: Output: default@over1k_part4_0@s=bob white +POSTHOOK: Output: default@over1k_part4_0@s=bob xylophone +POSTHOOK: Output: default@over1k_part4_0@s=bob young +POSTHOOK: Output: default@over1k_part4_0@s=bob zipper +POSTHOOK: Output: default@over1k_part4_1@s=bob brown +POSTHOOK: Output: default@over1k_part4_1@s=bob carson +POSTHOOK: Output: default@over1k_part4_1@s=bob davidson +POSTHOOK: Output: default@over1k_part4_1@s=bob ellison +POSTHOOK: Output: default@over1k_part4_1@s=bob falkner +POSTHOOK: Output: default@over1k_part4_1@s=bob garcia +POSTHOOK: Output: default@over1k_part4_1@s=bob hernandez +POSTHOOK: Output: default@over1k_part4_1@s=bob ichabod +POSTHOOK: Output: default@over1k_part4_1@s=bob king +POSTHOOK: Output: default@over1k_part4_1@s=bob laertes +POSTHOOK: Output: default@over1k_part4_1@s=bob miller +POSTHOOK: Output: default@over1k_part4_1@s=bob ovid +POSTHOOK: Output: default@over1k_part4_1@s=bob polk +POSTHOOK: Output: default@over1k_part4_1@s=bob quirinius +POSTHOOK: Output: default@over1k_part4_1@s=bob steinbeck +POSTHOOK: Output: default@over1k_part4_1@s=bob van buren +POSTHOOK: Output: default@over1k_part4_1@s=bob white +POSTHOOK: Output: default@over1k_part4_1@s=bob xylophone +POSTHOOK: Output: default@over1k_part4_1@s=bob young +POSTHOOK: Output: default@over1k_part4_1@s=bob zipper +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob brown).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob carson).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob davidson).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob ellison).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob falkner).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob garcia).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob hernandez).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob ichabod).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob king).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob laertes).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob miller).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob ovid).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob polk).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob quirinius).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob steinbeck).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob van buren).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob white).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob xylophone).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob young).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_0 PARTITION(s=bob zipper).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob brown).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob carson).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob davidson).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob ellison).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob falkner).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob garcia).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob hernandez).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob ichabod).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob king).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob laertes).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob miller).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob ovid).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob polk).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob quirinius).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob steinbeck).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob van buren).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob white).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob xylophone).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob young).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +POSTHOOK: Lineage: over1k_part4_1 PARTITION(s=bob zipper).i SIMPLE [(over1k)over1k.FieldSchema(name:i, type:int, comment:null), ] +PREHOOK: query: select count(1) from over1k_part4_0 +PREHOOK: type: QUERY +PREHOOK: Input: default@over1k_part4_0 +PREHOOK: Input: default@over1k_part4_0@s=bob brown +PREHOOK: Input: default@over1k_part4_0@s=bob carson +PREHOOK: Input: default@over1k_part4_0@s=bob davidson +PREHOOK: Input: default@over1k_part4_0@s=bob ellison +PREHOOK: Input: default@over1k_part4_0@s=bob falkner +PREHOOK: Input: default@over1k_part4_0@s=bob garcia +PREHOOK: Input: default@over1k_part4_0@s=bob hernandez +PREHOOK: Input: default@over1k_part4_0@s=bob ichabod +PREHOOK: Input: default@over1k_part4_0@s=bob king +PREHOOK: Input: default@over1k_part4_0@s=bob laertes +PREHOOK: Input: default@over1k_part4_0@s=bob miller +PREHOOK: Input: default@over1k_part4_0@s=bob ovid +PREHOOK: Input: default@over1k_part4_0@s=bob polk +PREHOOK: Input: default@over1k_part4_0@s=bob quirinius +PREHOOK: Input: default@over1k_part4_0@s=bob steinbeck +PREHOOK: Input: default@over1k_part4_0@s=bob van buren +PREHOOK: Input: default@over1k_part4_0@s=bob white +PREHOOK: Input: default@over1k_part4_0@s=bob xylophone +PREHOOK: Input: default@over1k_part4_0@s=bob young +PREHOOK: Input: default@over1k_part4_0@s=bob zipper +#### A masked pattern was here #### +POSTHOOK: query: select count(1) from over1k_part4_0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1k_part4_0 +POSTHOOK: Input: default@over1k_part4_0@s=bob brown +POSTHOOK: Input: default@over1k_part4_0@s=bob carson +POSTHOOK: Input: default@over1k_part4_0@s=bob davidson +POSTHOOK: Input: default@over1k_part4_0@s=bob ellison +POSTHOOK: Input: default@over1k_part4_0@s=bob falkner +POSTHOOK: Input: default@over1k_part4_0@s=bob garcia +POSTHOOK: Input: default@over1k_part4_0@s=bob hernandez +POSTHOOK: Input: default@over1k_part4_0@s=bob ichabod +POSTHOOK: Input: default@over1k_part4_0@s=bob king +POSTHOOK: Input: default@over1k_part4_0@s=bob laertes +POSTHOOK: Input: default@over1k_part4_0@s=bob miller +POSTHOOK: Input: default@over1k_part4_0@s=bob ovid +POSTHOOK: Input: default@over1k_part4_0@s=bob polk +POSTHOOK: Input: default@over1k_part4_0@s=bob quirinius +POSTHOOK: Input: default@over1k_part4_0@s=bob steinbeck +POSTHOOK: Input: default@over1k_part4_0@s=bob van buren +POSTHOOK: Input: default@over1k_part4_0@s=bob white +POSTHOOK: Input: default@over1k_part4_0@s=bob xylophone +POSTHOOK: Input: default@over1k_part4_0@s=bob young +POSTHOOK: Input: default@over1k_part4_0@s=bob zipper +#### A masked pattern was here #### +41 +PREHOOK: query: select count(1) from over1k_part4_1 +PREHOOK: type: QUERY +PREHOOK: Input: default@over1k_part4_1 +PREHOOK: Input: default@over1k_part4_1@s=bob brown +PREHOOK: Input: default@over1k_part4_1@s=bob carson +PREHOOK: Input: default@over1k_part4_1@s=bob davidson +PREHOOK: Input: default@over1k_part4_1@s=bob ellison +PREHOOK: Input: default@over1k_part4_1@s=bob falkner +PREHOOK: Input: default@over1k_part4_1@s=bob garcia +PREHOOK: Input: default@over1k_part4_1@s=bob hernandez +PREHOOK: Input: default@over1k_part4_1@s=bob ichabod +PREHOOK: Input: default@over1k_part4_1@s=bob king +PREHOOK: Input: default@over1k_part4_1@s=bob laertes +PREHOOK: Input: default@over1k_part4_1@s=bob miller +PREHOOK: Input: default@over1k_part4_1@s=bob ovid +PREHOOK: Input: default@over1k_part4_1@s=bob polk +PREHOOK: Input: default@over1k_part4_1@s=bob quirinius +PREHOOK: Input: default@over1k_part4_1@s=bob steinbeck +PREHOOK: Input: default@over1k_part4_1@s=bob van buren +PREHOOK: Input: default@over1k_part4_1@s=bob white +PREHOOK: Input: default@over1k_part4_1@s=bob xylophone +PREHOOK: Input: default@over1k_part4_1@s=bob young +PREHOOK: Input: default@over1k_part4_1@s=bob zipper +#### A masked pattern was here #### +POSTHOOK: query: select count(1) from over1k_part4_1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@over1k_part4_1 +POSTHOOK: Input: default@over1k_part4_1@s=bob brown +POSTHOOK: Input: default@over1k_part4_1@s=bob carson +POSTHOOK: Input: default@over1k_part4_1@s=bob davidson +POSTHOOK: Input: default@over1k_part4_1@s=bob ellison +POSTHOOK: Input: default@over1k_part4_1@s=bob falkner +POSTHOOK: Input: default@over1k_part4_1@s=bob garcia +POSTHOOK: Input: default@over1k_part4_1@s=bob hernandez +POSTHOOK: Input: default@over1k_part4_1@s=bob ichabod +POSTHOOK: Input: default@over1k_part4_1@s=bob king +POSTHOOK: Input: default@over1k_part4_1@s=bob laertes +POSTHOOK: Input: default@over1k_part4_1@s=bob miller +POSTHOOK: Input: default@over1k_part4_1@s=bob ovid +POSTHOOK: Input: default@over1k_part4_1@s=bob polk +POSTHOOK: Input: default@over1k_part4_1@s=bob quirinius +POSTHOOK: Input: default@over1k_part4_1@s=bob steinbeck +POSTHOOK: Input: default@over1k_part4_1@s=bob van buren +POSTHOOK: Input: default@over1k_part4_1@s=bob white +POSTHOOK: Input: default@over1k_part4_1@s=bob xylophone +POSTHOOK: Input: default@over1k_part4_1@s=bob young +POSTHOOK: Input: default@over1k_part4_1@s=bob zipper +#### A masked pattern was here #### +41