Project

General

Profile

Statistics
| Revision:

# Date Author Comment
2276 05/22/2012 01:24 PM Aaron Marcuse-Kubitza

sql_gen.py: Join.to_str(): Fixed bugs revealed in first test of function

2275 05/21/2012 11:05 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Turn off table_is_esc when calling sql.put_table() and don't escape out_table

2274 05/21/2012 11:04 PM Aaron Marcuse-Kubitza

sql.py: mk_insert_select(): Use sql_gen.table2sql_gen().to_str() to escape the table

2273 05/21/2012 10:57 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): First in_tables table is sql_gen.Table object

2272 05/21/2012 10:49 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Converted row (mapping) values to sql_gen objects

2271 05/21/2012 10:45 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Accept main tables (table0's) that are Table objects. This change requires plain SQL code to be wrapped in a CustomCode object if it should not be unescaped and converted to a Table object.

2270 05/21/2012 10:42 PM Aaron Marcuse-Kubitza

sql_gen.py: as_Table(): Accept tables that are Code objects, not just Table objects

2269 05/21/2012 10:40 PM Aaron Marcuse-Kubitza

sql_gen.py: CustomCode: Fixed bug where needed to inherit from Code

2268 05/21/2012 10:19 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Return a sql_gen.Col object instead of an old-style tuple

2267 05/21/2012 10:00 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): joins: Switched to using filter_out as an attribute of the Join object instead of a sentinel value for the first column. Filter by the right table's pkey being NULL instead of each joined column being NULL, because some joined columns may contain NULL values which would mess things up, but the pkey presumably is NOT NULL.

2266 05/21/2012 09:56 PM Aaron Marcuse-Kubitza

sql_gen.py: Join.to_str(): Fixed bug where type_ None was being concatenated with the JOIN str

2265 05/21/2012 09:31 PM Aaron Marcuse-Kubitza

sql_gen.py: Join.to_str(): Fixed bug where USING syntax could not be used for filter_out join type, because a separate right column is required for filtering

2264 05/21/2012 09:20 PM Aaron Marcuse-Kubitza

sql_gen.py: Use new table2sql_gen() in col2sql_gen(), join2sql_gen()

2263 05/21/2012 09:18 PM Aaron Marcuse-Kubitza

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

2262 05/21/2012 09:17 PM Aaron Marcuse-Kubitza

sql_gen.py: Added table2sql_gen()

2261 05/21/2012 08:44 PM Aaron Marcuse-Kubitza

sql_gen.py: Added join2sql_gen()

2260 05/21/2012 08:33 PM Aaron Marcuse-Kubitza

sql_gen.py: Added as_Col(). as_ValueCond(): Added support for assuming the value is a column rather than a literal value, using the default_table param. Added Join.

2259 05/21/2012 07:10 PM Aaron Marcuse-Kubitza

sql_gen.py: Put parameterized SQL code objects in separate section

2258 05/21/2012 07:08 PM Aaron Marcuse-Kubitza

sql.py: put_table(): DuplicateKeyException: Assert that join_cols has changed to avoid infinite loops

2257 05/21/2012 06:59 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Moved getting pkeys of already existing rows from DuplicateKeyException to try clause, so that it always runs if there are join_cols. DuplicateKeyException: Add new duplicate key cols to join_cols instead of replacing join_cols so that multiple unique constraints being violated causes the union of their columns to be used for join_cols.

2256 05/21/2012 06:23 PM Aaron Marcuse-Kubitza

sql_gen.py: Added CustomCode

2255 05/21/2012 06:05 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): joins: Fixed bug where joins dict was being modified without first being copied, causing the input value to be modified

2254 05/21/2012 05:52 PM Aaron Marcuse-Kubitza

Compare object()-based sentinel values using is. Where sentinel values must be compared using ==, use rand.rand_int() instead.

2253 05/21/2012 05:13 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Added debug messages for every action performed

2252 05/21/2012 04:45 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Moved assignment of in_pkeys_ref outside loop so it wouldn't need to be re-versioned every iteration

