You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2009/08/14 09:48:09 UTC

svn commit: r804106 [23/24] - in /hadoop/hive/trunk: ./ contrib/src/java/org/apache/hadoop/hive/contrib/udaf/ contrib/src/java/org/apache/hadoop/hive/contrib/udaf/example/ contrib/src/java/org/apache/hadoop/hive/contrib/udf/ contrib/src/java/org/apache...

Modified: hadoop/hive/trunk/ql/src/test/results/compiler/plan/union.q.xml
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/test/results/compiler/plan/union.q.xml?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/test/results/compiler/plan/union.q.xml (original)
+++ hadoop/hive/trunk/ql/src/test/results/compiler/plan/union.q.xml Fri Aug 14 07:48:02 2009
@@ -33,7 +33,7 @@
                <boolean>true</boolean> 
               </void> 
               <void property="sourceDir"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/629731800/10000</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/190958347/10000</string> 
               </void> 
               <void property="targetDir"> 
                <string>../build/ql/test/data/warehouse/union.out</string> 
@@ -64,10 +64,10 @@
                <boolean>true</boolean> 
               </void> 
               <void property="sourceDir"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
               </void> 
               <void property="targetDir"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/629731800/10000</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/190958347/10000</string> 
               </void> 
              </object> 
             </void> 
@@ -85,7 +85,7 @@
             <void property="aliasToWork"> 
              <object class="java.util.LinkedHashMap"> 
               <void method="put"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
                <object id="TableScanOperator0" class="org.apache.hadoop.hive.ql.exec.TableScanOperator"> 
                 <void property="childOperators"> 
                  <object class="java.util.ArrayList"> 
@@ -144,24 +144,22 @@
                       <void property="partitionCols"> 
                        <object class="java.util.ArrayList"> 
                         <void method="add"> 
-                         <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                          <void property="UDFClass"> 
-                           <class>org.apache.hadoop.hive.ql.udf.UDFRand</class> 
-                          </void> 
-                          <void property="UDFMethod"> 
-                           <object class="org.apache.hadoop.hive.ql.udf.UDFRand" method="getMethod"> 
-                            <string>evaluate</string> 
-                            <array class="java.lang.Class" length="0"/> 
-                           </object> 
-                          </void> 
+                         <object class="org.apache.hadoop.hive.ql.plan.exprNodeGenericFuncDesc"> 
                           <void property="childExprs"> 
                            <object class="java.util.ArrayList"/> 
                           </void> 
-                          <void property="methodName"> 
-                           <string>rand</string> 
+                          <void property="genericUDF"> 
+                           <object class="org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge"> 
+                            <void property="udfClass"> 
+                             <class>org.apache.hadoop.hive.ql.udf.UDFRand</class> 
+                            </void> 
+                            <void property="udfName"> 
+                             <string>rand</string> 
+                            </void> 
+                           </object> 
                           </void> 
                           <void property="typeInfo"> 
-                           <object id="PrimitiveTypeInfo0" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
+                           <object class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
                             <void property="typeName"> 
                              <string>double</string> 
                             </void> 
@@ -185,7 +183,7 @@
                            <string></string> 
                           </void> 
                           <void property="typeInfo"> 
-                           <object id="PrimitiveTypeInfo1" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
+                           <object id="PrimitiveTypeInfo0" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
                             <void property="typeName"> 
                              <string>string</string> 
                             </void> 
@@ -202,7 +200,7 @@
                            <string></string> 
                           </void> 
                           <void property="typeInfo"> 
-                           <object idref="PrimitiveTypeInfo1"/> 
+                           <object idref="PrimitiveTypeInfo0"/> 
                           </void> 
                          </object> 
                         </void> 
@@ -256,7 +254,7 @@
                            <string>_col0</string> 
                           </void> 
                           <void property="type"> 
-                           <object idref="PrimitiveTypeInfo1"/> 
+                           <object idref="PrimitiveTypeInfo0"/> 
                           </void> 
                          </object> 
                         </void> 
@@ -266,7 +264,7 @@
                            <string>_col1</string> 
                           </void> 
                           <void property="type"> 
-                           <object idref="PrimitiveTypeInfo1"/> 
+                           <object idref="PrimitiveTypeInfo0"/> 
                           </void> 
                          </object> 
                         </void> 
@@ -294,10 +292,10 @@
             <void property="pathToAliases"> 
              <object class="java.util.LinkedHashMap"> 
               <void method="put"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
                <object class="java.util.ArrayList"> 
                 <void method="add"> 
-                 <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+                 <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
                 </void> 
                </object> 
               </void> 
@@ -306,7 +304,7 @@
             <void property="pathToPartitionInfo"> 
              <object class="java.util.LinkedHashMap"> 
               <void method="put"> 
-               <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+               <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
                <object class="org.apache.hadoop.hive.ql.plan.partitionDesc"> 
                 <void property="tableDesc"> 
                  <object id="tableDesc2" class="org.apache.hadoop.hive.ql.plan.tableDesc"> 
@@ -350,7 +348,7 @@
                   <void property="conf"> 
                    <object class="org.apache.hadoop.hive.ql.plan.fileSinkDesc"> 
                     <void property="dirName"> 
-                     <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/629731800/10000</string> 
+                     <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/190958347/10000</string> 
                     </void> 
                     <void property="tableInfo"> 
                      <object class="org.apache.hadoop.hive.ql.plan.tableDesc"> 
@@ -408,7 +406,7 @@
                    <string></string> 
                   </void> 
                   <void property="typeInfo"> 
-                   <object idref="PrimitiveTypeInfo1"/> 
+                   <object idref="PrimitiveTypeInfo0"/> 
                   </void> 
                  </object> 
                 </void> 
@@ -424,7 +422,7 @@
                      <string>0</string> 
                     </void> 
                     <void property="type"> 
-                     <object idref="PrimitiveTypeInfo1"/> 
+                     <object idref="PrimitiveTypeInfo0"/> 
                     </void> 
                    </object> 
                   </void> 
@@ -434,7 +432,7 @@
                      <string>1</string> 
                     </void> 
                     <void property="type"> 
-                     <object idref="PrimitiveTypeInfo1"/> 
+                     <object idref="PrimitiveTypeInfo0"/> 
                     </void> 
                    </object> 
                   </void> 
@@ -470,7 +468,7 @@
       <void property="resolverCtx"> 
        <object class="org.apache.hadoop.hive.ql.plan.ConditionalResolverMergeFiles$ConditionalResolverMergeFilesCtx"> 
         <void property="dir"> 
-         <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+         <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
         </void> 
         <void property="listTasks"> 
          <object idref="ArrayList0"/> 
