engine: conserve table name case in SQL queries (#35130)

This commit is contained in:
Benjamin Dauvergne 2019-07-30 10:39:46 +02:00 committed by Frédéric Péters
parent c196221f4b
commit ace7a3407b
1 changed files with 8 additions and 5 deletions

View File

@ -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