Revision 2313
Added by Aaron Marcuse-Kubitza over 12 years ago
db_xml.py | ||
---|---|---|
128 | 128 |
|
129 | 129 |
input_col_prefix = '$' |
130 | 130 |
|
131 |
def put_table(db, node, in_table, in_schema=None, limit=None, start=0,
|
|
131 |
def put_table(db, node, in_table, limit=None, start=0, |
|
132 | 132 |
commit=False, row_ct_ref=None, parent_ids_loc=None): |
133 | 133 |
''' |
134 | 134 |
@param node The XML tree that transforms the input to the output. Similar to |
... | ... | |
138 | 138 |
@return (table, col) Where the pkeys (from INSERT RETURNING) are made |
139 | 139 |
available |
140 | 140 |
''' |
141 |
def esc_name(name): return sql.esc_name(db, name) |
|
142 | 141 |
def pkey(table): return sql.pkey(db, table, True) |
143 | 142 |
|
143 |
in_table = sql_gen.as_Table(in_table) |
|
144 |
|
|
144 | 145 |
def put_table_(node, parent_ids_loc=None): |
145 |
return put_table(db, node, in_table, in_schema, limit, start, commit,
|
|
146 |
row_ct_ref, parent_ids_loc)
|
|
146 |
return put_table(db, node, in_table, limit, start, commit, row_ct_ref,
|
|
147 |
parent_ids_loc) |
|
147 | 148 |
|
148 | 149 |
out_table = name_of(node) |
149 | 150 |
row = {} |
... | ... | |
170 | 171 |
row[parent_ptr] = parent_ids_loc |
171 | 172 |
|
172 | 173 |
# Divide fields into input columns and literal values |
173 |
in_tables = [sql_gen.Table(in_table, in_schema)]
|
|
174 |
in_tables = [in_table]
|
|
174 | 175 |
for out_col, value in row.iteritems(): |
175 | 176 |
if isinstance(value, sql_gen.Col): # value is temp table column |
176 | 177 |
in_tables.append(value.table) |
177 | 178 |
elif util.is_str(value) and value.startswith(input_col_prefix): |
178 | 179 |
# value is input column |
179 | 180 |
row[out_col] = sql_gen.Col(strings.remove_prefix(input_col_prefix, |
180 |
value)) |
|
181 |
value), in_table)
|
|
181 | 182 |
else: # value is literal value; should only be string or None |
182 | 183 |
assert util.is_str(value) or value == None |
183 | 184 |
row[out_col] = sql_gen.NamedCode(out_col, value) |
Also available in: Unified diff
db_xml.py: put_table(): Accept sql_gen.Table objects or strings instead of separate table and schema names