@@ -558,7 +556,7 @@
            </void> 
            <void method="put"> 
             <string>location</string> 
-            <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/test/data/warehouse/src</string> 
+            <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/test/data/warehouse/src</string> 
            </void> 
           </object> 
          </void> 
@@ -626,7 +624,7 @@
            </void> 
            <void method="put"> 
             <string>location</string> 
-            <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/test/data/warehouse/src</string> 
+            <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/test/data/warehouse/src</string> 
            </void> 
           </object> 
          </void> 
@@ -673,7 +671,7 @@
                                    <int>1</int> 
                                   </void> 
                                   <void property="dirName"> 
-                                   <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/tmp/1806940690/10001</string> 
+                                   <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/tmp/547267680/10001</string> 
                                   </void> 
                                   <void property="tableInfo"> 
                                    <object idref="tableDesc2"/> 
@@ -706,7 +704,7 @@
                                  <string>src</string> 
                                 </void> 
                                 <void property="typeInfo"> 
-                                 <object idref="PrimitiveTypeInfo1"/> 
+                                 <object idref="PrimitiveTypeInfo0"/> 
                                 </void> 
                                </object> 
                               </void> 
@@ -720,7 +718,7 @@
                                  <string>src</string> 
                                 </void> 
                                 <void property="typeInfo"> 
-                                 <object idref="PrimitiveTypeInfo1"/> 
+                                 <object idref="PrimitiveTypeInfo0"/> 
                                 </void> 
                                </object> 
                               </void> 
@@ -770,7 +768,7 @@
                                    <string>_col0</string> 
                                   </void> 
                                   <void property="type"> 
-                                   <object idref="PrimitiveTypeInfo1"/> 
+                                   <object idref="PrimitiveTypeInfo0"/> 
                                   </void> 
                                  </object> 
                                 </void> 
@@ -780,7 +778,7 @@
                                    <string>_col1</string> 
                                   </void> 
                                   <void property="type"> 
-                                   <object idref="PrimitiveTypeInfo1"/> 
+                                   <object idref="PrimitiveTypeInfo0"/> 
                                   </void> 
                                  </object> 
                                 </void> 
@@ -821,7 +819,7 @@
                                  <string>src</string> 
                                 </void> 
                                 <void property="typeInfo"> 
-                                 <object idref="PrimitiveTypeInfo1"/> 
+                                 <object idref="PrimitiveTypeInfo0"/> 
                                 </void> 
                                </object> 
                               </void> 
@@ -835,7 +833,7 @@
                                  <string>src</string> 
                                 </void> 
                                 <void property="typeInfo"> 
-                                 <object idref="PrimitiveTypeInfo1"/> 
+                                 <object idref="PrimitiveTypeInfo0"/> 
                                 </void> 
                                </object> 
                               </void> 
@@ -882,59 +880,16 @@
                                 <void property="conf"> 
                                  <object class="org.apache.hadoop.hive.ql.plan.filterDesc"> 
                                   <void property="predicate"> 
-                                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                    <void property="UDFClass"> 
-                                     <class>org.apache.hadoop.hive.ql.udf.UDFOPGreaterThan</class> 
-                                    </void> 
-                                    <void property="UDFMethod"> 
-                                     <object id="Method0" class="org.apache.hadoop.hive.ql.udf.UDFOPGreaterThan" method="getMethod"> 
-                                      <string>evaluate</string> 
-                                      <array class="java.lang.Class" length="2"> 
-                                       <void index="0"> 
-                                        <class>org.apache.hadoop.hive.serde2.io.DoubleWritable</class> 
-                                       </void> 
-                                       <void index="1"> 
-                                        <class>org.apache.hadoop.hive.serde2.io.DoubleWritable</class> 
-                                       </void> 
-                                      </array> 
-                                     </object> 
-                                    </void> 
+                                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeGenericFuncDesc"> 
                                     <void property="childExprs"> 
                                      <object class="java.util.ArrayList"> 
                                       <void method="add"> 
-                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                        <void property="UDFClass"> 
-                                         <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                                        </void> 
-                                        <void property="UDFMethod"> 
-                                         <object id="Method1" class="org.apache.hadoop.hive.ql.udf.UDFToDouble" method="getMethod"> 
-                                          <string>evaluate</string> 
-                                          <array class="java.lang.Class" length="1"> 
-                                           <void index="0"> 
-                                            <class>org.apache.hadoop.io.Text</class> 
-                                           </void> 
-                                          </array> 
-                                         </object> 
-                                        </void> 
-                                        <void property="childExprs"> 
-                                         <object class="java.util.ArrayList"> 
-                                          <void method="add"> 
-                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
-                                            <void property="column"> 
-                                             <string>key</string> 
-                                            </void> 
-                                            <void property="tabAlias"> 
-                                             <string>src</string> 
-                                            </void> 
-                                            <void property="typeInfo"> 
-                                             <object idref="PrimitiveTypeInfo1"/> 
-                                            </void> 
-                                           </object> 
-                                          </void> 
-                                         </object> 
+                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
+                                        <void property="column"> 
+                                         <string>key</string> 
                                         </void> 
-                                        <void property="methodName"> 
-                                         <string>double</string> 
+                                        <void property="tabAlias"> 
+                                         <string>src</string> 
                                         </void> 
                                         <void property="typeInfo"> 
                                          <object idref="PrimitiveTypeInfo0"/> 
@@ -942,53 +897,36 @@
                                        </object> 
                                       </void> 
                                       <void method="add"> 
-                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                        <void property="UDFClass"> 
-                                         <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                                        </void> 
-                                        <void property="UDFMethod"> 
-                                         <object id="Method2" class="org.apache.hadoop.hive.ql.udf.UDFToDouble" method="getMethod"> 
-                                          <string>evaluate</string> 
-                                          <array class="java.lang.Class" length="1"> 
-                                           <void index="0"> 
-                                            <class>org.apache.hadoop.io.IntWritable</class> 
-                                           </void> 
-                                          </array> 
-                                         </object> 
-                                        </void> 
-                                        <void property="childExprs"> 
-                                         <object class="java.util.ArrayList"> 
-                                          <void method="add"> 
-                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
-                                            <void property="typeInfo"> 
-                                             <object id="PrimitiveTypeInfo2" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
-                                              <void property="typeName"> 
-                                               <string>int</string> 
-                                              </void> 
-                                             </object> 
-                                            </void> 
-                                            <void property="value"> 
-                                             <int>100</int> 
-                                            </void> 
-                                           </object> 
+                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
+                                        <void property="typeInfo"> 
+                                         <object id="PrimitiveTypeInfo1" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
+                                          <void property="typeName"> 
+                                           <string>int</string> 
                                           </void> 
                                          </object> 
                                         </void> 
