Index: ql/src/test/results/clientpositive/describe_function.q.out =================================================================== --- ql/src/test/results/clientpositive/describe_function.q.out (revision 0) +++ ql/src/test/results/clientpositive/describe_function.q.out (revision 0) @@ -0,0 +1,55 @@ +query: DESCRIBE FUNCTION abs +abs(x) - returns the absolute value of x +query: DESCRIBE FUNCTION acos +acos(x) - returns the arc cosine of x if -1<=x<=1 or NULL otherwise +query: DESCRIBE FUNCTION asin +asin(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise +query: DESCRIBE FUNCTION date_add +date_add(start_date, num_days) - Returns the date that is num_days after start_date. +query: DESCRIBE FUNCTION parse_url +parse_url(url, partToExtract[, key]) - extracts a part from a URL +query: DESCRIBE FUNCTION split +split(str, regex) - Splits str around occurances that match regex +query: DESCRIBE FUNCTION EXTENDED abs +abs(x) - returns the absolute value of x +Example: + > SELECT abs(0) FROM src LIMIT 1; + 0 + > SELECT abs(-5) FROM src LIMIT 1; + 5 +query: DESCRIBE FUNCTION EXTENDED acos +acos(x) - returns the arc cosine of x if -1<=x<=1 or NULL otherwise +Example: + > SELECT acos(1) FROM src LIMIT 1; + 0 + > SELECT acos(2) FROM src LIMIT 1; + NULL +query: DESCRIBE FUNCTION EXTENDED asin +asin(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise +Example: + > SELECT asin(0) FROM src LIMIT 1; + 0 + > SELECT asin(2) FROM src LIMIT 1; + NULL +query: DESCRIBE FUNCTION EXTENDED date_add +date_add(start_date, num_days) - Returns the date that is num_days after start_date. +start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. num_days is a number. The time part of start_date is ignored. +Example: + > SELECT date_add('2009-30-07', 1) FROM src LIMIT 1; + '2009-31-07' +query: DESCRIBE FUNCTION EXTENDED parse_url +parse_url(url, partToExtract[, key]) - extracts a part from a URL +Parts: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO +key specifies which query to extract +Example: + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'HOST') FROM src LIMIT 1; + 'facebook.com' + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY') FROM src LIMIT 1; + 'query=1' + > SELECT parse_url('http://facebook.com/path/p1.php?query=1', 'QUERY', 'query') FROM src LIMIT 1; + '1' +query: DESCRIBE FUNCTION EXTENDED split +split(str, regex) - Splits str around occurances that match regex +Example: + > SELECT split('oneAtwoBthreeC', '[ABC]') FROM src LIMIT 1; + ["one", "two", "three"] Index: ql/src/test/queries/clientpositive/describe_function.q =================================================================== --- ql/src/test/queries/clientpositive/describe_function.q (revision 0) +++ ql/src/test/queries/clientpositive/describe_function.q (revision 0) @@ -0,0 +1,13 @@ +DESCRIBE FUNCTION abs; +DESCRIBE FUNCTION acos; +DESCRIBE FUNCTION asin; +DESCRIBE FUNCTION date_add; +DESCRIBE FUNCTION parse_url; +DESCRIBE FUNCTION split; + +DESCRIBE FUNCTION EXTENDED abs; +DESCRIBE FUNCTION EXTENDED acos; +DESCRIBE FUNCTION EXTENDED asin; +DESCRIBE FUNCTION EXTENDED date_add; +DESCRIBE FUNCTION EXTENDED parse_url; +DESCRIBE FUNCTION EXTENDED split; Index: ql/src/java/org/apache/hadoop/hive/ql/exec/description.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/description.java (revision 0) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/description.java (revision 0) @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.exec; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface description { + String value() default "_FUNC_ is undocumented"; + String extended() default ""; + String name() default ""; +} Index: ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (working copy) @@ -29,8 +29,8 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.SortedSet; -import java.util.Set; import java.util.TreeSet; import java.util.Map.Entry; @@ -45,7 +45,6 @@ import org.apache.hadoop.hive.metastore.api.InvalidOperationException; import org.apache.hadoop.hive.metastore.api.Order; import org.apache.hadoop.hive.metastore.api.StorageDescriptor; -import org.apache.hadoop.hive.ql.exec.FunctionRegistry; import org.apache.hadoop.hive.ql.metadata.CheckResult; import org.apache.hadoop.hive.ql.metadata.Hive; import org.apache.hadoop.hive.ql.metadata.HiveException; @@ -59,19 +58,20 @@ import org.apache.hadoop.hive.ql.plan.alterTableDesc; import org.apache.hadoop.hive.ql.plan.createTableDesc; import org.apache.hadoop.hive.ql.plan.createTableLikeDesc; +import org.apache.hadoop.hive.ql.plan.descFunctionDesc; import org.apache.hadoop.hive.ql.plan.descTableDesc; import org.apache.hadoop.hive.ql.plan.dropTableDesc; +import org.apache.hadoop.hive.ql.plan.showFunctionsDesc; import org.apache.hadoop.hive.ql.plan.showPartitionsDesc; import org.apache.hadoop.hive.ql.plan.showTablesDesc; -import org.apache.hadoop.hive.ql.plan.showFunctionsDesc; import org.apache.hadoop.hive.serde.Constants; +import org.apache.hadoop.hive.serde2.Deserializer; import org.apache.hadoop.hive.serde2.MetadataTypedColumnsetSerDe; +import org.apache.hadoop.hive.serde2.SerDeException; +import org.apache.hadoop.hive.serde2.SerDeUtils; import org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe; import org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe; import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe; -import org.apache.hadoop.hive.serde2.Deserializer; -import org.apache.hadoop.hive.serde2.SerDeUtils; -import org.apache.hadoop.hive.serde2.SerDeException; import org.apache.hadoop.util.StringUtils; /** @@ -132,6 +132,11 @@ if (descTbl != null) { return describeTable(db, descTbl); } + + descFunctionDesc descFunc = work.getDescFunctionDesc(); + if (descFunc != null) { + return describeFunction(descFunc); + } showTablesDesc showTbls = work.getShowTblsDesc(); if (showTbls != null) { @@ -415,6 +420,55 @@ } /** + * Shows a description of a function. + * + * @param descFunc is the function we are describing + * @throws HiveException + */ + private int describeFunction(descFunctionDesc descFunc) + throws HiveException { + String name = descFunc.getName(); + + // write the results in the file + try { + FileSystem fs = descFunc.getResFile().getFileSystem(conf); + DataOutput outStream = (DataOutput)fs.create(descFunc.getResFile()); + + // get the function documentation + description desc = null; + FunctionInfo fi = FunctionRegistry.getFunctionInfo(name); + if(fi.getUDFClass() != null) { + desc = fi.getUDFClass().getAnnotation(description.class); + } else if(fi.getGenericUDFClass() != null) { + desc = fi.getGenericUDFClass().getAnnotation(description.class); + } + + if (desc != null) { + outStream.writeBytes(desc.value().replace("_FUNC_", name)); + if(descFunc.isExtended() && desc.extended().length()>0) { + outStream.writeBytes("\n"+desc.extended().replace("_FUNC_", name)); + } + } else { + outStream.writeBytes("Function " + name + " does not exist or cannot" + + " find documentation for it."); + } + + outStream.write(terminator); + + ((FSDataOutputStream)outStream).close(); + } catch (FileNotFoundException e) { + LOG.warn("describe function: " + StringUtils.stringifyException(e)); + return 1; + } catch (IOException e) { + LOG.warn("describe function: " + StringUtils.stringifyException(e)); + return 1; + } catch (Exception e) { + throw new HiveException(e.toString()); + } + return 0; + } + + /** * Write the description of a table to a file. * * @param db The database in question. Index: ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/plan/DDLWork.java (working copy) @@ -28,6 +28,7 @@ private alterTableDesc alterTblDesc; private showTablesDesc showTblsDesc; private showFunctionsDesc showFuncsDesc; + private descFunctionDesc descFunctionDesc; private showPartitionsDesc showPartsDesc; private descTableDesc descTblDesc; private AddPartitionDesc addPartitionDesc; @@ -83,6 +84,13 @@ public DDLWork(showFunctionsDesc showFuncsDesc) { this.showFuncsDesc = showFuncsDesc; } + + /** + * @param descFuncDesc + */ + public DDLWork(descFunctionDesc descFuncDesc) { + this.descFunctionDesc = descFuncDesc; + } /** * @param showPartsDesc @@ -185,6 +193,14 @@ public showFunctionsDesc getShowFuncsDesc() { return showFuncsDesc; } + + /** + * @return the descFuncDesc + */ + @explain(displayName="Show Function Operator") + public descFunctionDesc getDescFunctionDesc() { + return descFunctionDesc; + } /** * @param showFuncsDesc the showFuncsDesc to set @@ -192,6 +208,13 @@ public void setShowFuncsDesc(showFunctionsDesc showFuncsDesc) { this.showFuncsDesc = showFuncsDesc; } + + /** + * @param showFuncsDesc the showFuncsDesc to set + */ + public void setDescFuncDesc(descFunctionDesc descFuncDesc) { + this.descFunctionDesc = descFuncDesc; + } /** * @return the showPartsDesc Index: ql/src/java/org/apache/hadoop/hive/ql/plan/descFunctionDesc.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/plan/descFunctionDesc.java (revision 0) +++ ql/src/java/org/apache/hadoop/hive/ql/plan/descFunctionDesc.java (revision 0) @@ -0,0 +1,106 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hive.ql.plan; + +import java.io.Serializable; +import org.apache.hadoop.fs.Path; + +@explain(displayName="Describe Function") +public class descFunctionDesc extends ddlDesc implements Serializable +{ + private static final long serialVersionUID = 1L; + String name; + Path resFile; + boolean isExtended; + + public boolean isExtended() { + return isExtended; + } + + public void setExtended(boolean isExtended) { + this.isExtended = isExtended; + } + + /** + * table name for the result of show tables + */ + private final String table = "show"; + /** + * thrift ddl for the result of show tables + */ + private final String schema = "tab_name#string"; + + public String getTable() { + return table; + } + + public String getSchema() { + return schema; + } + + /** + * @param resFile + */ + public descFunctionDesc(Path resFile) { + this.resFile = resFile; + name = null; + } + + /** + * @param name of the function to describe + */ + public descFunctionDesc(Path resFile, String name, boolean isExtended) { + this.isExtended = isExtended; + this.resFile = resFile; + this.name = name; + } + + /** + * @return the name + */ + @explain(displayName="name") + public String getName() { + return name; + } + + /** + * @param name is the function name + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the resFile + */ + public Path getResFile() { + return resFile; + } + + @explain(displayName="result file", normalExplain=false) + public String getResFileString() { + return getResFile().getName(); + } + /** + * @param resFile the resFile to set + */ + public void setResFile(Path resFile) { + this.resFile = resFile; + } +} Index: ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/Hive.g (working copy) @@ -82,6 +82,7 @@ TOK_CREATETABLE; TOK_LIKETABLE; TOK_DESCTABLE; +TOK_DESCFUNCTION; TOK_ALTERTABLE_RENAME; TOK_ALTERTABLE_ADDCOLS; TOK_ALTERTABLE_REPLACECOLS; @@ -298,7 +299,8 @@ descStatement @init { msgs.push("describe statement"); } @after { msgs.pop(); } - : KW_DESCRIBE (isExtended=KW_EXTENDED)? (parttype=partTypeExpr) -> ^(TOK_DESCTABLE $parttype $isExtended?) + : KW_DESCRIBE (isExtended=KW_EXTENDED)? (parttype=partTypeExpr) -> ^(TOK_DESCTABLE $parttype $isExtended?) + | KW_DESCRIBE KW_FUNCTION KW_EXTENDED? Identifier -> ^(TOK_DESCFUNCTION Identifier KW_EXTENDED?) ; showStatement Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzerFactory.java (working copy) @@ -32,7 +32,8 @@ case HiveParser.TOK_LOAD: return new LoadSemanticAnalyzer(conf); case HiveParser.TOK_CREATETABLE: case HiveParser.TOK_DROPTABLE: - case HiveParser.TOK_DESCTABLE: + case HiveParser.TOK_DESCTABLE: + case HiveParser.TOK_DESCFUNCTION: case HiveParser.TOK_MSCK: case HiveParser.TOK_ALTERTABLE_ADDCOLS: case HiveParser.TOK_ALTERTABLE_REPLACECOLS: Index: ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.parse; +import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -32,42 +33,40 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hive.common.JavaUtils; import org.apache.hadoop.hive.conf.HiveConf; -import org.apache.hadoop.hive.common.JavaUtils; import org.apache.hadoop.hive.metastore.MetaStoreUtils; import org.apache.hadoop.hive.metastore.api.FieldSchema; import org.apache.hadoop.hive.metastore.api.Order; -import org.apache.hadoop.hive.ql.Context; +import org.apache.hadoop.hive.ql.exec.Task; import org.apache.hadoop.hive.ql.exec.TaskFactory; -import org.apache.hadoop.hive.ql.plan.AddPartitionDesc; -import org.apache.hadoop.hive.ql.plan.MsckDesc; import org.apache.hadoop.hive.ql.io.HiveFileFormatUtils; import org.apache.hadoop.hive.ql.io.HiveOutputFormat; import org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat; import org.apache.hadoop.hive.ql.io.RCFileInputFormat; import org.apache.hadoop.hive.ql.io.RCFileOutputFormat; +import org.apache.hadoop.hive.ql.plan.AddPartitionDesc; import org.apache.hadoop.hive.ql.plan.DDLWork; +import org.apache.hadoop.hive.ql.plan.MsckDesc; import org.apache.hadoop.hive.ql.plan.alterTableDesc; import org.apache.hadoop.hive.ql.plan.createTableDesc; import org.apache.hadoop.hive.ql.plan.createTableLikeDesc; +import org.apache.hadoop.hive.ql.plan.descFunctionDesc; import org.apache.hadoop.hive.ql.plan.descTableDesc; import org.apache.hadoop.hive.ql.plan.dropTableDesc; +import org.apache.hadoop.hive.ql.plan.fetchWork; +import org.apache.hadoop.hive.ql.plan.showFunctionsDesc; import org.apache.hadoop.hive.ql.plan.showPartitionsDesc; import org.apache.hadoop.hive.ql.plan.showTablesDesc; -import org.apache.hadoop.hive.ql.plan.showFunctionsDesc; +import org.apache.hadoop.hive.ql.plan.tableDesc; import org.apache.hadoop.hive.ql.plan.alterTableDesc.alterTableTypes; import org.apache.hadoop.hive.serde.Constants; import org.apache.hadoop.hive.serde2.SerDeUtils; -import org.apache.hadoop.hive.ql.plan.fetchWork; -import org.apache.hadoop.hive.ql.plan.tableDesc; import org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe; -import org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe; import org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe; -import org.apache.hadoop.mapred.TextInputFormat; -import org.apache.hadoop.hive.ql.exec.Task; -import java.io.Serializable; import org.apache.hadoop.mapred.SequenceFileInputFormat; import org.apache.hadoop.mapred.SequenceFileOutputFormat; +import org.apache.hadoop.mapred.TextInputFormat; public class DDLSemanticAnalyzer extends BaseSemanticAnalyzer { private static final Log LOG = LogFactory.getLog("hive.ql.parse.DDLSemanticAnalyzer"); @@ -120,6 +119,9 @@ } else if (ast.getToken().getType() == HiveParser.TOK_SHOWFUNCTIONS) { ctx.setResFile(new Path(ctx.getLocalTmpFileURI())); analyzeShowFunctions(ast); + } else if (ast.getToken().getType() == HiveParser.TOK_DESCFUNCTION) { + ctx.setResFile(new Path(ctx.getLocalTmpFileURI())); + analyzeDescFunction(ast); } else if (ast.getToken().getType() == HiveParser.TOK_MSCK) { ctx.setResFile(new Path(ctx.getLocalTmpFileURI())); analyzeMetastoreCheck(ast); @@ -594,7 +596,34 @@ rootTasks.add(TaskFactory.get(new DDLWork(showFuncsDesc), conf)); setFetchTask(createFetchTask(showFuncsDesc.getSchema())); } + + /** + * Add the task according to the parsed command tree. + * This is used for the CLI command "DESCRIBE FUNCTION;". + * @param ast The parsed command tree. + * @throws SemanticException Parsing failed + */ + private void analyzeDescFunction(ASTNode ast) + throws SemanticException { + String funcName; + boolean isExtended; + + if(ast.getChildCount() == 1) { + funcName = ast.getChild(0).getText(); + isExtended = false; + } else if(ast.getChildCount() == 2) { + funcName = ast.getChild(0).getText(); + isExtended = true; + } else { + throw new SemanticException("Unexpected Tokens at DESCRIBE FUNCTION"); + } + descFunctionDesc descFuncDesc = new descFunctionDesc(ctx.getResFile(), + funcName, isExtended); + rootTasks.add(TaskFactory.get(new DDLWork(descFuncDesc), conf)); + setFetchTask(createFetchTask(descFuncDesc.getSchema())); + } + private void analyzeAlterTableRename(ASTNode ast) throws SemanticException { alterTableDesc alterTblDesc = new alterTableDesc( Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFYear.java (working copy) @@ -26,10 +26,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "year", + value = "_FUNC_(date) - Returns the year of date", + extended = "date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or " + + "'yyyy-MM-dd'.\n" + + "Example:\n " + + " > SELECT _FUNC_('2009-30-07', 1) FROM src LIMIT 1;\n" + + " 2009" + ) public class UDFYear extends UDF { private static Log LOG = LogFactory.getLog(UDFYear.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPositive.java (working copy) @@ -21,6 +21,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -28,7 +29,10 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "positive", + value = "_FUNC_ a - Returns a" +) public class UDFOPPositive extends UDFBaseNumericUnaryOp { private static Log LOG = LogFactory.getLog(UDFOPPositive.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPGreaterThan.java (working copy) @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -31,7 +32,10 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = ">", + value = "a _FUNC_ b - Returns TRUE if a is greater than b" +) public class UDFOPGreaterThan extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPGreaterThan.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog2.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "log2", + value = "_FUNC_(x) - Returns the logarithm of x with base 2", + extended = "Example:\n" + + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + + " 1" + ) public class UDFLog2 extends UDF { private static Log LOG = LogFactory.getLog(UDFLog2.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAbs.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAbs.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAbs.java (working copy) @@ -19,10 +19,20 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; +import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; -import org.apache.hadoop.io.IntWritable; +@description( + name = "abs", + value = "_FUNC_(x) - returns the absolute value of x", + extended = "Example:\n" + + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + + " 0\n" + + " > SELECT _FUNC_(-5) FROM src LIMIT 1;\n" + + " 5" + ) public class UDFAbs extends UDF { private DoubleWritable resultDouble = new DoubleWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConv.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConv.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConv.java (working copy) @@ -20,10 +20,23 @@ import java.util.Arrays; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; +@description( + name = "conv", + value="_FUNC_(num, from_base, to_base) - convert num from from_base to" + + " to_base", + extended="If to_base is negative, treat num as a signed integer," + + "otherwise, treat it as an unsigned integer.\n" + + "Example:\n" + + " > SELECT _FUNC_('100', 2, 10) FROM src LIMIT 1;\n" + + " '4'\n" + + " > SELECT _FUNC_(-10, 16, -10) FROM src LIMIT 1;\n" + + " '16'" + ) public class UDFConv extends UDF { private Text result = new Text(); private byte[] value = new byte[64]; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBin.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBin.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFBin.java (working copy) @@ -21,9 +21,18 @@ import java.util.Arrays; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; +@description( + name = "bin", + value = "_FUNC_(n) - returns n in binary", + extended = "n is a BIGINT. Returns NULL if n is NULL.\n" + + "Example:\n" + + " > SELECT _FUNC_(13) FROM src LIMIT 1\n" + + " '1101'" + ) public class UDFBin extends UDF { private Text result = new Text(); byte[] value = new byte[64]; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrLessThan.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -29,7 +30,10 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = "<=", + value = "a _FUNC_ b - Returns TRUE if b is not greater than a" +) public class UDFOPEqualOrLessThan extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPEqualOrLessThan.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDate.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDate.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDate.java (working copy) @@ -26,9 +26,17 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; - +@description( + name = "to_date", + value = "_FUNC_(expr) - Extracts the date part of the date or datetime " + + "expression expr", + extended = "Example:\n " + + " > SELECT _FUNC_('2009-30-07 04:17:52') FROM src LIMIT 1;\n" + + " '2009-30-07'" + ) public class UDFDate extends UDF { private static Log LOG = LogFactory.getLog(UDFDate.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitOr.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitOr.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitOr.java (working copy) @@ -20,12 +20,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "|", + value = "a _FUNC_ b - Bitwise or", + extended = "Example:\n" + + " > SELECT 3 _FUNC_ 5 FROM src LIMIT 1;\n" + + " 7" +) public class UDFOPBitOr extends UDFBaseBitOP { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPBitOr"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMultiply.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -27,7 +28,10 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "*", + value = "a _FUNC_ b - Multiplies a by b" +) public class UDFOPMultiply extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPMultiply"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java (working copy) @@ -19,10 +19,24 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "substr,substring", + value = "_FUNC_(str, pos[, len]) - returns the substring of str that" + + " starts at pos and is of length len", + extended = "pos is a 1-based index. If pos<0 the starting position is" + + " determined by counting backwards from the end of str.\n" + + "Example:\n " + + " > SELECT _FUNC_('Facebook', 5) FROM src LIMIT 1;\n" + + " 'book'\n" + + " > SELECT _FUNC_('Facebook', -5) FROM src LIMIT 1;\n" + + " 'ebook'\n" + + " > SELECT _FUNC_('Facebook', 5, 1) FROM src LIMIT 1;\n" + + " 'b'" + ) public class UDFSubstr extends UDF { Text r; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFHex.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFHex.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFHex.java (working copy) @@ -19,10 +19,22 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = "hex", + value = "_FUNC_(n or str) - Convert the argument to hexadecimal ", + extended = "If the argument is a string, returns two hex digits for each " + + "character in the string.\n" + + "If the argument is a number, returns the hexadecimal representation.\n" + + "Example:\n" + + " > SELECT _FUNC_(17) FROM src LIMIT 1;\n" + + " 'H1'\n" + + " > SELECT _FUNC_('Facebook') FROM src LIMIT 1;\n" + + " '46616365626F6F6B'" + ) public class UDFHex extends UDF { private Text result = new Text(); byte[] value = new byte[16]; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCos.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "cos", + value = "_FUNC_(x) - returns the cosine of x (x is in radians)", + extended = "Example:\n " + + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + + " 1" + ) public class UDFCos extends UDF { private static Log LOG = LogFactory.getLog(UDFCos.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRound.java (working copy) @@ -22,11 +22,18 @@ import java.math.RoundingMode; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "round", + value = "_FUNC_(x[, d]) - round x to d decimal places", + extended = "Example:\n" + + " > SELECT _FUNC_(12.3456, 1) FROM src LIMIT 1;\n" + + " 12.3'" + ) public class UDFRound extends UDF { DoubleWritable doubleWritable = new DoubleWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLower.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLower.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLower.java (working copy) @@ -19,11 +19,19 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "lower,lcase", + value = "_FUNC_(str) - Returns str with all characters changed to lowercase", + extended = "Example:\n" + + " > SELECT _FUNC_('Facebook') FROM src LIMIT 1;\n" + + " 'facebook'" + ) public class UDFLower extends UDF { Text t = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSqrt.java (working copy) @@ -21,12 +21,20 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; /** * Implementation of the SQRT UDF found in many databases. */ +@description( + name = "sqrt", + value = "_FUNC_(x) - returns the square root of x", + extended = "Example:\n " + + " > SELECT _FUNC_(4) FROM src LIMIT 1;\n" + + " 2" + ) public class UDFSqrt extends UDF { private static Log LOG = LogFactory.getLog(UDFSqrt.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExp.java (working copy) @@ -19,12 +19,21 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.BooleanWritable; import org.apache.hadoop.io.Text; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "rlike,regexp", + value = "str _FUNC_ regexp - Returns true if str matches regexp and " + + "false otherwise", + extended = "Example:\n" + + " > SELECT 'fb' _FUNC_ '.*' FROM src LIMIT 1;\n" + + " true" + ) public class UDFRegExp extends UDF { private Text lastRegex = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUpper.java (working copy) @@ -19,8 +19,16 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; +@description( + name = "upper,ucase", + value = "_FUNC_(str) - Returns str with all characters changed to uppercase", + extended = "Example:\n" + + " > SELECT _FUNC_('Facebook') FROM src LIMIT 1;\n" + + " 'FACEBOOK'" + ) public class UDFUpper extends UDF { Text t = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPower.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "power,pow", + value = "_FUNC_(x1, x2) - raise x1 to the power of x2", + extended = "Example:\n" + + " > SELECT _FUNC_(2, 3) FROM src LIMIT 1;\n" + + " 8" + ) public class UDFPower extends UDF { private static Log LOG = LogFactory.getLog(UDFPower.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqualOrGreaterThan.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -29,7 +30,10 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = ">=", + value = "a _FUNC_ b - Returns TRUE if b is not smaller than a" +) public class UDFOPEqualOrGreaterThan extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPEqualOrGreaterThan.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitNot.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitNot.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitNot.java (working copy) @@ -21,12 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "~", + value = "_FUNC_ n - Bitwise not", + extended = "Example:\n" + + " > SELECT _FUNC_ 0 FROM src LIMIT 1;\n" + + " -1" +) public class UDFOPBitNot extends UDFBaseBitOP { private static Log LOG = LogFactory.getLog(UDFOPBitNot.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNot.java (working copy) @@ -21,9 +21,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.BooleanWritable; - +@description( + name = "not,!", + value = "_FUNC_ a - Logical not" +) public class UDFOPNot extends UDF { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPNot"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNegative.java (working copy) @@ -21,6 +21,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -28,7 +29,10 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "-", + value = "_FUNC_ a - Returns -a" +) public class UDFOPNegative extends UDFBaseNumericUnaryOp { private static Log LOG = LogFactory.getLog(UDFOPNegative.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFPosMod.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -34,6 +35,10 @@ * @ See {@link org.apache.hadoop.hive.ql.udf.UDFOPMod} * @ See {@link org.apache.hadoop.hive.ql.exec.FunctionRegistry} */ +@description( + name = "pmod", + value = "a _FUNC_ b - Compute the positive modulo" +) public class UDFPosMod extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFPosMod"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPDivide.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPDivide.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPDivide.java (working copy) @@ -21,6 +21,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -28,7 +29,13 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "/", + value = "a _FUNC_ b - Divide a by b", + extended = "Example:\n" + + " > SELECT 10 _FUNC_ 2 FROM src LIMIT 1;\n" + + " 5" +) public class UDFOPDivide extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPDivide"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitXor.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitXor.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitXor.java (working copy) @@ -21,12 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "^", + value = "a _FUNC_ b - Bitwise exclusive or", + extended = "Example:\n" + + " > SELECT 3 _FUNC_ 5 FROM src LIMIT 1;\n" + + " 2" +) public class UDFOPBitXor extends UDFBaseBitOP { private static Log LOG = LogFactory.getLog(UDFOPBitXor.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqual.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqual.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPEqual.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -34,6 +35,10 @@ * better performance; otherwise a single method that takes (Number a, Number b) * and use a.doubleValue() == b.doubleValue() is enough. */ +@description( + name = "=,==", + value= "a _FUNC_ b - Returns TRUE if a equals b and false otherwise" +) public class UDFOPEqual extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPEqual.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateDiff.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateDiff.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateDiff.java (working copy) @@ -25,10 +25,21 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "datediff", + value = "_FUNC_(date1, date2) - Returns the number of days between date1 " + + "and date2", + extended = "date1 and date2 are strings in the format " + + "'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. The time parts are ignored." + + "If date1 is earlier than date2, the result is negative.\n" + + "Example:\n " + + " > SELECT _FUNC_('2009-30-07', '2009-31-07') FROM src LIMIT 1;\n" + + " 1" + ) public class UDFDateDiff extends UDF { private static Log LOG = LogFactory.getLog(UDFDateDiff.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConcat.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConcat.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFConcat.java (working copy) @@ -19,9 +19,17 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; - +@description( + name = "concat", + value = "_FUNC_(str1, str2) - returns the concatenation of str1 and str2", + extended = "Returns NULL if any argument is NULL.\n" + + "Example:\n" + + " > SELECT _FUNC_('abc', 'def') FROM src LIMIT 1;\n" + + " 'abcdef'" + ) public class UDFConcat extends UDF { public UDFConcat() { Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCeil.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCeil.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFCeil.java (working copy) @@ -21,9 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.io.LongWritable; +@description( + name = "ceil,ceiling", + value = "_FUNC_(x) - Find the smallest integer not smaller than x", + extended = "Example:\n" + + " > SELECT _FUNC_(-0.1) FROM src LIMIT 1;\n" + + " 0\n" + + " > SELECT _FUNC_(5) FROM src LIMIT 1;\n" + + " 5" + ) public class UDFCeil extends UDF { private static Log LOG = LogFactory.getLog(UDFCeil.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMod.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -27,7 +28,10 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "%", + value = "a _FUNC_ b - Returns the remainder when dividing a by b" +) public class UDFOPMod extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPMod"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpExtract.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpExtract.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpExtract.java (working copy) @@ -25,12 +25,20 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; /** * UDF to extract a specific group identified by a java regex. * Note that if a regexp has a backslash ('\'), then need to specify '\\' * For example, regexp_extract('100-200', '(\\d+)-(\\d+)', 1) will return '100' */ +@description( + name = "regexp_extract", + value = "_FUNC_(str, regexp[, idx]) - extracts a group that matches regexp", + extended = "Example:\n" + + " > SELECT _FUNC_('100-200', '(\\d+)-(\\d+)', 1) FROM src LIMIT 1;\n" + + " '100'" + ) public class UDFRegExpExtract extends UDF { private static Log LOG = LogFactory.getLog(UDFRegExpExtract.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFromUnixTime.java (working copy) @@ -24,10 +24,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "from_unixtime", + value = "_FUNC_(unix_time, format) - returns unix_time in the specified " + + "format", + extended = "Example:\n" + + " > SELECT _FUNC_(0, 'yyyy-MM-dd HH:mm:ss') FROM src LIMIT 1;\n" + + " '1970-01-01 00:00:00'" + ) public class UDFFromUnixTime extends UDF { private static Log LOG = LogFactory.getLog(UDFFromUnixTime.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPNotEqual.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -29,7 +30,10 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = "<>", + value = "a _FUNC_ b - Returns TRUE if a is not equal to b" +) public class UDFOPNotEqual extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPNotEqual.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateSub.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateSub.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateSub.java (working copy) @@ -27,10 +27,21 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "date_sub", + value = "_FUNC_(start_date, num_days) - Returns the date that is num_days" + + " before start_date.", + extended = "start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or" + + " 'yyyy-MM-dd'. num_days is a number. The time part of start_date is " + + "ignored.\n" + + "Example:\n " + + " > SELECT _FUNC_('2009-30-07', 1) FROM src LIMIT 1;\n" + + " '2009-29-07'" + ) public class UDFDateSub extends UDF { private static Log LOG = LogFactory.getLog(UDFDateSub.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAsin.java (working copy) @@ -21,9 +21,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "asin", + value = "_FUNC_(x) - returns the arc sine of x if -1<=x<=1 or NULL otherwise", + extended = "Example:\n" + + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + + " 0\n" + + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + + " NULL" + ) public class UDFAsin extends UDF { private static Log LOG = LogFactory.getLog(UDFAsin.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFExp.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "exp", + value = "_FUNC_(x) - Returns e to the power of x", + extended = "Example:\n " + + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + + " 1" + ) public class UDFExp extends UDF { private static Log LOG = LogFactory.getLog(UDFExp.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRTrim.java (working copy) @@ -19,12 +19,20 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; import org.apache.commons.lang.StringUtils; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "rtrim", + value = "_FUNC_(str) - Removes the trailing space characters from str ", + extended = "Example:\n" + + " > SELECT _FUNC_('facebook ') FROM src LIMIT 1;\n" + + " 'facebook'" + ) public class UDFRTrim extends UDF { Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.io.DoubleWritable; @@ -29,9 +30,10 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.io.LongWritable; -/** - * This class implements the COUNT aggregation function as in SQL. - */ +@description( + name = "sum", + value = "_FUNC_(x) - Returns the sum of a set of numbers" +) public class GenericUDAFSum implements GenericUDAFResolver { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java (working copy) @@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; @@ -39,6 +40,14 @@ * LOCATE(substr, str, start) *

*/ +@description( + name = "locate", + value = "_FUNC_(substr, str[, pos]) - Returns the position of the first " + + "occurance of substr in str after position pos", + extended = "Example:\n" + + " > SELECT _FUNC_('bar', 'foobarbar', 5) FROM src LIMIT 1;\n" + + " 7" + ) public class GenericUDFLocate extends GenericUDF{ ObjectInspectorConverters.Converter[] converters; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIndex.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIndex.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIndex.java (working copy) @@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde.Constants; import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector; @@ -32,6 +33,10 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils; import org.apache.hadoop.io.IntWritable; +@description( + name = "index", + value = "_FUNC_(a, n) - Returns the n-th element of a " +) public class GenericUDFIndex extends GenericUDF { private MapObjectInspector mapOI; private boolean mapKeyPreferWritable; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java (working copy) @@ -20,11 +20,16 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.io.BooleanWritable; +@description( + name = "isnull", + value = "_FUNC_ a - Returns true if a is NULL and false otherwise" +) public class GenericUDFOPNull extends GenericUDF { BooleanWritable result = new BooleanWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java (working copy) @@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde.Constants; import org.apache.hadoop.hive.serde2.objectinspector.ListObjectInspector; @@ -30,6 +31,10 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.io.IntWritable; +@description( + name = "size", + value = "_FUNC_(a) - Returns the size of a" +) public class GenericUDFSize extends GenericUDF { private ObjectInspector returnOI; private IntWritable result = new IntWritable(-1); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java (working copy) @@ -20,6 +20,7 @@ import java.util.ArrayList; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.io.DoubleWritable; @@ -36,9 +37,10 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.io.LongWritable; -/** - * This class implements the COUNT aggregation function as in SQL. - */ +@description( + name = "avg", + value = "_FUNC_(x) - Returns the mean of a set of numbers" +) public class GenericUDAFAverage implements GenericUDAFResolver { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java (working copy) @@ -22,6 +22,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; @@ -38,6 +39,13 @@ * NOTES: * 1. a, b and c should have the same TypeInfo, or an exception will be thrown. */ +@description( + name = "coalesce", + value = "_FUNC_(a1, a2, ...) - Returns the first non-null argument", + extended = "Example:\n" + + " > SELECT _FUNC_(NULL, 1, NULL) FROM src LIMIT 1;\n" + + " 1" + ) public class GenericUDFCoalesce extends GenericUDF { private static Log LOG = LogFactory.getLog(GenericUDFCoalesce.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java (working copy) @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils; @@ -38,6 +39,10 @@ /** * GenericUDF Class for computing hash values. */ +@description( + name = "hash", + value = "_FUNC_(a1, a2, ...) - Returns a hash value of the arguments" +) public class GenericUDFHash extends GenericUDF { private static Log LOG = LogFactory.getLog(GenericUDFHash.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java (working copy) @@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; @@ -36,6 +37,13 @@ * * @see org.apache.hadoop.hive.ql.udf.generic.GenericUDF */ +@description( + name = "elt", + value = "_FUNC_(n, str1, str2, ...) - returns the n-th string", + extended = "Example:\n" + + " > SELECT _FUNC_(1, 'face', 'book') FROM src LIMIT 1;\n" + + " 'face'" + ) public class GenericUDFElt extends GenericUDF { ObjectInspectorConverters.Converter[] converters; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFCount.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -29,6 +30,10 @@ /** * This class implements the COUNT aggregation function as in SQL. */ +@description( + name = "count", + value = "_FUNC_(x) - Returns the count" +) public class GenericUDAFCount implements GenericUDAFResolver { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVariance.java (working copy) @@ -20,6 +20,7 @@ import java.util.ArrayList; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.io.DoubleWritable; @@ -43,6 +44,10 @@ * GenericUDAFStdSample * */ +@description( + name = "variance,var_pop", + value = "_FUNC_(x) - Returns the variance of a set of numbers" +) public class GenericUDAFVariance implements GenericUDAFResolver { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java (working copy) @@ -20,11 +20,16 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory; import org.apache.hadoop.io.BooleanWritable; +@description( + name = "isnotnull", + value = "_FUNC_ a - Returns true if a is not NULL and false otherwise" +) public class GenericUDFOPNotNull extends GenericUDF { BooleanWritable result = new BooleanWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java (working copy) @@ -23,6 +23,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorFactory; @@ -31,6 +32,14 @@ import org.apache.hadoop.io.Text; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; +@description( + name = "split", + value = "_FUNC_(str, regex) - Splits str around occurances that match " + + "regex", + extended = "Example:\n" + + " > SELECT _FUNC_('oneAtwoBthreeC', '[ABC]') FROM src LIMIT 1;\n" + + " [\"one\", \"two\", \"three\"]" + ) public class GenericUDFSplit extends GenericUDF { private ObjectInspectorConverters.Converter[] converters; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStd.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStd.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStd.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -29,6 +30,10 @@ * overriding the terminate() method of the evaluator. * */ +@description( + name = "std,stddev,stddev_pop", + value = "_FUNC_(x) - Returns the standard deviation of a set of numbers" +) public class GenericUDAFStd extends GenericUDAFVariance { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVarianceSample.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVarianceSample.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFVarianceSample.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -29,6 +30,10 @@ * overriding the terminate() method of the evaluator. * */ +@description( + name = "var_samp", + value = "_FUNC_(x) - Returns the sample variance of a set of numbers" +) public class GenericUDAFVarianceSample extends GenericUDAFVariance { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStdSample.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStdSample.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFStdSample.java (working copy) @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.udf.generic; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.ql.parse.SemanticException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; @@ -29,6 +30,11 @@ * overriding the terminate() method of the evaluator. * */ +@description( + name = "stddev_samp", + value = "_FUNC_(x) - Returns the sample standard deviation of a set of " + + "numbers" +) public class GenericUDAFStdSample extends GenericUDAFVariance { @Override Index: ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java (working copy) @@ -21,6 +21,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException; import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException; import org.apache.hadoop.hive.ql.exec.UDFArgumentTypeException; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.metadata.HiveException; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector; import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters; @@ -38,6 +39,14 @@ * INSTR(str, substr) *

*/ +@description( + name = "instr", + value = "_FUNC_(str, substr) - Returns the index of the first occurance " + + "of substr in str", + extended = "Example:\n" + + " > SELECT _FUNC_('Facebook', 'boo') FROM src LIMIT 1;\n" + + " 5" + ) public class GenericUDFInstr extends GenericUDF{ ObjectInspectorConverters.Converter[] converters; Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFUnixTimeStamp.java (working copy) @@ -26,11 +26,18 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; @UDFType(deterministic=false) +@description( + name = "unix_timestamp", + value = "_FUNC_([date[, pattern]]) - Returns the UNIX timestamp", + extended = "Converts the current or specified time to number of seconds " + + "since 1970-01-01." + ) public class UDFUnixTimeStamp extends UDF { private static Log LOG = LogFactory.getLog(UDFUnixTimeStamp.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDayOfMonth.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDayOfMonth.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDayOfMonth.java (working copy) @@ -26,10 +26,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "day,dayofmonth", + value = "_FUNC_(date) - Returns the date of the month of date", + extended = "date is a string in the format of 'yyyy-MM-dd HH:mm:ss' or " + + "'yyyy-MM-dd'.\n" + + "Example:\n " + + " > SELECT _FUNC_('2009-30-07', 1) FROM src LIMIT 1;\n" + + " 30" + ) public class UDFDayOfMonth extends UDF { private static Log LOG = LogFactory.getLog(UDFDayOfMonth.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFJson.java (working copy) @@ -31,9 +31,29 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; - +@description( + name = "get_json_object", + value = "_FUNC_(json_txt, path) - Extract a json object from path ", + extended = "Extract json object from a json string based on json path " + + "specified, and return json string of the extracted json object. It " + + "will return null if the input json string is invalid.\n" + + "A limited version of JSONPath supported:\n" + + " $ : Root object\n" + + " . : Child operator\n" + + " [] : Subscript operator for array\n" + + " * : Wildcard for []\n" + + "Syntax not supported that's worth noticing:\n" + + " '' : Zero length string as key\n" + + " .. : Recursive descent\n" + + " &#064; : Current object/element\n" + + " () : Script expression\n" + + " ?() : Filter (script) expression.\n" + + " [,] : Union operator\n" + + " [start:end:step] : array slice operator\n" + ) public class UDFJson extends UDF { private static Log LOG = LogFactory.getLog(UDFJson.class.getName()); private Pattern pattern_key = Pattern.compile("^([a-zA-Z0-9_\\-]+).*"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLn.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "ln", + value = "_FUNC_(x) - Returns the natural logarithm of x", + extended = "Example:\n" + + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n" + + " 0" + ) public class UDFLn extends UDF { private static Log LOG = LogFactory.getLog(UDFLn.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFTrim.java (working copy) @@ -19,12 +19,21 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; import org.apache.commons.lang.StringUtils; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "trim", + value = "_FUNC_(str) - Removes the leading and trailing space characters " + + "from str ", + extended = "Example:\n" + + " > SELECT _FUNC_(' facebook ') FROM src LIMIT 1;\n" + + " 'facebook'" + ) public class UDFTrim extends UDF { Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLpad.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLpad.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLpad.java (working copy) @@ -19,9 +19,22 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; +@description( + name = "lpad", + value = "_FUNC_(str, len, pad) - Returns str, left-padded with pad to a " + + "length of len", + extended = "If str is longer than len, the return value is shortened to " + + "len characters.\n" + + "Example:\n" + + " > SELECT _FUNC_('hi', 5, '??') FROM src LIMIT 1;\n" + + " '???hi'" + + " > SELECT _FUNC_('hi', 1, '??') FROM src LIMIT 1;\n" + + " 'h'" + ) public class UDFLpad extends UDF { private Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPLessThan.java (working copy) @@ -22,6 +22,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -31,7 +32,10 @@ import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; - +@description( + name = "<", + value = "a _FUNC_ b - Returns TRUE if a is less than b" +) public class UDFOPLessThan extends UDFBaseCompare { private static Log LOG = LogFactory.getLog(UDFOPLessThan.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFloor.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFloor.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFFloor.java (working copy) @@ -21,10 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "floor", + value = "_FUNC_(x) - Find the largest integer not greater than x", + extended = "Example:\n" + + " > SELECT _FUNC_(-0.1) FROM src LIMIT 1;\n" + + " -1\n" + + " > SELECT _FUNC_(5) FROM src LIMIT 1;\n" + + " 5" + ) public class UDFFloor extends UDF { private static Log LOG = LogFactory.getLog(UDFFloor.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog10.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "log10", + value = "_FUNC_(x) - Returns the logarithm of x with base 10", + extended = "Example:\n" + + " > SELECT _FUNC_(10) FROM src LIMIT 1;\n" + + " 1" + ) public class UDFLog10 extends UDF { private static Log LOG = LogFactory.getLog(UDFLog10.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLike.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLike.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLike.java (working copy) @@ -21,12 +21,20 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.BooleanWritable; import org.apache.hadoop.io.Text; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "like", + value = "_FUNC_(str, pattern) - Checks if str matches pattern", + extended = "Example:\n" + + " > SELECT a.* FROM srcpart a WHERE a.hr _FUNC_ '%2' LIMIT 1;\n" + + " 27 val_27 2008-04-08 12" + ) public class UDFLike extends UDF { private static Log LOG = LogFactory.getLog(UDFLike.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMonth.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMonth.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFMonth.java (working copy) @@ -26,10 +26,17 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "month", + value = "_FUNC_(date) - Returns the month of date", + extended = "Example:\n" + + " > SELECT _FUNC_('2009-30-07') FROM src LIMIT 1;\n" + + " 7" + ) public class UDFMonth extends UDF { private static Log LOG = LogFactory.getLog(UDFMonth.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAcos.java (working copy) @@ -21,9 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "acos", + value = "_FUNC_(x) - returns the arc cosine of x if -1<=x<=1 or " + + "NULL otherwise", + extended = "Example:\n" + + " > SELECT _FUNC_(1) FROM src LIMIT 1;\n" + + " 0\n" + + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + + " NULL" + ) public class UDFAcos extends UDF { private static Log LOG = LogFactory.getLog(UDFAcos.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateAdd.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateAdd.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFDateAdd.java (working copy) @@ -27,10 +27,21 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; - +@description( + name = "date_add", + value = "_FUNC_(start_date, num_days) - Returns the date that is num_days" + + " after start_date.", + extended = "start_date is a string in the format 'yyyy-MM-dd HH:mm:ss' or" + + " 'yyyy-MM-dd'. num_days is a number. The time part of start_date is " + + "ignored.\n" + + "Example:\n " + + " > SELECT _FUNC_('2009-30-07', 1) FROM src LIMIT 1;\n" + + " '2009-31-07'" + ) public class UDFDateAdd extends UDF { private static Log LOG = LogFactory.getLog(UDFDateAdd.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRegExpReplace.java (working copy) @@ -19,11 +19,20 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "regexp_replace", + value = "_FUNC_(str, regexp, rep) - replace all substrings of str that " + + "match regexp with rep", + extended = "Example:\n" + + " > SELECT _FUNC_('100-200', '(\\d+)', 'num') FROM src LIMIT 1;\n" + + " 'num-num'" + ) public class UDFRegExpReplace extends UDF { private Text lastRegex = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRpad.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRpad.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRpad.java (working copy) @@ -19,9 +19,23 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; + +@description( + name = "rpad", + value = "_FUNC_(str, len, pad) - Returns str, right-padded with pad to a " + + "length of len", + extended = "If str is longer than len, the return value is shortened to " + + "len characters.\n" + + "Example:\n" + + " > SELECT _FUNC_('hi', 5, '??') FROM src LIMIT 1;\n" + + " 'hi???'" + + " > SELECT _FUNC_('hi', 1, '??') FROM src LIMIT 1;\n" + + " 'h'" + ) public class UDFRpad extends UDF { private Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFParseUrl.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFParseUrl.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFParseUrl.java (working copy) @@ -25,6 +25,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; @@ -43,6 +44,22 @@ * HOST,PATH,QUERY,REF,PROTOCOL,AUTHORITY,FILE,USERINFO Also you can get a value * of particular key in QUERY, using syntax QUERY: eg: QUERY:k1. */ +@description( + name = "parse_url", + value = "_FUNC_(url, partToExtract[, key]) - extracts a part from a URL", + extended = "Parts: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, " + + "USERINFO\nkey specifies which query to extract\n" + + "Example:\n" + + " > SELECT _FUNC_('http://facebook.com/path/p1.php?query=1', " + + "'HOST') FROM src LIMIT 1;\n" + + " 'facebook.com'\n" + + " > SELECT _FUNC_('http://facebook.com/path/p1.php?query=1', " + + "'QUERY') FROM src LIMIT 1;\n" + + " 'query=1'\n" + + " > SELECT _FUNC_('http://facebook.com/path/p1.php?query=1', " + + "'QUERY', 'query') FROM src LIMIT 1;\n" + + " '1'" + ) public class UDFParseUrl extends UDF { private static Log LOG = LogFactory.getLog(UDFParseUrl.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitAnd.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitAnd.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPBitAnd.java (working copy) @@ -21,12 +21,19 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "&", + value = "a _FUNC_ b - Bitwise and", + extended = "Example:\n" + + " > SELECT 3 _FUNC_ 5 FROM src LIMIT 1;\n" + + " 1" +) public class UDFOPBitAnd extends UDFBaseBitOP { private static Log LOG = LogFactory.getLog(UDFOPBitAnd.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPAnd.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPAnd.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPAnd.java (working copy) @@ -21,9 +21,17 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.BooleanWritable; - +@description( + name = "and,&&", + value = "a _FUNC_ b - Logical and", + extended = "Example:\n" + + " > SELECT * FROM srcpart WHERE src.hr=12 _FUNC_ " + + "src.hr='2008-04-08' LIMIT 1;\n" + + " 27 val_27 2008-04-08 12" +) public class UDFOPAnd extends UDF { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPAnd"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFReverse.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFReverse.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFReverse.java (working copy) @@ -19,9 +19,17 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils; import org.apache.hadoop.io.Text; +@description( + name = "reverse", + value = "_FUNC_(str) - reverse str", + extended = "Example:\n" + + " > SELECT _FUNC_('Facebook') FROM src LIMIT 1;\n" + + " 'koobecaF'" + ) public class UDFReverse extends UDF { private Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPOr.java (working copy) @@ -21,9 +21,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.BooleanWritable; - +@description( + name = "or,||", + value = "a _FUNC_ b - Logical or" +) public class UDFOPOr extends UDF { private static Log LOG = LogFactory.getLog(UDFOPOr.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRepeat.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRepeat.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRepeat.java (working copy) @@ -21,9 +21,17 @@ import java.util.Arrays; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; +@description( + name = "repeat", + value = "_FUNC_(str, n) - repeat str n times ", + extended = "Example:\n" + + " > SELECT _FUNC_('123', 2) FROM src LIMIT 1;\n" + + " '123123'" + ) public class UDFRepeat extends UDF { private Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLength.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLength.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLength.java (working copy) @@ -18,10 +18,18 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFUtils; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; +@description( + name = "length", + value = "_FUNC_(str) - Returns the length of str ", + extended = "Example:\n" + + " > SELECT _FUNC_('Facebook') FROM src LIMIT 1;\n" + + " 8" + ) public class UDFLength extends UDF { private IntWritable result = new IntWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLog.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "log", + value = "_FUNC_([b], x) - Returns the logarithm of x with base b", + extended = "Example:\n" + + " > SELECT _FUNC_(13, 13) FROM src LIMIT 1;\n" + + " 1" + ) public class UDFLog extends UDF { private static Log LOG = LogFactory.getLog(UDFLog.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPPlus.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -37,6 +38,10 @@ * The case of int + double will be handled by implicit type casting using * UDFRegistry.implicitConvertable method. */ +@description( + name = "+", + value = "a _FUNC_ b - Returns a+b" +) public class UDFOPPlus extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPPlus"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFRand.java (working copy) @@ -23,9 +23,14 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.io.LongWritable; +@description( + name = "rand", + value = "_FUNC_([seed]) - Returns a pseudorandom number between 0 and 1" +) @UDFType(deterministic=false) public class UDFRand extends UDF { Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLTrim.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLTrim.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFLTrim.java (working copy) @@ -19,12 +19,20 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.Text; import org.apache.commons.lang.StringUtils; import java.util.regex.Pattern; import java.util.regex.Matcher; +@description( + name = "ltrim", + value = "_FUNC_(str) - Removes the leading space characters from str ", + extended = "Example:\n" + + " > SELECT _FUNC_(' facebook') FROM src LIMIT 1;\n" + + " 'facebook'" + ) public class UDFLTrim extends UDF { Text result = new Text(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAscii.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAscii.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFAscii.java (working copy) @@ -19,9 +19,21 @@ package org.apache.hadoop.hive.ql.udf; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; +@description( + name = "ascii", + value = "_FUNC_(str) - returns the numeric value of the first character" + + " of str", + extended = "Returns 0 if str is empty or NULL if str is NULL\n" + + "Example:\n" + + " > SELECT _FUNC_('222') FROM src LIMIT 1;" + + " 50\n" + + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + + " 50" + ) public class UDFAscii extends UDF { private IntWritable result = new IntWritable(); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSin.java (working copy) @@ -21,9 +21,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.DoubleWritable; - +@description( + name = "sin", + value = "_FUNC_(x) - returns the sine of x (x is in radians)", + extended = "Example:\n " + + " > SELECT _FUNC_(0) FROM src LIMIT 1;\n" + + " 0" + ) public class UDFSin extends UDF { private static Log LOG = LogFactory.getLog(UDFSin.class.getName()); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFOPMinus.java (working copy) @@ -20,6 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.hive.serde2.io.ByteWritable; import org.apache.hadoop.hive.serde2.io.DoubleWritable; import org.apache.hadoop.hive.serde2.io.ShortWritable; @@ -27,7 +28,10 @@ import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; - +@description( + name = "-", + value = "a _FUNC_ b - Returns the difference a-b" +) public class UDFOPMinus extends UDFBaseNumericOp { private static Log LOG = LogFactory.getLog("org.apache.hadoop.hive.ql.udf.UDFOPMinus"); Index: ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSpace.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSpace.java (revision 801876) +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSpace.java (working copy) @@ -21,9 +21,18 @@ import java.util.Arrays; import org.apache.hadoop.hive.ql.exec.UDF; +import org.apache.hadoop.hive.ql.exec.description; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Text; + +@description( + name = "space", + value = "_FUNC_(n) - returns n spaces", + extended = "Example:\n " + + " > SELECT _FUNC_(2) FROM src LIMIT 1;\n" + + " ' '" + ) public class UDFSpace extends UDF { private Text result = new Text();