2251 05/21/2012 04:42 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Changed temp_suffix to temp_prefix so all temp tables for a given out_table would have the same prefix. (Existing name collisions due to truncated names are not a problem because version prefixes are automatically added.)

2250 05/21/2012 04:23 PM Aaron Marcuse-Kubitza

mappings/DwC2-VegBIEN.specimens.csv: Filter dates through _toTimestamp

2249 05/21/2012 04:20 PM Aaron Marcuse-Kubitza

schemas/functions.sql: Added _toTimestamp

2248 05/21/2012 04:15 PM Aaron Marcuse-Kubitza

mappings/DwC2-VegBIEN.specimens.csv: Filter coordsaccuracy through _toDouble

2247 05/21/2012 04:12 PM Aaron Marcuse-Kubitza

sql.py: FunctionValueException parsing: Support values containing non-word and non-ASCII characters

2246 05/21/2012 04:11 PM Aaron Marcuse-Kubitza

exc.py: Support exception messages containing non-ASCII characters

2245 05/18/2012 07:10 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Print debug messages about how exceptions are being handled

2244 05/18/2012 06:45 PM Aaron Marcuse-Kubitza

sql.py: put_table(): After getting pkeys of already existing rows, insert new rows

2243 05/18/2012 06:42 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Handle FunctionValueExceptions by excluding rows with the invalid value in their "value" column

2242 05/18/2012 06:41 PM Aaron Marcuse-Kubitza

sql.py: run_query(): Also parse "invalid input syntax at assignment" errors as FunctionValueExceptions

2241 05/18/2012 06:39 PM Aaron Marcuse-Kubitza

sql_gen.py: Col: Convert string table names to Table objects

2240 05/18/2012 06:09 PM Aaron Marcuse-Kubitza

sql.py: run_query(): Parse "invalid input value at assignment" errors' values as well

2239 05/18/2012 05:55 PM Aaron Marcuse-Kubitza

sql.py: run_query(): Parse "invalid input value at assignment" errors as FunctionValueExceptions

2238 05/18/2012 05:27 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): joins: filter_out: Pass NULLs through. Use sql_gen.*2sql_gen() to add the left and right table names to the columns.

2237 05/18/2012 05:26 PM Aaron Marcuse-Kubitza

sql_gen.py: cond2sql_gen(): Take assume_col param and pass it to value2sql_gen()

2236 05/18/2012 04:45 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Use table-qualified pkey col names whenever possible, to avoid ambiguous column references

2235 05/18/2012 04:12 PM Aaron Marcuse-Kubitza

mappings/DwC2-VegBIEN.specimens.csv: placenames: Convert ranks using _toPlacerank to work with multi-inserts

2234 05/18/2012 04:11 PM Aaron Marcuse-Kubitza

sql.py: DbConn._db(): Fixed bug where the isolation level was not set to "SERIALIZABLE" in a portable way

2233 05/18/2012 04:04 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): distinct_on is turned off when distinct_on == [] rather than when it's None

2232 05/18/2012 03:48 PM Aaron Marcuse-Kubitza

schemas/vegbien.sql: Added _toPlacerank

2231 05/18/2012 03:43 PM Aaron Marcuse-Kubitza

schemas/vegbien.sql: Added _toTaxonrank

2230 05/18/2012 03:35 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Handle NullValueExceptions by removing invalid rows

2229 05/18/2012 03:31 PM Aaron Marcuse-Kubitza

sql_gen.py: Added NamedCode

2228 05/18/2012 03:30 PM Aaron Marcuse-Kubitza

sql_gen.py: Added str() to base classes for debugging

2227 05/18/2012 02:46 PM Aaron Marcuse-Kubitza

sql.py: mk_select() (and sql_gen.py): Fixed bugs where literal strings were treated as literal values when they should have been treated as column names. Take default_table param to determine default table to use if a column doesn't have an explicit table. put_table(): mk_main_select(): Pass in_tables0 as mk_select()'s default_table.

2226 05/18/2012 12:54 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): cond(): Run additional sql_gen translation functions cond2sql_gen() and col2sql_gen() on the left and right sides of the comparison

2225 05/18/2012 12:50 PM Aaron Marcuse-Kubitza