-                                        <void property="methodName"> 
-                                         <string>double</string> 
-                                        </void> 
-                                        <void property="typeInfo"> 
-                                         <object idref="PrimitiveTypeInfo0"/> 
+                                        <void property="value"> 
+                                         <int>100</int> 
                                         </void> 
                                        </object> 
                                       </void> 
                                      </object> 
                                     </void> 
-                                    <void property="methodName"> 
-                                     <string>&gt;</string> 
+                                    <void property="genericUDF"> 
+                                     <object class="org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge"> 
+                                      <void property="operator"> 
+                                       <boolean>true</boolean> 
+                                      </void> 
+                                      <void property="udfClass"> 
+                                       <class>org.apache.hadoop.hive.ql.udf.UDFOPGreaterThan</class> 
+                                      </void> 
+                                      <void property="udfName"> 
+                                       <string>&gt;</string> 
+                                      </void> 
+                                     </object> 
                                     </void> 
                                     <void property="typeInfo"> 
-                                     <object id="PrimitiveTypeInfo3" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
+                                     <object id="PrimitiveTypeInfo2" class="org.apache.hadoop.hive.serde2.typeinfo.PrimitiveTypeInfo"> 
                                       <void property="typeName"> 
                                        <string>boolean</string> 
                                       </void> 
@@ -1012,42 +950,16 @@
                                     <void property="conf"> 
                                      <object class="org.apache.hadoop.hive.ql.plan.filterDesc"> 
                                       <void property="predicate"> 
-                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                        <void property="UDFClass"> 
-                                         <class>org.apache.hadoop.hive.ql.udf.UDFOPGreaterThan</class> 
-                                        </void> 
-                                        <void property="UDFMethod"> 
-                                         <object idref="Method0"/> 
-                                        </void> 
+                                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeGenericFuncDesc"> 
                                         <void property="childExprs"> 
                                          <object class="java.util.ArrayList"> 
                                           <void method="add"> 
-                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                            <void property="UDFClass"> 
-                                             <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                                            </void> 
-                                            <void property="UDFMethod"> 
-                                             <object idref="Method1"/> 
-                                            </void> 
-                                            <void property="childExprs"> 
-                                             <object class="java.util.ArrayList"> 
-                                              <void method="add"> 
-                                               <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
-                                                <void property="column"> 
-                                                 <string>key</string> 
-                                                </void> 
-                                                <void property="tabAlias"> 
-                                                 <string>src</string> 
-                                                </void> 
-                                                <void property="typeInfo"> 
-                                                 <object idref="PrimitiveTypeInfo1"/> 
-                                                </void> 
-                                               </object> 
-                                              </void> 
-                                             </object> 
+                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
+                                            <void property="column"> 
+                                             <string>key</string> 
                                             </void> 
-                                            <void property="methodName"> 
-                                             <string>double</string> 
+                                            <void property="tabAlias"> 
+                                             <string>src</string> 
                                             </void> 
                                             <void property="typeInfo"> 
                                              <object idref="PrimitiveTypeInfo0"/> 
@@ -1055,42 +967,32 @@
                                            </object> 
                                           </void> 
                                           <void method="add"> 
-                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                                            <void property="UDFClass"> 
-                                             <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                                            </void> 
-                                            <void property="UDFMethod"> 
-                                             <object idref="Method2"/> 
-                                            </void> 
-                                            <void property="childExprs"> 
-                                             <object class="java.util.ArrayList"> 
-                                              <void method="add"> 
-                                               <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
-                                                <void property="typeInfo"> 
-                                                 <object idref="PrimitiveTypeInfo2"/> 
-                                                </void> 
-                                                <void property="value"> 
-                                                 <int>100</int> 
-                                                </void> 
-                                               </object> 
-                                              </void> 
-                                             </object> 
-                                            </void> 
-                                            <void property="methodName"> 
-                                             <string>double</string> 
-                                            </void> 
+                                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
                                             <void property="typeInfo"> 
-                                             <object idref="PrimitiveTypeInfo0"/> 
+                                             <object idref="PrimitiveTypeInfo1"/> 
+                                            </void> 
+                                            <void property="value"> 
+                                             <int>100</int> 
                                             </void> 
                                            </object> 
                                           </void> 
                                          </object> 
                                         </void> 
-                                        <void property="methodName"> 
-                                         <string>&gt;</string> 
+                                        <void property="genericUDF"> 
+                                         <object class="org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge"> 
+                                          <void property="operator"> 
+                                           <boolean>true</boolean> 
+                                          </void> 
+                                          <void property="udfClass"> 
+                                           <class>org.apache.hadoop.hive.ql.udf.UDFOPGreaterThan</class> 
+                                          </void> 
+                                          <void property="udfName"> 
+                                           <string>&gt;</string> 
+                                          </void> 
+                                         </object> 
                                         </void> 
                                         <void property="typeInfo"> 
-                                         <object idref="PrimitiveTypeInfo3"/> 
+                                         <object idref="PrimitiveTypeInfo2"/> 
                                         </void> 
                                        </object> 
                                       </void> 
@@ -1134,7 +1036,7 @@
                                                <string>key</string> 
                                               </void> 
                                               <void property="type"> 
-                                               <object idref="PrimitiveTypeInfo1"/> 
+                                               <object idref="PrimitiveTypeInfo0"/> 
                                               </void> 
                                              </object> 
                                             </void> 
@@ -1144,7 +1046,7 @@
                                                <string>value</string> 
                                               </void> 
                                               <void property="type"> 
-                                               <object idref="PrimitiveTypeInfo1"/> 
+                                               <object idref="PrimitiveTypeInfo0"/> 
                                               </void> 
                                              </object> 
                                             </void> 
@@ -1188,7 +1090,7 @@
                                    <string>_col0</string> 
                                   </void> 
                                   <void property="type"> 
-                                   <object idref="PrimitiveTypeInfo1"/> 
+                                   <object idref="PrimitiveTypeInfo0"/> 
                                   </void> 
                                  </object> 
                                 </void> 
@@ -1198,7 +1100,7 @@
                                    <string>_col1</string> 
                                   </void> 
                                   <void property="type"> 
-                                   <object idref="PrimitiveTypeInfo1"/> 
+                                   <object idref="PrimitiveTypeInfo0"/> 
                                   </void> 
                                  </object> 
                                 </void> 
@@ -1220,7 +1122,7 @@
                                <string>_col0</string> 
                               </void> 
                               <void property="type"> 
-                               <object idref="PrimitiveTypeInfo1"/> 
+                               <object idref="PrimitiveTypeInfo0"/> 
                               </void> 
                              </object> 
                             </void> 
