| 237 | |
| 238 | |
| 239 | class Expressions(TableColumns): |
| 240 | def __init__(self, table, expressions, compiler, quote_value): |
| 241 | self.compiler = compiler |
| 242 | self.expressions = expressions |
| 243 | self.quote_value = quote_value |
| 244 | columns = [ |
| 245 | col.target.column |
| 246 | for col in self.compiler.query._gen_cols([self.expressions]) |
| 247 | ] |
| 248 | super().__init__(table, columns) |
| 249 | |
| 250 | def rename_table_references(self, old_table, new_table): |
| 251 | if self.table != old_table: |
| 252 | return |
| 253 | self.expressions = self.expressions.relabeled_clone({old_table: new_table}) |
| 254 | super().rename_table_references(old_table, new_table) |
| 255 | |
| 256 | def rename_column_references(self, table, old_column, new_column): |
| 257 | if self.table != table: |
| 258 | return |
| 259 | expressions = deepcopy(self.expressions) |
| 260 | self.columns = [] |
| 261 | for col in self.compiler.query._gen_cols([expressions]): |
| 262 | if col.target.column == old_column: |
| 263 | col.target.column = new_column |
| 264 | self.columns.append(col.target.column) |
| 265 | self.expressions = expressions |
| 266 | |
| 267 | def __str__(self): |
| 268 | sql, params = self.compiler.compile(self.expressions) |
| 269 | params = map(self.quote_value, params) |
| 270 | return sql % tuple(params) |
no outgoing calls