sql_gen.py: ValueCond: Fixed bug where values which are Code objects were being converted to Literals. Added cond2sql_gen().

2224 05/17/2012 08:01 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): join(): Use cond() now that it supports sql_gen format

2223 05/17/2012 07:50 PM Aaron Marcuse-Kubitza

sql_gen.py: Added col2sql_gen() and use it in value2sql_gen()

2222 05/17/2012 07:25 PM Aaron Marcuse-Kubitza

sql_gen.py: CompareCond: By default, compare NULL values literally. Support operator values to pass NULLs through.

2221 05/17/2012 07:23 PM Aaron Marcuse-Kubitza

strings.py: remove_prefix(), remove_suffix(): Added removed_ref param

2220 05/17/2012 06:28 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): parse_col(): Use sql_gen.value2sql_gen().to_str()

2219 05/17/2012 06:22 PM Aaron Marcuse-Kubitza

sql_gen.py: Added as_Table(), unescape_table(), value2sql_gen()

2218 05/17/2012 03:37 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Documented conds param

2217 05/17/2012 03:32 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): cond(): Switched to using sql_gen so that custom conds would be supported

2216 05/17/2012 03:19 PM Aaron Marcuse-Kubitza

sql_gen.py: ValueCond.to_str(): Made value_code a Code object instead of a string, and renamed it to left_value to reflect where it goes. Added as_ValueCond().

2215 05/17/2012 03:11 PM Aaron Marcuse-Kubitza

sql.py: esc_value(): Fixed bug where db needed to be referenced through self

2214 05/17/2012 02:22 PM Aaron Marcuse-Kubitza

sql_gen.py: ValueCond.to_str(): Added value_code param

2213 05/17/2012 02:16 PM Aaron Marcuse-Kubitza

sql_gen.py: Literal, CompareCond: Implemented to_str(). ValueCond: Autoconvert literal values to Literals.

2212 05/17/2012 02:14 PM Aaron Marcuse-Kubitza

sql.py: DbConn: Added esc_value()

2211 05/17/2012 01:52 PM Aaron Marcuse-Kubitza

Moved SQL code generation classes from sql.py to new sql_gen.py. sql_gen.py: Added Code, Literal, ValueCond, and CompareCond. sql.py: Removed Query because we will use a different approach.

2210 05/17/2012 12:43 PM Aaron Marcuse-Kubitza

sql.py: Added Query, Table, Col

2209 05/17/2012 11:28 AM Aaron Marcuse-Kubitza

sql.py: get(): Fixed bug where limit=1 needs to be passed to select() as a keyword arg now that the distinct_on param comes before it

2208 05/17/2012 11:01 AM Aaron Marcuse-Kubitza

sql.py: put_table(): mk_main_select(): Pass outer var conds to mk_select()

2207 05/17/2012 10:57 AM Aaron Marcuse-Kubitza

sql.py: put_table(): mk_select_(): Fixed bug where it was sometimes being called without distinct_on, causing it to return a different # of rows. Renamed mk_select_() to mk_main_select() for clarity.

2206 05/17/2012 10:48 AM Aaron Marcuse-Kubitza

sql.py: put_table(): Do inserts and selects in a loop so that it will keep retrying the operation with additional constraints until it succeeds

2205 05/15/2012 03:56 PM Aaron Marcuse-Kubitza

sql.py: put_table(): mk_select_(): Fixed bug where order_by needed to be None because otherwise it wouldn't match the distinct_on cols if they were specified

2204 05/15/2012 03:55 PM Aaron Marcuse-Kubitza

sql.py: put_table(): insert_(): Fixed bug where distinct_on was not passed to mk_select_()

2203 05/15/2012 03:30 PM Aaron Marcuse-Kubitza

sql.py: put_table(): mk_select_(): Fixed bug where distinct_on needed to be passed as a keyword param

2202 05/15/2012 03:21 PM Aaron Marcuse-Kubitza

sql.py: put_table(): insert_() and mk_select_() take distinct_on param

2201 05/15/2012 03:10 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Factored out code that inserts into pkeys table into run_query_into_pkeys() helper function