@@ -1230,7 +1132,7 @@
                                <string>_col1</string> 
                               </void> 
                               <void property="type"> 
-                               <object idref="PrimitiveTypeInfo1"/> 
+                               <object idref="PrimitiveTypeInfo0"/> 
                               </void> 
                              </object> 
                             </void> 
@@ -1254,7 +1156,7 @@
                          <string>src</string> 
                         </void> 
                         <void property="typeInfo"> 
-                         <object idref="PrimitiveTypeInfo1"/> 
+                         <object idref="PrimitiveTypeInfo0"/> 
                         </void> 
                        </object> 
                       </void> 
@@ -1268,7 +1170,7 @@
                          <string>src</string> 
                         </void> 
                         <void property="typeInfo"> 
-                         <object idref="PrimitiveTypeInfo1"/> 
+                         <object idref="PrimitiveTypeInfo0"/> 
                         </void> 
                        </object> 
                       </void> 
@@ -1326,59 +1228,16 @@
                 <void property="conf"> 
                  <object class="org.apache.hadoop.hive.ql.plan.filterDesc"> 
                   <void property="predicate"> 
-                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                    <void property="UDFClass"> 
-                     <class>org.apache.hadoop.hive.ql.udf.UDFOPLessThan</class> 
-                    </void> 
-                    <void property="UDFMethod"> 
-                     <object id="Method3" class="org.apache.hadoop.hive.ql.udf.UDFOPLessThan" method="getMethod"> 
-                      <string>evaluate</string> 
-                      <array class="java.lang.Class" length="2"> 
-                       <void index="0"> 
-                        <class>org.apache.hadoop.hive.serde2.io.DoubleWritable</class> 
-                       </void> 
-                       <void index="1"> 
-                        <class>org.apache.hadoop.hive.serde2.io.DoubleWritable</class> 
-                       </void> 
-                      </array> 
-                     </object> 
-                    </void> 
+                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeGenericFuncDesc"> 
                     <void property="childExprs"> 
                      <object class="java.util.ArrayList"> 
                       <void method="add"> 
-                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                        <void property="UDFClass"> 
-                         <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                        </void> 
-                        <void property="UDFMethod"> 
-                         <object id="Method4" class="org.apache.hadoop.hive.ql.udf.UDFToDouble" method="getMethod"> 
-                          <string>evaluate</string> 
-                          <array class="java.lang.Class" length="1"> 
-                           <void index="0"> 
-                            <class>org.apache.hadoop.io.Text</class> 
-                           </void> 
-                          </array> 
-                         </object> 
-                        </void> 
-                        <void property="childExprs"> 
-                         <object class="java.util.ArrayList"> 
-                          <void method="add"> 
-                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
-                            <void property="column"> 
-                             <string>key</string> 
-                            </void> 
-                            <void property="tabAlias"> 
-                             <string>src</string> 
-                            </void> 
-                            <void property="typeInfo"> 
-                             <object idref="PrimitiveTypeInfo1"/> 
-                            </void> 
-                           </object> 
-                          </void> 
-                         </object> 
+                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
+                        <void property="column"> 
+                         <string>key</string> 
                         </void> 
-                        <void property="methodName"> 
-                         <string>double</string> 
+                        <void property="tabAlias"> 
+                         <string>src</string> 
                         </void> 
                         <void property="typeInfo"> 
                          <object idref="PrimitiveTypeInfo0"/> 
@@ -1386,49 +1245,32 @@
                        </object> 
                       </void> 
                       <void method="add"> 
-                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                        <void property="UDFClass"> 
-                         <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                        </void> 
-                        <void property="UDFMethod"> 
-                         <object id="Method5" class="org.apache.hadoop.hive.ql.udf.UDFToDouble" method="getMethod"> 
-                          <string>evaluate</string> 
-                          <array class="java.lang.Class" length="1"> 
-                           <void index="0"> 
-                            <class>org.apache.hadoop.io.IntWritable</class> 
-                           </void> 
-                          </array> 
-                         </object> 
-                        </void> 
-                        <void property="childExprs"> 
-                         <object class="java.util.ArrayList"> 
-                          <void method="add"> 
-                           <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
-                            <void property="typeInfo"> 
-                             <object idref="PrimitiveTypeInfo2"/> 
-                            </void> 
-                            <void property="value"> 
-                             <int>100</int> 
-                            </void> 
-                           </object> 
-                          </void> 
-                         </object> 
-                        </void> 
-                        <void property="methodName"> 
-                         <string>double</string> 
-                        </void> 
+                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
                         <void property="typeInfo"> 
-                         <object idref="PrimitiveTypeInfo0"/> 
+                         <object idref="PrimitiveTypeInfo1"/> 
+                        </void> 
+                        <void property="value"> 
+                         <int>100</int> 
                         </void> 
                        </object> 
                       </void> 
                      </object> 
                     </void> 
-                    <void property="methodName"> 
-                     <string>&lt;</string> 
+                    <void property="genericUDF"> 
+                     <object class="org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge"> 
+                      <void property="operator"> 
+                       <boolean>true</boolean> 
+                      </void> 
+                      <void property="udfClass"> 
+                       <class>org.apache.hadoop.hive.ql.udf.UDFOPLessThan</class> 
+                      </void> 
+                      <void property="udfName"> 
+                       <string>&lt;</string> 
+                      </void> 
+                     </object> 
                     </void> 
                     <void property="typeInfo"> 
-                     <object idref="PrimitiveTypeInfo3"/> 
+                     <object idref="PrimitiveTypeInfo2"/> 
                     </void> 
                    </object> 
                   </void> 
@@ -1451,7 +1293,7 @@
                        <string>key</string> 
                       </void> 
                       <void property="type"> 
-                       <object idref="PrimitiveTypeInfo1"/> 
+                       <object idref="PrimitiveTypeInfo0"/> 
                       </void> 
                      </object> 
                     </void> 
@@ -1461,7 +1303,7 @@
                        <string>value</string> 
                       </void> 
                       <void property="type"> 
-                       <object idref="PrimitiveTypeInfo1"/> 
+                       <object idref="PrimitiveTypeInfo0"/> 
                       </void> 
                      </object> 
                     </void> 
@@ -1476,42 +1318,16 @@
             <void property="conf"> 
              <object class="org.apache.hadoop.hive.ql.plan.filterDesc"> 
               <void property="predicate"> 
-               <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                <void property="UDFClass"> 
-                 <class>org.apache.hadoop.hive.ql.udf.UDFOPLessThan</class> 
-                </void> 
-                <void property="UDFMethod"> 
-                 <object idref="Method3"/> 
-                </void> 
+               <object class="org.apache.hadoop.hive.ql.plan.exprNodeGenericFuncDesc"> 
                 <void property="childExprs"> 
                  <object class="java.util.ArrayList"> 
                   <void method="add"> 
