edu.yale.cs.hadoopdb.sms
Class SQLQueryGenerator

java.lang.Object
  extended by edu.yale.cs.hadoopdb.sms.SQLQueryGenerator

public class SQLQueryGenerator
extends java.lang.Object

Performs Hive plan analysis and builds relevant SQL queries


Field Summary
private static java.lang.String HIVE_COLUMN_PREFIX
           
static org.apache.commons.logging.Log LOG
           
 
Constructor Summary
SQLQueryGenerator()
           
 
Method Summary
private static java.lang.String buildSQLQuery(SQLQuery sqlStructure, java.lang.String alias, org.apache.hadoop.hive.ql.metadata.Table tbl, java.lang.StringBuilder sqlWhere, java.lang.StringBuilder sqlGroupBy)
          Builds actual SQL query to execute against DBMS
private static java.lang.String funcSQL(java.util.HashMap<java.lang.String,java.lang.String> columnsMapping, org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc func)
          Handles predicates including nested ones
private static void generateDefaultSchema(SQLQuery sqlStructure, org.apache.hadoop.hive.ql.metadata.Table tbl)
          Generates default table schema (as in table definition)
private static java.lang.String getAlias(java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> map, org.apache.hadoop.hive.ql.plan.exprNodeDesc expr)
          Returns alias for Hive expression as specified in the column renaming map
private static java.lang.String getColumnFromExpr(org.apache.hadoop.hive.ql.plan.exprNodeDesc expr, java.util.HashMap<java.lang.String,java.lang.String> columnsMapping)
          Takes the first column from expression
static void hackMapredWorkSchema(SQLQuery sqlStructure, org.apache.hadoop.hive.ql.metadata.Table tbl)
          Cheats Hive's internal table schema with that to be returned by DBMS
private static java.lang.String prefixColumnIndex(int i)
          Returns internal column id with prefix
static void process(org.apache.hadoop.hive.conf.HiveConf conf, org.apache.hadoop.hive.ql.parse.QB qb, java.util.HashMap<java.lang.String,org.apache.hadoop.hive.ql.exec.Operator<? extends java.io.Serializable>> topOps)
          Performs Hive's plan analysis and SQL generation for all tables
private static void processFilter(org.apache.hadoop.hive.ql.exec.FilterOperator op, SQLQuery sqlStructure, java.util.HashMap<java.lang.String,java.lang.String> columnsMapping, java.lang.StringBuilder sqlWhere)
          Handles FilterOperator
private static void processGroupBy(org.apache.hadoop.hive.ql.exec.GroupByOperator op, SQLQuery sqlStructure, java.util.HashMap<java.lang.String,java.lang.String> columnsMapping, java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> exprAliasMap, java.lang.StringBuilder sqlGroupBy)
          Handles GroupByOperator
private static void processSelect(org.apache.hadoop.hive.ql.exec.SelectOperator op, SQLQuery sqlStructure, java.util.HashMap<java.lang.String,java.lang.String> columnsMapping, java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> exprAliasMap)
          Handles SelectOperator
static SQLQuery processTable(java.lang.String alias, org.apache.hadoop.hive.ql.metadata.Table tbl, org.apache.hadoop.hive.ql.exec.TableScanOperator tableScanOp)
          Builds SQL query for a given Hive's table
private static void removeOperator(org.apache.hadoop.hive.ql.exec.Operator op)
          Removes operators from Hive's plan
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HIVE_COLUMN_PREFIX

private static final java.lang.String HIVE_COLUMN_PREFIX
See Also:
Constant Field Values

LOG

public static final org.apache.commons.logging.Log LOG
Constructor Detail

SQLQueryGenerator

public SQLQueryGenerator()
Method Detail

buildSQLQuery

private static java.lang.String buildSQLQuery(SQLQuery sqlStructure,
                                              java.lang.String alias,
                                              org.apache.hadoop.hive.ql.metadata.Table tbl,
                                              java.lang.StringBuilder sqlWhere,
                                              java.lang.StringBuilder sqlGroupBy)
Builds actual SQL query to execute against DBMS


funcSQL

private static java.lang.String funcSQL(java.util.HashMap<java.lang.String,java.lang.String> columnsMapping,
                                        org.apache.hadoop.hive.ql.plan.exprNodeFuncDesc func)
Handles predicates including nested ones


generateDefaultSchema

private static void generateDefaultSchema(SQLQuery sqlStructure,
                                          org.apache.hadoop.hive.ql.metadata.Table tbl)
Generates default table schema (as in table definition)


getAlias

private static java.lang.String getAlias(java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> map,
                                         org.apache.hadoop.hive.ql.plan.exprNodeDesc expr)
Returns alias for Hive expression as specified in the column renaming map


getColumnFromExpr

private static java.lang.String getColumnFromExpr(org.apache.hadoop.hive.ql.plan.exprNodeDesc expr,
                                                  java.util.HashMap<java.lang.String,java.lang.String> columnsMapping)
Takes the first column from expression


hackMapredWorkSchema

public static void hackMapredWorkSchema(SQLQuery sqlStructure,
                                        org.apache.hadoop.hive.ql.metadata.Table tbl)
Cheats Hive's internal table schema with that to be returned by DBMS


prefixColumnIndex

private static java.lang.String prefixColumnIndex(int i)
Returns internal column id with prefix


process

public static void process(org.apache.hadoop.hive.conf.HiveConf conf,
                           org.apache.hadoop.hive.ql.parse.QB qb,
                           java.util.HashMap<java.lang.String,org.apache.hadoop.hive.ql.exec.Operator<? extends java.io.Serializable>> topOps)
Performs Hive's plan analysis and SQL generation for all tables


processFilter

private static void processFilter(org.apache.hadoop.hive.ql.exec.FilterOperator op,
                                  SQLQuery sqlStructure,
                                  java.util.HashMap<java.lang.String,java.lang.String> columnsMapping,
                                  java.lang.StringBuilder sqlWhere)
Handles FilterOperator


processGroupBy

private static void processGroupBy(org.apache.hadoop.hive.ql.exec.GroupByOperator op,
                                   SQLQuery sqlStructure,
                                   java.util.HashMap<java.lang.String,java.lang.String> columnsMapping,
                                   java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> exprAliasMap,
                                   java.lang.StringBuilder sqlGroupBy)
Handles GroupByOperator


processSelect

private static void processSelect(org.apache.hadoop.hive.ql.exec.SelectOperator op,
                                  SQLQuery sqlStructure,
                                  java.util.HashMap<java.lang.String,java.lang.String> columnsMapping,
                                  java.util.Map<java.lang.String,org.apache.hadoop.hive.ql.plan.exprNodeDesc> exprAliasMap)
Handles SelectOperator


processTable

public static SQLQuery processTable(java.lang.String alias,
                                    org.apache.hadoop.hive.ql.metadata.Table tbl,
                                    org.apache.hadoop.hive.ql.exec.TableScanOperator tableScanOp)
Builds SQL query for a given Hive's table


removeOperator

private static void removeOperator(org.apache.hadoop.hive.ql.exec.Operator op)
Removes operators from Hive's plan