equal
deleted
inserted
replaced
74 continue |
74 continue |
75 modified = True |
75 modified = True |
76 unstable.remove(varname) |
76 unstable.remove(varname) |
77 torewrite.add(var) |
77 torewrite.add(var) |
78 newselect = Select() |
78 newselect = Select() |
79 newselect.need_distinct = False |
79 newselect.need_distinct = newselect.need_intersect = False |
80 myunion = Union() |
80 myunion = Union() |
81 myunion.append(newselect) |
81 myunion.append(newselect) |
82 # extract aliases / selection |
82 # extract aliases / selection |
83 newvar = _new_var(newselect, var.name) |
83 newvar = _new_var(newselect, var.name) |
84 newselect.selection = [VariableRef(newvar)] |
84 newselect.selection = [VariableRef(newvar)] |
485 # sort for test predictability |
485 # sort for test predictability |
486 sql.insert(1, 'FROM %s' % ', '.join(sorted(tables))) |
486 sql.insert(1, 'FROM %s' % ', '.join(sorted(tables))) |
487 elif self._state.restrictions and self.dbms_helper.needs_from_clause: |
487 elif self._state.restrictions and self.dbms_helper.needs_from_clause: |
488 sql.insert(1, 'FROM (SELECT 1) AS _T') |
488 sql.insert(1, 'FROM (SELECT 1) AS _T') |
489 sqls.append('\n'.join(sql)) |
489 sqls.append('\n'.join(sql)) |
490 if distinct: |
490 if select.need_intersect: |
|
491 return '\nINTERSECT\n'.join(sqls) |
|
492 elif distinct: |
491 return '\nUNION\n'.join(sqls) |
493 return '\nUNION\n'.join(sqls) |
492 else: |
494 else: |
493 return '\nUNION ALL\n'.join(sqls) |
495 return '\nUNION ALL\n'.join(sqls) |
494 |
496 |
495 def _selection_sql(self, selected, distinct, needaliasing=False): |
497 def _selection_sql(self, selected, distinct, needaliasing=False): |