-                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                    <void property="UDFClass"> 
-                     <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
+                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
+                    <void property="column"> 
+                     <string>key</string> 
                     </void> 
-                    <void property="UDFMethod"> 
-                     <object idref="Method4"/> 
-                    </void> 
-                    <void property="childExprs"> 
-                     <object class="java.util.ArrayList"> 
-                      <void method="add"> 
-                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeColumnDesc"> 
-                        <void property="column"> 
-                         <string>key</string> 
-                        </void> 
-                        <void property="tabAlias"> 
-                         <string>src</string> 
-                        </void> 
-                        <void property="typeInfo"> 
-                         <object idref="PrimitiveTypeInfo1"/> 
-                        </void> 
-                       </object> 
-                      </void> 
-                     </object> 
-                    </void> 
-                    <void property="methodName"> 
-                     <string>double</string> 
+                    <void property="tabAlias"> 
+                     <string>src</string> 
                     </void> 
                     <void property="typeInfo"> 
                      <object idref="PrimitiveTypeInfo0"/> 
@@ -1519,42 +1335,32 @@
                    </object> 
                   </void> 
                   <void method="add"> 
-                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc"> 
-                    <void property="UDFClass"> 
-                     <class>org.apache.hadoop.hive.ql.udf.UDFToDouble</class> 
-                    </void> 
-                    <void property="UDFMethod"> 
-                     <object idref="Method5"/> 
-                    </void> 
-                    <void property="childExprs"> 
-                     <object class="java.util.ArrayList"> 
-                      <void method="add"> 
-                       <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
-                        <void property="typeInfo"> 
-                         <object idref="PrimitiveTypeInfo2"/> 
-                        </void> 
-                        <void property="value"> 
-                         <int>100</int> 
-                        </void> 
-                       </object> 
-                      </void> 
-                     </object> 
-                    </void> 
-                    <void property="methodName"> 
-                     <string>double</string> 
-                    </void> 
+                   <object class="org.apache.hadoop.hive.ql.plan.exprNodeConstantDesc"> 
                     <void property="typeInfo"> 
-                     <object idref="PrimitiveTypeInfo0"/> 
+                     <object idref="PrimitiveTypeInfo1"/> 
+                    </void> 
+                    <void property="value"> 
+                     <int>100</int> 
                     </void> 
                    </object> 
                   </void> 
                  </object> 
                 </void> 
-                <void property="methodName"> 
-                 <string>&lt;</string> 
+                <void property="genericUDF"> 
+                 <object class="org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge"> 
+                  <void property="operator"> 
+                   <boolean>true</boolean> 
+                  </void> 
+                  <void property="udfClass"> 
+                   <class>org.apache.hadoop.hive.ql.udf.UDFOPLessThan</class> 
+                  </void> 
+                  <void property="udfName"> 
+                   <string>&lt;</string> 
+                  </void> 
+                 </object> 
                 </void> 
                 <void property="typeInfo"> 
-                 <object idref="PrimitiveTypeInfo3"/> 
+                 <object idref="PrimitiveTypeInfo2"/> 
                 </void> 
                </object> 
               </void> 
@@ -1613,7 +1419,7 @@
     <void property="pathToAliases"> 
      <object class="java.util.LinkedHashMap"> 
       <void method="put"> 
-       <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/test/data/warehouse/src</string> 
+       <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/test/data/warehouse/src</string> 
        <object class="java.util.ArrayList"> 
         <void method="add"> 
          <string>null-subquery1:unioninput-subquery1:src</string> 
@@ -1628,7 +1434,7 @@
     <void property="pathToPartitionInfo"> 
      <object class="java.util.LinkedHashMap"> 
       <void method="put"> 
-       <string>file:/data/users/athusoo/commits/hive_trunk_ws1/build/ql/test/data/warehouse/src</string> 
+       <string>file:/data/users/zshao/tools/699-trunk-apache-hive/.ptest_3/build/ql/test/data/warehouse/src</string> 
        <object class="org.apache.hadoop.hive.ql.plan.partitionDesc"> 
         <void property="partSpec"> 
          <object idref="LinkedHashMap0"/> 

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyNonPrimitive.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyNonPrimitive.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyNonPrimitive.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyNonPrimitive.java Fri Aug 14 07:48:02 2009
@@ -52,6 +52,8 @@
     this.bytes = bytes;
     this.start = start;
     this.length = length;
+    assert start >= 0;
+    assert start + length <= bytes.getData().length;
   }
 
   @Override

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorConverters.java Fri Aug 14 07:48:02 2009
@@ -18,6 +18,11 @@
 
 package org.apache.hadoop.hive.serde2.objectinspector;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hadoop.hive.serde2.objectinspector.primitive.JavaStringObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorConverter;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableBooleanObjectInspector;
 import org.apache.hadoop.hive.serde2.objectinspector.primitive.SettableByteObjectInspector;
