Revision 3452
Added by Aaron Marcuse-Kubitza over 12 years ago
lib/sql_gen.py | ||
---|---|---|
471 | 471 |
|
472 | 472 |
class RowExcIgnore(Code): |
473 | 473 |
def __init__(self, row_type, select_query, with_row, cols=None, |
474 |
exc='unique_violation'): |
|
474 |
exc='unique_violation', row_var='row'):
|
|
475 | 475 |
Code.__init__(self, lang='plpgsql') |
476 | 476 |
|
477 | 477 |
select_query = as_Code(select_query) |
478 | 478 |
with_row = as_Code(with_row) |
479 |
row_var = as_Table(row_var) |
|
479 | 480 |
|
480 | 481 |
self.row_type = row_type |
481 | 482 |
self.select_query = select_query |
482 | 483 |
self.with_row = with_row |
483 | 484 |
self.cols = cols |
484 | 485 |
self.exc = exc |
486 |
self.row_var = row_var |
|
485 | 487 |
|
486 | 488 |
def to_str(self, db): |
487 |
if self.cols == None: row_vars = [Table('row')]
|
|
488 |
else: row_vars = [Col(c.name, 'row') for c in self.cols]
|
|
489 |
if self.cols == None: row_vars = [self.row_var]
|
|
490 |
else: row_vars = [Col(c.name, self.row_var) for c in self.cols]
|
|
489 | 491 |
|
490 | 492 |
str_ = '''\ |
491 | 493 |
DECLARE |
492 |
row '''+self.row_type+''';
|
|
494 |
'''+self.row_var.to_str(db)+''' '''+self.row_type+''';
|
|
493 | 495 |
BEGIN |
494 | 496 |
/* Need an EXCEPTION block for each individual row because "When an error is |
495 | 497 |
caught by an EXCEPTION clause, [...] all changes to persistent database |
Also available in: Unified diff
sql_gen.py: RowExcIgnore: Allow user to specify a custom row var name