Revision 2245
Added by Aaron Marcuse-Kubitza almost 13 years ago
lib/sql.py | ||
---|---|---|
809 | 809 |
order_by=None, limit=limit, start=start, table_is_esc=table_is_esc, |
810 | 810 |
default_table=in_tables0) |
811 | 811 |
|
812 |
def log_ignore(in_col, value): |
|
813 |
db.log_debug('Ignoring rows with '+in_col+' = '+value) |
|
814 |
|
|
812 | 815 |
# Do inserts and selects |
813 | 816 |
out_pkeys_ref = ['out_pkeys_'+temp_suffix] |
814 | 817 |
while True: |
... | ... | |
833 | 836 |
break # insert successful |
834 | 837 |
except DuplicateKeyException, e: |
835 | 838 |
join_cols = util.dict_subset_right_join(mapping, e.cols) |
839 |
db.log_debug('Ignoring existing rows, comparing on '+str(join_cols)) |
|
836 | 840 |
select_joins = insert_joins + [(out_table, join_cols)] |
837 | 841 |
|
838 | 842 |
# Get pkeys of already existing rows |
... | ... | |
856 | 860 |
out_col, = e.cols |
857 | 861 |
try: in_col = mapping[out_col] |
858 | 862 |
except KeyError: # no mapping for missing col, so every row invalid |
863 |
db.log_debug('Missing mapping for '+out_col) |
|
859 | 864 |
run_query_into_pkeys(*mk_select(db, insert_joins, |
860 | 865 |
[in_pkey_col, sql_gen.NamedCode(out_pkey, None)], |
861 | 866 |
order_by=None, start=0, table_is_esc=table_is_esc)) |
862 | 867 |
break |
863 | 868 |
else: |
869 |
log_ignore(in_col, 'NULL') |
|
864 | 870 |
conds[in_col] = sql_gen.CompareCond(None, '!=') |
865 | 871 |
# rerun loop with additional constraints |
866 | 872 |
except FunctionValueException, e: |
867 | 873 |
assert e.name == sql_gen.unescape_table(out_table) |
868 | 874 |
out_col = 'value' # assume function param was named "value" |
869 | 875 |
in_col = mapping[out_col] |
870 |
conds[in_col] = sql_gen.CompareCond(e.value, '!=') |
|
876 |
value = e.value |
|
877 |
log_ignore(in_col, value) |
|
878 |
conds[in_col] = sql_gen.CompareCond(value, '!=') |
|
871 | 879 |
# rerun loop with additional constraints |
872 | 880 |
|
873 | 881 |
return (pkeys_ref[0], out_pkey) |
Also available in: Unified diff
sql.py: put_table(): Print debug messages about how exceptions are being handled