@@ -35,7 +40,13 @@
    * A converter which will convert objects with one ObjectInspector to another.
    */
   public static interface Converter {
-    public Object convert(Object o);
+    public Object convert(Object input);
+  }
+  
+  public static class IdentityConverter implements Converter {
+    public Object convert(Object input) {
+      return input;
+    }
   }
   
   /**
@@ -44,6 +55,10 @@
    * across different calls.
    */
   public static Converter getConverter(ObjectInspector inputOI, ObjectInspector outputOI) {
+    // If the inputOI is the same as the outputOI, just return an IdentityConverter.
+    if (inputOI == outputOI) {
+      return new IdentityConverter();
+    }
     switch (outputOI.getCategory()) {
       case PRIMITIVE:
         switch (((PrimitiveObjectInspector)outputOI).getPrimitiveCategory()) {
@@ -79,22 +94,207 @@
             if (outputOI instanceof WritableStringObjectInspector) {
               return new PrimitiveObjectInspectorConverter.TextConverter(
                   (PrimitiveObjectInspector)inputOI);
-            } else if  (outputOI instanceof WritableStringObjectInspector) {
-              return new PrimitiveObjectInspectorConverter.TextConverter(
+            } else if  (outputOI instanceof JavaStringObjectInspector) {
+              return new PrimitiveObjectInspectorConverter.StringConverter(
                   (PrimitiveObjectInspector)inputOI);
             }
           default: 
             throw new RuntimeException("Hive internal error: conversion of "
                 + inputOI.getTypeName() + " to " + outputOI.getTypeName() + " not supported yet.");
         }
-      case STRUCT:
-      case LIST:
-      case MAP:
+      case STRUCT: {
+        return new StructConverter((StructObjectInspector)inputOI,
+            (SettableStructObjectInspector)outputOI);
+      }
+      case LIST: {
+        return new ListConverter((ListObjectInspector)inputOI,
+            (SettableListObjectInspector)outputOI);
+      }
+      case MAP: {
+        return new MapConverter((MapObjectInspector)inputOI,
+            (SettableMapObjectInspector)outputOI);
+      }
       default:
         throw new RuntimeException("Hive internal error: conversion of "
             + inputOI.getTypeName() + " to " + outputOI.getTypeName() + " not supported yet.");
     }
   }
   
+  /**
+   * A converter class for List.
+   */
+  public static class ListConverter implements Converter {
+
+    ListObjectInspector inputOI;
+    SettableListObjectInspector outputOI;
+    
+    ObjectInspector inputElementOI;
+    ObjectInspector outputElementOI;
+
+    ArrayList<Converter> elementConverters;
+    
+    Object output;
+    
+    public ListConverter(ListObjectInspector inputOI, SettableListObjectInspector outputOI) {
+      this.inputOI = inputOI;
+      this.outputOI = outputOI;
+      inputElementOI = inputOI.getListElementObjectInspector();
+      outputElementOI = outputOI.getListElementObjectInspector();
+      output = outputOI.create(0);
+      elementConverters = new ArrayList<Converter>();
+    }
+    
+    @Override
+    public Object convert(Object input) {
+      if (input == null) {
+        return null;
+      }
+      // Create enough elementConverters
+      // NOTE: we have to have a separate elementConverter for each element,
+      // because the elementConverters can reuse the internal object.
+      // So it's not safe to use the same elementConverter to convert multiple
+      // elements.
+      int size = inputOI.getListLength(input);
+      while (elementConverters.size() < size) {
+        elementConverters.add(getConverter(inputElementOI, outputElementOI));
+      }
+      
+      // Convert the elements
+      outputOI.resize(output, size);
+      for (int index = 0; index < size; index++) {
+        Object inputElement = inputOI.getListElement(input, index);
+        Object outputElement = elementConverters.get(index).convert(inputElement); 
+        outputOI.set(output, index, outputElement);
+      }
+      return output;
+    }
+    
+  }
+
+
+  /**
+   * A converter class for Struct.
+   */
+  public static class StructConverter implements Converter {
+
+    StructObjectInspector inputOI;
+    SettableStructObjectInspector outputOI;
+    
+    List<? extends StructField> inputFields;
+    List<? extends StructField> outputFields;
+
+    ArrayList<Converter> fieldConverters;
+    
+    Object output;
+    
+    public StructConverter(StructObjectInspector inputOI, SettableStructObjectInspector outputOI) {
+      
+      this.inputOI = inputOI;
+      this.outputOI = outputOI;
+      inputFields = inputOI.getAllStructFieldRefs();
+      outputFields = outputOI.getAllStructFieldRefs();
+      assert(inputFields.size() == outputFields.size());
+      
+      fieldConverters = new ArrayList<Converter>(inputFields.size());
+      for (int f = 0; f < inputFields.size(); f++) {
+        fieldConverters.add(getConverter(
+            inputFields.get(f).getFieldObjectInspector(),
+            outputFields.get(f).getFieldObjectInspector()));
+      }
+      output = outputOI.create();
+    }
+    
+    @Override
+    public Object convert(Object input) {
+      if (input == null) {
+        return null;
+      }
+      
+      // Convert the fields
+      for (int f = 0; f < inputFields.size(); f++) {
+        Object inputFieldValue = inputOI.getStructFieldData(input, 
+            inputFields.get(f));
+        Object outputFieldValue = fieldConverters.get(f)
+            .convert(inputFieldValue); 
+        outputOI.setStructFieldData(output, outputFields.get(f), 
+            outputFieldValue);
+      }
+      return output;
+    }
+  }
+
+  /**
+   * A converter class for Map.
+   */
+  public static class MapConverter implements Converter {
+
+    MapObjectInspector inputOI;
+    SettableMapObjectInspector outputOI;
+    
+    ObjectInspector inputKeyOI;
+    ObjectInspector outputKeyOI;
+
+    ObjectInspector inputValueOI;
+    ObjectInspector outputValueOI;
+    
+    ArrayList<Converter> keyConverters;
+    ArrayList<Converter> valueConverters;
+    
+    Object output;
+    
+    public MapConverter(MapObjectInspector inputOI, SettableMapObjectInspector outputOI) {
+      this.inputOI = inputOI;
+      this.outputOI = outputOI;
+      inputKeyOI = inputOI.getMapKeyObjectInspector();
+      outputKeyOI = outputOI.getMapKeyObjectInspector();
+      inputValueOI = inputOI.getMapValueObjectInspector();
+      outputValueOI = outputOI.getMapValueObjectInspector();
+      keyConverters = new ArrayList<Converter>();
+      valueConverters = new ArrayList<Converter>();
+      output = outputOI.create();
+    }
+    
+    @Override
+    public Object convert(Object input) {
+      if (input == null) {
+        return null;
+      }
+      // Create enough keyConverters/valueConverters
+      // NOTE: we have to have a separate key/valueConverter for each key/value,
+      // because the key/valueConverters can reuse the internal object.
+      // So it's not safe to use the same key/valueConverter to convert multiple
+      // key/values.
+      
+      // NOTE: This code tries to get all key-value pairs out of the map.
+      // It's not very efficient. The more efficient way should be to let MapOI
+      // return an Iterator.  This is currently not supported by MapOI yet.
+      
+      Map<?, ?> map = inputOI.getMap(input);
+      int size = map.size();
+      
+      while (keyConverters.size() < size) {
+        keyConverters.add(getConverter(inputKeyOI, outputKeyOI));
+        valueConverters.add(getConverter(inputValueOI, outputValueOI));
+      }
+      
+      // CLear the output
+      outputOI.clear(output);
+      
+      // Convert the key/value pairs
+      int entryID = 0;
+      for (Map.Entry<?, ?> entry: map.entrySet()) {
+        Object inputKey = entry.getKey();
+        Object inputValue = entry.getValue();
+        Object outputKey = keyConverters.get(entryID).convert(inputKey);
+        Object outputValue = valueConverters.get(entryID).convert(inputValue);
+        entryID ++;
+        outputOI.put(output, outputKey, outputValue);
+      }
+      return output;
+    }
+    
+  }
+
+  
   
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java Fri Aug 14 07:48:02 2009
@@ -103,7 +103,8 @@
     
     // Must be a class.
     if (!(t instanceof Class)) {
-      throw new RuntimeException(ObjectInspectorFactory.class.getName() + ": internal error."); 
+      throw new RuntimeException(ObjectInspectorFactory.class.getName() + " internal error:"
+          + t); 
     }
     Class<?> c = (Class<?>)t;
     

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.hadoop.util.ReflectionUtils;
+
 /**
  * ReflectionStructObjectInspector works on struct data that is stored as a native Java object.
  * It will drill down into the Java class to get the fields and construct ObjectInspectors for 
@@ -32,7 +34,7 @@
  * of directly creating an instance of this class. 
  *
  */
-public class ReflectionStructObjectInspector extends StructObjectInspector {
+public class ReflectionStructObjectInspector extends SettableStructObjectInspector {
 
   public static class MyField implements StructField {
     protected Field field;
@@ -56,10 +58,6 @@
   Class<?> objectClass;
   List<MyField> fields;
   
-  public ReflectionStructObjectInspector(Class<?> objectClass, List<ObjectInspector> structFieldObjectInspectors) {
-    init(objectClass, structFieldObjectInspectors);
-  }
-
   public Category getCategory() {
     return Category.STRUCT;
   }
@@ -144,4 +142,22 @@
     }
   }
 
+  @Override
+  public Object create() {
+    return ReflectionUtils.newInstance(objectClass, null);
+  }
+
+  @Override
+  public Object setStructFieldData(Object struct, StructField field,
+      Object fieldValue) {
+    MyField myField = (MyField)field;
+    try {
+      myField.field.set(struct, fieldValue);
+    } catch (Exception e) {
+      throw new RuntimeException("cannot set field " + myField.field + " of " 
+          + struct.getClass() + " " + struct, e); 
+    }
+    return struct;
+  }
+
 }

Added: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableListObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableListObjectInspector.java?rev=804106&view=auto
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableListObjectInspector.java (added)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableListObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -0,0 +1,44 @@
+/**
+ * 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.serde2.objectinspector;
+
+
+public interface SettableListObjectInspector extends ListObjectInspector {
+
+  /**
+   * Create a list with the given size. All elements will be null.
+   * 
+   * NOTE: This is different from ArrayList constructor where the argument
+   * is capacity.  We decided to have size here to allow creation of Java
+   * array. 
+   */
+  Object create(int size);
+  
+  /**
+   * Set the element at index. Returns the list.
+   */
+  Object set(Object list, int index, Object element);
+  
+  /**
+   * Resize the list. Returns the list.
+   * If the new size is bigger than the current size, new elements will
+   * be null.  If the new size is smaller than the current size, elements
+   * at the end are truncated.
+   */
+  Object resize(Object list, int newSize);
+}