2200 05/15/2012 02:55 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Implemented DISTINCT ON according to the distinct_on param

2199 05/15/2012 02:48 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Added distinct_on param to set the columns to SELECT DISTINCT ON

2198 05/15/2012 02:31 PM Aaron Marcuse-Kubitza

sql.py: clean_name(): Convert names to lowercase so that PostgreSQL will behave the same whether the name is escaped with "" or not. This will help avoid bugs in code that uses temp tables created by the sql module.

2197 05/15/2012 02:29 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Added order_by=None wherever rows were not supposed to be re-ordered. On DuplicateKeyException: Save existing pkeys in temp table for joining on.

2196 05/15/2012 01:31 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Pass limit and start to sql.put_table()

2195 05/15/2012 01:09 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Added limit and start options

2194 05/15/2012 11:54 AM Aaron Marcuse-Kubitza

sql.py: When creating a temporary entity (table, function, etc.), instead create it as a permanent entity in debug mode so it can be viewed after the program is run

2193 05/15/2012 11:40 AM Aaron Marcuse-Kubitza

sql.py: DbConn: Store whether in debug mode (log_debug != log_debug_none) for easy use by methods

2192 05/15/2012 11:31 AM Aaron Marcuse-Kubitza

bin/map: connect_db(): Turn on autocommit mode in debug mode if commit is on, so that incremental results can be seen in the DB

2191 05/15/2012 11:30 AM Aaron Marcuse-Kubitza

sql.py: DbConn: Use internal autocommit handling instead of DB connection autocommit attr to avoid autocommits inside a savepoint

2190 05/15/2012 11:15 AM Aaron Marcuse-Kubitza

sql.py: DbConn: Added autocommit option to turn on autocommit mode. Use set_session() instead of SQL command to set isolation level.

2189 05/14/2012 05:50 PM Aaron Marcuse-Kubitza

sql.py: mk_insert_select(): embeddable: Fixed bug where the function may do different things when run, because the function (and other statements whose cached strings depend on the function name) may be run after the function definition would have changed, by versioning the function name and using CREATE FUNCTION instead of CREATE OR REPLACE FUNCTION so that its definition never changes

2188 05/14/2012 05:28 PM Aaron Marcuse-Kubitza

sql.py: Parse "function already exists" errors as DuplicateFunctionException

2187 05/14/2012 05:13 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): joins: Fixed bug where join_not_equal did not do what it was designed for, which is filtering out matches of the join condition (before the bug fix, it effectively did a cross join with matching rows excluded, causing duplication of rows). Renamed join_not_equal to filter_out to reflect its intended use. Support table-scoped column names in the WHERE conds list.

2186 05/14/2012 04:22 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Fixed bug where ORDER BY column needed to have table0 name prefixed (if it didn't already have a table name), to avoid ambiguous column references

2185 05/14/2012 04:11 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Fixed bug in joins where right_col had the table name prepended before it was copied for use with a different table name in join_using and join_not_equal

2184 05/14/2012 03:42 PM Aaron Marcuse-Kubitza

Mapped some unmapped fields in DwC inputs

2183 05/14/2012 02:19 PM Aaron Marcuse-Kubitza

Added mappings/for_review/DwC2-VegBIEN.specimens.fields.csv

2182 05/14/2012 01:21 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Fixed bug where didn't commit right after inserting node, but instead waited until children with fkeys to parent (independent of the node itself) were inserted

2181 05/14/2012 01:16 PM Aaron Marcuse-Kubitza

sql.py: put_table(): insert_(): Use insert_select() instead of run_query_into() if new option pkeys_table_exists is on

2180 05/14/2012 12:51 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Support joins with !=

2179 05/14/2012 12:45 PM Aaron Marcuse-Kubitza

sql.py: mk_select(): Support only some join columns being join_using

2178 05/14/2012 12:40 PM Aaron Marcuse-Kubitza

sql.py: put_table(): Renamed in_joins to insert_joins and joins to select_joins for clarity

2177 05/14/2012 12:21 PM Aaron Marcuse-Kubitza

db_xml.py: put_table(): Support children with fkeys to parent