engine: conserve table name case in SQL queries (#35130)
This commit is contained in:
parent
c196221f4b
commit
ace7a3407b
|
@ -67,7 +67,7 @@ class EngineDimension(object):
|
|||
with self.engine.get_cursor() as cursor:
|
||||
sql = self.members_query
|
||||
if not sql:
|
||||
table_expression = self.engine_cube.fact_table
|
||||
table_expression = '"%s"' % self.engine_cube.fact_table
|
||||
if self.join:
|
||||
table_expression = self.engine_cube.build_table_expression(
|
||||
self.join, self.engine_cube.fact_table)
|
||||
|
@ -116,7 +116,7 @@ class SchemaJSONDimension(schemas.Dimension):
|
|||
(self.name, self.name, self.name))
|
||||
self.members_query = sql.format(json_field=json_field)
|
||||
self.filter_expression = ('("{fact_table}".id IS NULL '
|
||||
'OR ("{fact_table}"."%s"->>\'%s\') IN (%%s))'
|
||||
'OR ("{fact_table}.%s"->>\'%s\') IN (%%s))'
|
||||
% (json_field, name))
|
||||
self.filter_needs_join = False
|
||||
|
||||
|
@ -223,7 +223,7 @@ class EngineCube(object):
|
|||
|
||||
def count(self):
|
||||
with self.engine.get_cursor() as cursor:
|
||||
cursor.execute('SELECT count(%s) FROM %s' % (self.key, self.fact_table))
|
||||
cursor.execute('SELECT count(%s) FROM "%s"' % (self.key, self.fact_table))
|
||||
return cursor.fetchone()[0]
|
||||
|
||||
def get_join(self, name):
|
||||
|
@ -276,7 +276,7 @@ class EngineCube(object):
|
|||
if measure.expression not in projections:
|
||||
projections.append(measure.expression + ' AS ' + measure.name)
|
||||
sql = 'SELECT ' + ', '.join(projections)
|
||||
table_expression = ' %s' % self.cube.fact_table
|
||||
table_expression = ' "%s"' % self.cube.fact_table
|
||||
if joins:
|
||||
table_expression = self.build_table_expression(
|
||||
joins, self.fact_table, other_conditions=join_conditions)
|
||||
|
@ -330,7 +330,10 @@ class EngineCube(object):
|
|||
join_tree.setdefault(master_table, {}).setdefault(join.kind, {})[join.name] = join
|
||||
|
||||
def build_table_expression_helper(join_tree, table_name, alias=None, top=True, other_conditions=None):
|
||||
sql = table_name
|
||||
if table_name.strip().startswith('('):
|
||||
sql = table_name
|
||||
else:
|
||||
sql = '"%s"' % table_name
|
||||
if alias:
|
||||
sql += ' AS "%s"' % alias
|
||||
add_paren = False
|
||||
|
|
Loading…
Reference in New Issue