MCPcopy Create free account
hub / github.com/apache/impala / _create_from_clause

Method _create_from_clause

tests/comparison/query_generator.py:1090–1131  ·  view source on GitHub ↗
(self,
      table_exprs,
      table_alias_prefix,
      required_table_expr_col_type)

Source from the content-addressed store, hash-verified

1088 (order_by_expr, choice([None, 'ASC', 'DESC', 'DESC'])))
1089
1090 def _create_from_clause(self,
1091 table_exprs,
1092 table_alias_prefix,
1093 required_table_expr_col_type):
1094 from_clause = None
1095 table_count = self.profile.get_table_count()
1096
1097 candidate_table_exprs = TableExprList(table_exprs)
1098 candidate_table_exprs.extend(candidate_table_exprs.collections)
1099 # If filter out table expressions with no scalar columns.
1100 candidate_table_exprs = TableExprList(
1101 table_expr for table_expr in candidate_table_exprs if table_expr.cols)
1102
1103 if required_table_expr_col_type:
1104 candidate_table_exprs = \
1105 candidate_table_exprs.by_col_type[required_table_expr_col_type]
1106 if not candidate_table_exprs:
1107 raise Exception('No tables have the required column type')
1108
1109 if table_count > 1:
1110 # If there are multiple multiple tables, the first chosen table must have joinable
1111 # columns.
1112 candidate_table_exprs = TableExprList(
1113 table_expr for table_expr in candidate_table_exprs
1114 if table_expr.joinable_cols_by_type)
1115 if not candidate_table_exprs:
1116 raise Exception('No tables have any joinable types')
1117 required_type = self.profile.choose_type(
1118 candidate_table_exprs.joinable_cols_by_type)
1119 else:
1120 required_type = None
1121 table_expr = self._create_table_expr(candidate_table_exprs,
1122 required_type=required_type)
1123 table_expr.alias = self.get_next_id()
1124 from_clause = FromClause(table_expr)
1125
1126 for idx in range(1, table_count):
1127 join_clause = self._create_join_clause(from_clause, table_exprs)
1128 join_clause.table_expr.alias = self.get_next_id()
1129 from_clause.join_clauses.append(join_clause)
1130
1131 return from_clause
1132
1133 def _create_table_expr(self, table_exprs, required_type=None):
1134 if not table_exprs:

Callers 1

generate_statementMethod · 0.95

Calls 9

_create_table_exprMethod · 0.95
get_next_idMethod · 0.95
_create_join_clauseMethod · 0.95
TableExprListClass · 0.90
FromClauseClass · 0.90
rangeFunction · 0.85
choose_typeMethod · 0.80
get_table_countMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected