Commit Graph

50 Commits

Author SHA1 Message Date
Mike Bayer 3cefadd926 a little bit of refinement 2010-04-17 06:44:44 -04:00
Mike Bayer 1cf4a745d8 - beef up the --reversetop test option to embed RandomSet throughout the ORM
- with m2m we have to go back to the previous approach of having both sides of
the DP fire off, tracking each pair of objects.   history may not be consistently present
in one side or the other
- this revealed a whole lot of issues with self-referential m2m, which are fixed
2010-04-15 00:13:48 -04:00
Mike Bayer 44c67fef8c - starting to groom the branch for its inclusion
- one-to-many relationships now maintain a list of positive
parent-child associations within the flush, preventing
previous parents marked as deleted from cascading a
delete or NULL foreign key set on those child objects,
despite the end-user not removing the child from the old
association. [ticket:1764]
- re-established Preprocess as unique on their arguments,
as they were definitely duped in inheritance scenarios
- added a "memo" feature to UOWTransaction which represents the usual
pattern of using the .attributes collection
- added the test case from [ticket:1081] into perf/
2010-04-10 19:21:54 -04:00
Mike Bayer c6bceb7775 - converted all lazy=True|False|None to 'select'|'joined'|'noload'
- converted all eager to joined in examples
- fixed beaker/advanced.py to reference RelationshipCache
2010-03-24 19:19:03 -04:00
Mike Bayer 1675811029 - To accomodate the fact that there are now two kinds of eager
loading available, the new names for eagerload() and
eagerload_all() are joinedload() and joinedload_all().  The
old names will remain as synonyms for the foreseeable future.

- The "lazy" flag on the relationship() function now accepts
a string argument for all kinds of loading: "select", "joined",
"subquery", "noload" and "dynamic", where the default is now
"select".  The old values of True/
False/None still retain their usual meanings and will remain
as synonyms for the foreseeable future.

- Added documentation to tutorial,mapper doc, api docs
for subqueryload, subqueryload_all, and other options.
2010-03-24 19:11:01 -04:00
Mike Bayer 065fcbd9d2 - The official name for the relation() function is now
relationship(), to eliminate confusion over the relational
algebra term.  relation() however will remain available
in equal capacity for the foreseeable future.  [ticket:1740]
2010-03-17 17:48:29 -04:00
Gaëtan de Menten 17fee657a6 timings should use getitem syntax and not the slow getattr one 2010-03-03 20:40:39 +00:00
Gaëtan de Menten 165609a190 - Added an optional C extension to speed up the sql layer by
reimplementing the highest impact functions.
  The actual speedups will depend heavily on your DBAPI and
  the mix of datatypes used in your tables, and can vary from
  a 50% improvement to more than 200%. It also provides a modest
  (~20%) indirect improvement to ORM speed for large queries.
  Note that it is *not* built/installed by default.
  See README for installation instructions.

- The most common result processors conversion function were
  moved to the new "processors" module.  Dialect authors are
  encouraged to use those functions whenever they correspond
  to their needs instead of implementing custom ones.
2010-02-13 22:53:39 +00:00
Mike Bayer aedcd6aea6 - reduced a bit of overhead in attribute expiration, particularly
the version called by column loaders on an incomplete row (i.e.
joined table inheritance).  there are more dramatic changes
that can be made here but this one is conservative so far
as far as how much we're altering how InstanceState tracks
"expired" attributes.
2010-02-13 21:16:08 +00:00
Gaëtan de Menten f4573f73d0 misc cleanups in tests (courtesy of Michael Bayer's revisiting of my
patch)
2010-02-13 20:53:17 +00:00
Mike Bayer ffe0ab5ba6 - For those who might use debug logging on
sqlalchemy.orm.strategies, most logging calls during row
loading have been removed.   These were never very helpful
and cluttered up the code.

- Some internal streamlining of object loading grants a
small speedup for large results, estimates are around
10-15%.
2010-02-13 19:27:14 +00:00
Mike Bayer 8fc5005dfe merge 0.6 series to trunk. 2009-08-06 21:11:27 +00:00
Mike Bayer 31b95e6cdc - removed test.testing.ORMTest, test.fixtures, and all
dependencies on those.
2009-06-02 21:42:14 +00:00
Michael Trier 4cd99f5536 Global propigate -> propagate change to correct spelling. Additionally found a couple of insures that should be ensure. 2008-11-09 01:53:08 +00:00
Mike Bayer 060c3ce33c - In addition to expired attributes, deferred attributes
also load if their data is present in the result set
[ticket:870]
2008-06-21 16:08:04 +00:00
Jason Kirtland 65f4f02ec8 Columns now have default= and server_default=. PassiveDefault fades away. 2008-05-14 19:49:40 +00:00
Mike Bayer 4a6afd469f r4695 merged to trunk; trunk now becomes 0.5.
0.4 development continues at /sqlalchemy/branches/rel_0_4
2008-05-09 16:34:10 +00:00
Mike Bayer c0b5a0446b - updated the naming scheme of the base test classes in test/testlib/testing.py;
tests extend from either TestBase or ORMTest, using additional mixins for
special assertion methods as needed
2008-02-11 00:28:39 +00:00
Mike Bayer 2999ea9554 test for session close efficiency 2008-02-08 15:45:54 +00:00
Jason Kirtland 17d3c8764e - testbase is gone, replaced by testenv
- Importing testenv has no side effects- explicit functions provide similar behavior to the old immediate behavior of testbase
- testing.db has the configured db
- Fixed up the perf/* scripts
2008-01-12 22:03:42 +00:00
Jason Kirtland 784eaa108a Added a profiled benchmark for orm attribute modification & flush 2007-11-03 22:03:18 +00:00
Ants Aasma 6bbc7dd157 change the in_ API to accept a sequence or a selectable [ticket:750] 2007-10-16 22:57:05 +00:00
Jason Kirtland da45a65a48 - Expanded insert speed test to cover execute as well as executemany 2007-10-08 18:51:51 +00:00
Jason Kirtland 9d16ae440b Tightened up time measurement. 2007-09-26 16:13:43 +00:00
Jason Kirtland 75c2230476 Added. 2007-09-22 18:03:27 +00:00
Mike Bayer 9717c71709 merged current entity_management brach r3457-r3462. cleans up
'_state' mamangement in attributes, moves __init__() instrumntation into attributes.py,
and reduces method call overhead by removing '_state' property.
future enhancements may include _state maintaining a weakref to the instance and a
strong ref to its __dict__ so that garbage-collected instances can get added to 'dirty',
when weak-referenced identity map is used.
2007-09-05 17:25:32 +00:00
Mike Bayer 38a55648a1 added sqlite/sa "unprofiled" raw time tests 2007-08-14 17:51:15 +00:00
Mike Bayer ce9828ff07 added full fetching of result columns, cut overall size to 50000 2007-08-14 17:43:03 +00:00
Mike Bayer 55e80ace66 a mass insert/ select benchmarking test, from
http://pyinsci.blogspot.com/2007/07/fastest-python-database-interface.html
2007-08-14 17:34:17 +00:00
Mike Bayer 6c6cd47c02 - fixed endless loop
- fixed perf imports in masseagerload
2007-08-14 03:34:38 +00:00
Mike Bayer ed4fc64bb0 merging 0.4 branch to trunk. see CHANGES for details. 0.3 moves to maintenance branch in branches/rel_0_3. 2007-07-27 04:08:53 +00:00
Mike Bayer 687d9342e6 - a new mutex that was added in 0.3.9 causes the pool_timeout
feature to fail during a race condition; threads would
raise TimeoutError immediately with no delay if many threads
push the pool into overflow at the same time.  this issue has been
fixed.
2007-07-20 15:10:56 +00:00
Jason Kirtland 177d30cc01 - Deprecated DynamicMetaData- use ThreadLocalMetaData or MetaData instead
- Deprecated BoundMetaData- use MetaData instead
- Removed DMD and BMD from documentation
2007-07-06 00:58:09 +00:00
Mike Bayer 48ebb102ea - added synchronization to the mapper() construction step, to avoid
thread collections when pre-existing mappers are compiling in a
different thread [ticket:613]
2007-06-20 21:08:10 +00:00
Mike Bayer cbdb5464fe remove unneeded division 2007-05-26 22:21:31 +00:00
Mike Bayer 87b8ca1323 added hotshot points into unit test, localizes profiling to just the query.select() process.
0.4 branch now has 18% fewer function calls for the same test.
2007-05-26 21:29:50 +00:00
Mike Bayer 379e210383 - mysql doesnt have + for concatenation, but pg doesnt have concat() (nor does sqlite)
- parameterized masseagerload test
2007-05-26 19:41:31 +00:00
Mike Bayer 1a5ba21076 - added a mutex to the mapper compilation step. ive been reluctant to add any kind
of threading anything to SA but this is one spot that its its really needed since mappers
are typically "global", and while their state does not change during normal operation, the
initial compilation step does modify internal state significantly, and this step usually
occurs not at module-level initialization time (unless you call compile()) but at first-request
time
- added "compile_mappers()" function as a shortcut to compiling all mappers
2007-01-06 20:32:47 +00:00
Mike Bayer e249e56cb9 - fix to connection pool _close() to properly clean up, fixes
MySQL synchronization errors [ticket:387]
2006-12-08 18:47:20 +00:00
Mike Bayer 0ab287b039 added mass eagerloading profile, debug log in EagerLoader conditional based on flag 2006-12-01 19:45:04 +00:00
Mike Bayer 8f8afe9259 added conditional flag to debug log statements in mapper so that string formats dont occur
updated massload test to work with 0.3
2006-12-01 18:41:33 +00:00
Mike Bayer 00da425b07 - added extra check to "stop" cascading on save/update/save-update if
an instance is detected to be already in the session.
2006-11-29 17:16:41 +00:00
Mike Bayer 7a2194e6c0 - added profiling to massave
- adjusted the formatting for per-instance loggers to limit the number
of loggers that get created in memory.
2006-10-01 23:15:53 +00:00
Mike Bayer 56e04db226 mass saver for profiling mem usage.... 2006-09-29 20:50:13 +00:00
Mike Bayer a7644ef885 tweaks for mysql 2006-09-29 20:28:43 +00:00
Mike Bayer 8f94457e56 adjustments to pool stemming from changes made for [ticket:224].
overflow counter should only be decremented if the connection actually
succeeded.  added a test script to attempt testing this.
2006-08-04 06:21:58 +00:00
Mike Bayer b3927fbb88 inserting './lib/' into sys.path since PYTHONPATH no longer straightforward with latest setuptools 2006-06-29 00:28:55 +00:00
Mike Bayer 84fdccc0cb merged attributes rewrite 2006-06-15 15:53:00 +00:00
Mike Bayer f9468e8759 if an item attached to a parent is found to be already in the session, then the "save-update" cascade operation doesnt take place. currently this prevents unncessessary cascading due to backref events, which was a massive speed hit. 2006-06-15 15:27:39 +00:00
Mike Bayer 120dcee5a7 reorganized unit tests into subdirectories 2006-06-05 17:25:51 +00:00