Project

General

Profile

« Previous | Next » 

Revision 2263

sql.py: mk_select(): joins: Convert all joins to sql_gen format using join2sql_gen()

View differences:

lib/sql.py
479 479
    query += ' FROM '+table0
480 480
    
481 481
    # Add joins
482
    left_table = table0
483
    for table, joins in tables:
484
        if not table_is_esc: table = esc_name_(table)
482
    tables = [sql_gen.join2sql_gen(v, table_is_esc) for v in tables]
483
    left_table = sql_gen.table2sql_gen(table0, table_is_esc)
484
    for join_ in tables:
485
        table = join_.table
486
        joins = join_.mapping
485 487
        
486 488
        left_join = False
487 489
        
......
494 496
                # different values in a LEFT JOIN.
495 497
                # Use '~=' because it's OK to pass NULLs through.
496 498
                joins[right] = sql_gen.CompareCond(sql_gen.col2sql_gen(right,
497
                    left_table, table_is_esc), '~=')
499
                    left_table), '~=')
498 500
                conds[(table, right)] = None # filter query by no match
499 501
        
500 502
        def join(entry):
......
506 508
                # for None values, tuple is optional
507 509
            elif left_col is join_using: left_col = right_col
508 510
            
509
            return cond((sql_gen.col2sql_gen(right_col, table, table_is_esc),
510
                sql_gen.cond2sql_gen(left_col, left_table, table_is_esc,
511
                    assume_col=True)))
511
            return cond((sql_gen.col2sql_gen(right_col, table),
512
                sql_gen.cond2sql_gen(left_col, left_table, assume_col=True)))
512 513
        
513 514
        # Create join condition and determine join type
514 515
        if reduce(operator.and_, (v is join_using for v in joins.itervalues())):
......
518 519
        
519 520
        # Create join
520 521
        if left_join: query += ' LEFT'
521
        query += ' JOIN '+table+' '+join_cond
522
        query += ' JOIN '+table.to_str(db)+' '+join_cond
522 523
        
523 524
        left_table = table
524 525
    

Also available in: Unified diff