Project

General

Profile

« Previous | Next » 

Revision 3287

sql_io.py: put_table(): Save default values for all rows in new temp table full_in_table since in_table may have rows deleted

View differences:

lib/sql_io.py
292 292
                +' does not exist in mapping, falling back to None', level=2.1)
293 293
            default = None
294 294
    
295
    # Save default values for all rows since in_table may have rows deleted
296
    full_in_table = sql_gen.suffixed_table(in_table, '_full')
297
    full_in_table_cols = [in_pkey_col]
298
    if default != None:
299
        full_in_table_cols.append(default)
300
        default = sql_gen.with_table(default, full_in_table)
301
    sql.run_query_into(db, sql.mk_select(db, in_table, full_in_table_cols,
302
        order_by=None, start=0), into=full_in_table)
303
    sql.add_pkey(db, full_in_table)
304
    
295 305
    pkeys_names = [in_pkey, out_pkey]
296 306
    pkeys_cols = [in_pkey_col, out_pkey_col]
297 307
    
......
476 486
    if not is_function:
477 487
        log_debug('Setting pkeys of missing rows to '
478 488
            +strings.as_tt(repr(default)))
479
        missing_rows_joins = input_joins+[sql_gen.Join(into,
489
        missing_rows_joins = [full_in_table, sql_gen.Join(into,
480 490
            {in_pkey: sql_gen.join_same_not_null}, sql_gen.filter_out)]
481 491
            # must use join_same_not_null or query will take forever
482 492
        insert_into_pkeys(missing_rows_joins,
483
            [in_pkey_col, sql_gen.NamedCol(out_pkey, default)])
493
            [sql_gen.Col(in_pkey, full_in_table),
494
            sql_gen.NamedCol(out_pkey, default)])
484 495
    # otherwise, there is already an entry for every row
496
    sql.empty_temp(db, full_in_table)
485 497
    
486 498
    assert sql.table_row_count(db, into) == sql.table_row_count(db, in_table)
487 499
    

Also available in: Unified diff