Added: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableMapObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableMapObjectInspector.java?rev=804106&view=auto
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableMapObjectInspector.java (added)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableMapObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -0,0 +1,41 @@
+/**
+ * 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.serde2.objectinspector;
+
+public interface SettableMapObjectInspector extends MapObjectInspector {
+
+  /**
+   * Create an empty map.
+   */
+  public Object create();
+  
+  /**
+   * Add a key-value pair to the map. Return the map.
+   */
+  public Object put(Object map, Object key, Object value);
+  
+  /**
+   * Remove a key-value pair from the map. Return the map.
+   */
+  public Object remove(Object map, Object key);
+  
+  /**
+   * Clear the map. Return the map.
+   */
+  public Object clear(Object map);
+}

Added: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableStructObjectInspector.java?rev=804106&view=auto
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableStructObjectInspector.java (added)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SettableStructObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -0,0 +1,31 @@
+/**
+ * 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.serde2.objectinspector;
+
+public abstract class SettableStructObjectInspector extends StructObjectInspector {
+  
+  /**
+   * Create a struct which is not null, but all its fields are null.
+   */
+  public abstract Object create();
+  
+  /**
+   * Modify the value of a field.  Returns the struct.
+   */
+  public abstract Object setStructFieldData(Object struct, StructField field, Object fieldValue);
+}

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardListObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.serde2.objectinspector;
 
+import java.util.ArrayList;
 import java.util.List;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 
@@ -27,7 +28,7 @@
  * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
  * of directly creating an instance of this class. 
  */
