Project

General

Profile

« Previous | Next » 

Revision 3452

sql_gen.py: RowExcIgnore: Allow user to specify a custom row var name

View differences:

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