-public class StandardListObjectInspector implements ListObjectInspector {
+public class StandardListObjectInspector implements SettableListObjectInspector {
 
   ObjectInspector listElementObjectInspector;
   
@@ -101,4 +102,34 @@
         + "<" + listElementObjectInspector.getTypeName() + ">";
   }
 
+  ///////////////////////////////
+  // SettableListObjectInspector
+  @Override
+  public Object create(int size) {
+    List<Object> a = new ArrayList<Object>(size);
+    for (int i=0; i<size; i++) {
+      a.add(null);
+    }
+    return a;
+  }
+
+  @Override
+  public Object resize(Object list, int newSize) {
+    List<Object> a = (List<Object>)list;
+    while (a.size() < newSize) {
+      a.add(null);
+    }
+    while (a.size() > newSize) {
+      a.remove(a.size()-1);
+    }
+    return a;
+  }
+
+  @Override
+  public Object set(Object list, int index, Object element) {
+    List<Object> a = (List<Object>)list;
+    a.set(index, element);
+    return a;
+  }
+
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardMapObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardMapObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardMapObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardMapObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hive.serde2.objectinspector;
 
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -32,7 +33,7 @@
  * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
  * of directly creating an instance of this class. 
  */
-public class StandardMapObjectInspector implements MapObjectInspector {
+public class StandardMapObjectInspector implements SettableMapObjectInspector {
 
   ObjectInspector mapKeyObjectInspector;
   ObjectInspector mapValueObjectInspector;
@@ -81,4 +82,33 @@
         + mapValueObjectInspector.getTypeName() + ">";
   }
 
+  ///////////////////////////////
+  // SettableMapObjectInspector
+  @Override
+  public Object create() {
+    Map<Object, Object> m = new HashMap<Object, Object>();
+    return m;
+  }
+
+  @Override
+  public Object clear(Object map) {
+    Map<Object, Object> m = (HashMap<Object, Object>)map;
+    m.clear();
+    return m;
+  }
+
+  @Override
+  public Object put(Object map, Object key, Object value) {
+    Map<Object, Object> m = (HashMap<Object, Object>)map;
+    m.put(key, value);
+    return m;
+  }
+
+  @Override
+  public Object remove(Object map, Object key) {
+    Map<Object, Object> m = (HashMap<Object, Object>)map;
+    m.remove(key);
+    return m;
+  }
+
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -35,7 +35,7 @@
  * Always use the ObjectInspectorFactory to create new ObjectInspector objects, instead
  * of directly creating an instance of this class. 
  */
-public class StandardStructObjectInspector extends StructObjectInspector {
+public class StandardStructObjectInspector extends SettableStructObjectInspector {
 
   public static final Log LOG = LogFactory.getLog(StandardStructObjectInspector.class.getName());
   
@@ -159,5 +159,23 @@
     return list;
   }
 
+  ///////////////////////////////
+  // SettableStructObjectInspector
+  @Override
+  public Object create() {
+    ArrayList<Object> a = new ArrayList<Object>(fields.size());
+    for (int i=0; i<fields.size(); i++) {
+      a.add(null);
+    }
+    return a;
+  }
+
+  @Override
+  public Object setStructFieldData(Object struct, StructField field, Object fieldValue) {
+    ArrayList<Object> a = (ArrayList<Object>)struct;
+    MyField myField = (MyField)field;
+    a.set(myField.fieldID, fieldValue);
+    return a;
+  }
   
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftStructObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftStructObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftStructObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ThriftStructObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -30,17 +30,4 @@
     return "__isset".equals(name);
   }
   
-  public boolean equals(Object b) {
-    if (this == b) return true;
-    if (!b.getClass().equals(this.getClass())) {
-      return false;
-    }
-    ThriftStructObjectInspector bInspector = (ThriftStructObjectInspector)b;
-    return objectClass.equals(bInspector.objectClass);
-  }
-
-  public int hashCode() {
-    return 7 * objectClass.hashCode(); 
-  }
-    
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBooleanObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBooleanObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBooleanObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaBooleanObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaBooleanObjectInspector inspects a Java Boolean Object.
  */
 public class JavaBooleanObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements BooleanObjectInspector{
+implements SettableBooleanObjectInspector{
 
   JavaBooleanObjectInspector() {
     super(PrimitiveObjectInspectorUtils.booleanTypeEntry);
@@ -39,4 +39,14 @@
   public boolean get(Object o) {
     return ((Boolean)o).booleanValue();
   }
+
+  @Override
+  public Object create(boolean value) {
+    return value ? Boolean.TRUE : Boolean.FALSE;
+  }
+
+  @Override
+  public Object set(Object o, boolean value) {
+    return value ? Boolean.TRUE : Boolean.FALSE;
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaByteObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaByteObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaByteObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaByteObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaByteObjectInspector inspects a Java Byte Object.
  */
 public class JavaByteObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements ByteObjectInspector{
+implements SettableByteObjectInspector{
 
   JavaByteObjectInspector() {
     super(PrimitiveObjectInspectorUtils.byteTypeEntry);
@@ -39,4 +39,14 @@
   public byte get(Object o) {
     return ((Byte)o).byteValue();
   }
+
+  @Override
+  public Object create(byte value) {
+    return Byte.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, byte value) {
+    return Byte.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaDoubleObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaDoubleObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaDoubleObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaDoubleObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaDoubleObjectInspector inspects a Java Double Object.
  */
 public class JavaDoubleObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements DoubleObjectInspector{
+implements SettableDoubleObjectInspector{
 
   JavaDoubleObjectInspector() {
     super(PrimitiveObjectInspectorUtils.doubleTypeEntry);
@@ -39,4 +39,14 @@
   public double get(Object o) {
     return ((Double)o).doubleValue();
   }
+
+  @Override
+  public Object create(double value) {
+    return Double.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, double value) {
+    return Double.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaFloatObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaFloatObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaFloatObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaFloatObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaFloatObjectInspector inspects a Java Float Object.
  */
 public class JavaFloatObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements FloatObjectInspector{
+implements SettableFloatObjectInspector{
 
   JavaFloatObjectInspector() {
     super(PrimitiveObjectInspectorUtils.floatTypeEntry);
@@ -39,4 +39,14 @@
   public float get(Object o) {
     return ((Float)o).floatValue();
   }
+
+  @Override
+  public Object create(float value) {
+    return Float.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, float value) {
+    return Float.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaIntObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaIntObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaIntObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaIntObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaIntObjectInspector inspects a Java Integer Object.
  */
 public class JavaIntObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements IntObjectInspector{
+implements SettableIntObjectInspector{
 
   JavaIntObjectInspector() {
     super(PrimitiveObjectInspectorUtils.intTypeEntry);
@@ -39,4 +39,14 @@
   public int get(Object o) {
     return ((Integer)o).intValue();
   }
+
+  @Override
+  public Object create(int value) {
+    return Integer.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, int value) {
+    return Integer.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaLongObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaLongObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaLongObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaLongObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaLongObjectInspector inspects a Java Long Object.
  */
 public class JavaLongObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements LongObjectInspector{
+implements SettableLongObjectInspector{
 
   JavaLongObjectInspector() {
     super(PrimitiveObjectInspectorUtils.longTypeEntry);
@@ -39,4 +39,14 @@
   public long get(Object o) {
     return ((Long)o).longValue();
   }
+
+  @Override
+  public Object create(long value) {
+    return Long.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, long value) {
+    return Long.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaShortObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaShortObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaShortObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaShortObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaShortObjectInspector inspects a Java Short Object.
  */
 public class JavaShortObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements ShortObjectInspector{
+implements SettableShortObjectInspector{
 
   JavaShortObjectInspector() {
     super(PrimitiveObjectInspectorUtils.shortTypeEntry);
@@ -39,4 +39,14 @@
   public short get(Object o) {
     return ((Short)o).shortValue();
   }
+
+  @Override
+  public Object create(short value) {
+    return Short.valueOf(value);
+  }
+
+  @Override
+  public Object set(Object o, short value) {
+    return Short.valueOf(value);
+  }
 }

Modified: hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java?rev=804106&r1=804105&r2=804106&view=diff
==============================================================================
--- hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java (original)
+++ hadoop/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java Fri Aug 14 07:48:02 2009
@@ -24,7 +24,7 @@
  * A JavaStringObjectInspector inspects a Java String Object.
  */
 public class JavaStringObjectInspector extends AbstractPrimitiveJavaObjectInspector 
-implements StringObjectInspector{
+implements SettableStringObjectInspector{
 
   JavaStringObjectInspector() {
     super(PrimitiveObjectInspectorUtils.stringTypeEntry);
@@ -39,4 +39,24 @@
   public String getPrimitiveJavaObject(Object o) {
     return (String)o;
   }
+
+  @Override
+  public Object create(Text value) {
+    return value == null ? null : value.toString();
+  }
+
+  @Override
+  public Object set(Object o, Text value) {
+    return value == null ? null : value.toString();
+  }
+
+  @Override
+  public Object create(String value) {
+    return value;
+  }
+
+  @Override
+  public Object set(Object o, String value) {
+    return value;
+  }
 }