[Bast-commits] r9552 - in DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps: . lib/DBIx lib/DBIx/Class lib/DBIx/Class/InflateColumn lib/DBIx/Class/Manual lib/DBIx/Class/Optional lib/DBIx/Class/Relationship lib/DBIx/Class/ResultSourceProxy lib/DBIx/Class/SQLAHacks lib/DBIx/Class/Schema lib/DBIx/Class/Storage lib/DBIx/Class/Storage/DBI lib/DBIx/Class/Storage/DBI/ODBC lib/DBIx/Class/Storage/DBI/Oracle lib/DBIx/Class/Storage/DBI/Replicated lib/DBIx/Class/Storage/DBI/Sybase lib/DBIx/Class/Storage/DBI/Sybase/ASE lib/SQL/Translator/Parser/DBIx maint script t t/admin t/cdbi t/inflate t/lib t/lib/DBICTest t/lib/testinclude t/resultset t/sqlahacks t/sqlahacks/limit_dialects t/storage t/var

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Wed Jun 2 13:34:40 GMT 2010


Author: ribasushi
Date: 2010-06-02 14:34:40 +0100 (Wed, 02 Jun 2010)
New Revision: 9552

Added:
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks/Oracle.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/testinclude/
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/testinclude/DBICTestAdminInc.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/oracle.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/txn.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/var/
Removed:
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/81transactions.t
Modified:
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Changes
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Makefile.PL
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Admin.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/DB.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Exception.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/InflateColumn/DateTime.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Manual/Troubleshooting.pod
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Optional/Dependencies.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/Base.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/BelongsTo.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasMany.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasOne.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSet.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSetColumn.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSource.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSourceProxy/Table.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Row.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema/Versioned.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ADO.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Cursor.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Informix.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/InterBase.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/MSSQL.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Pg.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLite.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/mysql.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBIHacks.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/TxnScopeGuard.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/SQL/Translator/Parser/DBIx/Class.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/maint/svn-log.perl
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/script/dbicadmin
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/03podcoverage.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/52cycle.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/72pg.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/73oracle.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/746mssql.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/74mssql.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/02ddl.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/10script.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/cdbi/02-Film.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/datetime_mssql.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/hri.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICTest/AuthorCheck.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v1.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v2.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v3.pm
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/resultset/update_delete.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/limit_dialects/generic_subq.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/dbh_do.t
   DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/deploy.t
Log:
 r9483 at Thesaurus (orig r9469):  rabbit | 2010-05-31 13:21:04 +0200
 Skip tests segfaulting with ancient DBD::Sybase versions
 r9488 at Thesaurus (orig r9474):  frew | 2010-05-31 17:11:51 +0200
 use namespace::clean w/ Try::Tiny
 r9489 at Thesaurus (orig r9475):  rabbit | 2010-05-31 17:13:29 +0200
 Fix Top-limit problem of missed bindvars
 r9490 at Thesaurus (orig r9476):  rabbit | 2010-05-31 17:21:20 +0200
 Skip failing tests on old DBD
 r9491 at Thesaurus (orig r9477):  frew | 2010-05-31 17:23:49 +0200
 add namespace::clean as regular dep
 r9501 at Thesaurus (orig r9487):  rabbit | 2010-05-31 19:45:27 +0200
 Fix RT57467, simplify test
 r9503 at Thesaurus (orig r9489):  rabbit | 2010-05-31 23:52:17 +0200
 Fix Schema::Versioned borkage
 r9506 at Thesaurus (orig r9492):  rabbit | 2010-06-01 00:08:45 +0200
  r9306 at Thesaurus (orig r9293):  edenc | 2010-05-03 21:20:21 +0200
  braching for bug fixes (rt 54939)
  r9339 at Thesaurus (orig r9326):  edenc | 2010-05-07 18:15:47 +0200
  added failing test case for non-versioned schema deploy attempt
  r9340 at Thesaurus (orig r9327):  edenc | 2010-05-07 18:16:03 +0200
  dbicadmin can now install non-versioned schemas
  r9342 at Thesaurus (orig r9329):  rabbit | 2010-05-07 18:28:27 +0200
  Trap erroneous warnings
  r9345 at Thesaurus (orig r9332):  edenc | 2010-05-08 00:02:00 +0200
  test for the dbicadmin -I option
  r9346 at Thesaurus (orig r9333):  edenc | 2010-05-08 00:02:25 +0200
  fixes to dbicadmin -I test
  r9347 at Thesaurus (orig r9334):  edenc | 2010-05-08 00:02:41 +0200
  -I option functional and passing tests
  r9348 at Thesaurus (orig r9335):  edenc | 2010-05-08 01:39:52 +0200
  moved mock schema out of t/var
  r9375 at Thesaurus (orig r9361):  edenc | 2010-05-14 04:02:41 +0200
  added debug option
  r9376 at Thesaurus (orig r9362):  edenc | 2010-05-14 04:03:00 +0200
  debug and include_dirs integration between dbicadmin and DBIx::Class::Admin
  r9377 at Thesaurus (orig r9363):  edenc | 2010-05-14 04:03:21 +0200
  testing dbicadmin/DBIx::Class::Admin integration
  r9494 at Thesaurus (orig r9480):  rabbit | 2010-05-31 18:03:08 +0200
  Simplify includedir testing
  r9496 at Thesaurus (orig r9482):  rabbit | 2010-05-31 18:47:35 +0200
  Some comments
  r9497 at Thesaurus (orig r9483):  rabbit | 2010-05-31 18:50:50 +0200
  Properly ignore contents of var
  r9498 at Thesaurus (orig r9484):  rabbit | 2010-05-31 18:59:49 +0200
  Remove leftovers
  r9499 at Thesaurus (orig r9485):  rabbit | 2010-05-31 19:24:55 +0200
  Cleanup debug output
  r9500 at Thesaurus (orig r9486):  rabbit | 2010-05-31 19:35:31 +0200
  Fix RT#57732
  r9502 at Thesaurus (orig r9488):  rabbit | 2010-05-31 19:48:41 +0200
  typos
  r9505 at Thesaurus (orig r9491):  rabbit | 2010-06-01 00:08:29 +0200
  Changes
 
 r9514 at Thesaurus (orig r9500):  rabbit | 2010-06-01 00:25:35 +0200
  r9365 at Thesaurus (orig r9351):  ribasushi | 2010-05-12 10:09:54 +0200
  New branch to cleanup resultset-wide update/delete
  r9419 at Thesaurus (orig r9405):  wreis | 2010-05-19 02:49:47 +0200
  failing tests for RS->update
  r9511 at Thesaurus (orig r9497):  rabbit | 2010-06-01 00:20:39 +0200
  Fix update/delete on prefetching resultsets
  r9512 at Thesaurus (orig r9498):  rabbit | 2010-06-01 00:24:54 +0200
  Test cleanup
  r9513 at Thesaurus (orig r9499):  rabbit | 2010-06-01 00:25:14 +0200
  test replication test fail
 
 r9520 at Thesaurus (orig r9506):  frew | 2010-06-01 03:35:36 +0200
 do not lazily set up include dirs and do not localize
 r9523 at Thesaurus (orig r9509):  rabbit | 2010-06-01 13:36:42 +0200
 Versioned compat code connects too early
 r9524 at Thesaurus (orig r9510):  rabbit | 2010-06-01 15:04:49 +0200
 Move order outside of the GenSubQ subquery, to appease retarded Sybase
 r9525 at Thesaurus (orig r9511):  caelum | 2010-06-01 15:08:08 +0200
 fix uninitialized warning
 r9527 at Thesaurus (orig r9513):  rabbit | 2010-06-01 15:46:41 +0200
 Try::Tiny is a part of the clan
 r9529 at Thesaurus (orig r9515):  rabbit | 2010-06-01 16:02:42 +0200
  r7935 at Thesaurus (orig r7923):  ribasushi | 2009-11-19 11:05:04 +0100
  Branches for RTs
  r7936 at Thesaurus (orig r7924):  ribasushi | 2009-11-19 11:10:18 +0100
  Patch by kalex
  r8152 at Thesaurus (orig r8140):  rbo | 2009-12-18 12:51:16 +0100
  Add PRIOR as special and unary op to SQLAHacks::Oracle and use _recurse_where to create the connect_by sql statment
  
  r8968 at Thesaurus (orig r8955):  rabbit | 2010-03-10 10:24:50 +0100
  Merge fallout
  r9004 at Thesaurus (orig r8991):  rbo | 2010-03-12 09:00:54 +0100
  Use SQL::Abstract 1.61_01, add some tests.
  
  r9016 at Thesaurus (orig r9003):  rbo | 2010-03-15 12:48:03 +0100
  Fixed 73oracle.t because of new implementation of connect_by
  
  r9019 at Thesaurus (orig r9006):  rbo | 2010-03-15 15:06:10 +0100
  fixed requirements
  
  r9020 at Thesaurus (orig r9007):  ribasushi | 2010-03-15 15:49:26 +0100
  Rewrite hierarchical query tests
  r9021 at Thesaurus (orig r9008):  ribasushi | 2010-03-15 16:02:54 +0100
  Whoops
  r9022 at Thesaurus (orig r9009):  ribasushi | 2010-03-15 16:03:50 +0100
  Now really fixed
  r9023 at Thesaurus (orig r9010):  rbo | 2010-03-15 16:52:24 +0100
  fixed sql mistakes from hierarchical query tests
  
  r9024 at Thesaurus (orig r9011):  rbo | 2010-03-15 18:24:47 +0100
  Update _order_siblings_by, use _order_by_chunks instead of own stuff
  
  r9025 at Thesaurus (orig r9012):  rbo | 2010-03-15 18:25:56 +0100
  fixed hierarchical query tests, not all pass yet
  
  r9078 at Thesaurus (orig r9065):  rbo | 2010-03-27 10:50:33 +0100
  Fixed typo
  
  r9079 at Thesaurus (orig r9066):  rbo | 2010-03-27 11:50:38 +0100
  Update POD, because of new connect_by implemenation
  
  r9080 at Thesaurus (orig r9067):  rbo | 2010-03-27 12:03:23 +0100
  Support NOCYCLE parameter.
  
  
  r9082 at Thesaurus (orig r9069):  rbo | 2010-03-27 19:10:26 +0100
  Test with the correct arrangement of the tree.
  (oracle hierarchical queries)
  
  
  r9094 at Thesaurus (orig r9081):  rbo | 2010-04-04 12:56:37 +0200
  Add missing nocycle test for hierarchical queries with oracle
  
  r9095 at Thesaurus (orig r9082):  rbo | 2010-04-04 12:57:45 +0200
  Remove todo: 'Check the parameter syntax of connect_by' fixed with new SQLA release
  
  r9129 at Thesaurus (orig r9116):  ribasushi | 2010-04-11 12:53:20 +0200
  Fix rogue tabs
  r9130 at Thesaurus (orig r9117):  ribasushi | 2010-04-11 14:52:07 +0200
  Fix top-level PRIOR with missing '='
  Fix weird AND hardcoded in tests
  Test quotes as well
  r9131 at Thesaurus (orig r9118):  ribasushi | 2010-04-11 14:54:59 +0200
  Move oracle offline test where it belongs
  r9144 at Thesaurus (orig r9131):  rabbit | 2010-04-12 09:06:28 +0200
  Botched merge
  r9145 at Thesaurus (orig r9132):  rabbit | 2010-04-12 09:10:39 +0200
  Pesky tabs
  r9162 at Thesaurus (orig r9149):  rbo | 2010-04-14 20:19:20 +0200
  Fixed t/73oracle.t remove braces
  
  r9312 at Thesaurus (orig r9299):  rabbit | 2010-05-04 10:13:47 +0200
  _select_args processing no longer necessary
  r9382 at Thesaurus (orig r9368):  rbo | 2010-05-14 23:01:42 +0200
  Update TODO
  
  r9384 at Thesaurus (orig r9370):  rbo | 2010-05-14 23:27:13 +0200
  Fixed broken count query, because of new count query implementation.
  
  r9385 at Thesaurus (orig r9371):  rbo | 2010-05-14 23:35:33 +0200
  Rename option nocycle to connect_by_nocycle
  
  r9386 at Thesaurus (orig r9372):  rbo | 2010-05-14 23:43:29 +0200
  Fixed count subquery from disabled test case 
  
  r9387 at Thesaurus (orig r9373):  rbo | 2010-05-14 23:55:28 +0200
  Enabled count sub query test, isn't broken anymore
  
  r9388 at Thesaurus (orig r9374):  rbo | 2010-05-15 00:02:41 +0200
  Use connect_by OR connect_by_nocycle
  
  r9395 at Thesaurus (orig r9381):  rabbit | 2010-05-15 17:01:10 +0200
  Use DDC instead of DD
  r9463 at Thesaurus (orig r9449):  rbo | 2010-05-27 10:17:35 +0200
  Fixed group_by bind position problem, reported and patch by Alexande Keusch. Patch has been adjusted.
  
  r9517 at Thesaurus (orig r9503):  rabbit | 2010-06-01 01:54:18 +0200
  Switch away from explicit count-attr lists - just delete what we do not need
  r9518 at Thesaurus (orig r9504):  rabbit | 2010-06-01 02:26:49 +0200
  Do not pollute sqlmaker while scanning raw sql
  r9519 at Thesaurus (orig r9505):  rabbit | 2010-06-01 02:28:06 +0200
  Minor touches/changes
  r9521 at Thesaurus (orig r9507):  rbo | 2010-06-01 07:13:55 +0200
  Fixed typo in Changes file. Adding myself to the CONTRIBUTORS list
  
  r9528 at Thesaurus (orig r9514):  rabbit | 2010-06-01 16:02:06 +0200
  Add A.Keusch to conrib list
 
 r9532 at Thesaurus (orig r9518):  caelum | 2010-06-01 16:56:48 +0200
 pass postgres_version in producer_args when deploying to Pg
 r9535 at Thesaurus (orig r9521):  caelum | 2010-06-01 17:24:21 +0200
  r24518 at hlagh (orig r9512):  rkitover | 2010-06-01 09:16:09 -0400
  branch to use namespace::clean
  r24523 at hlagh (orig r9517):  rkitover | 2010-06-01 10:47:03 -0400
  use namespace::cleaned out imports for some common utilities
  r24526 at hlagh (orig r9520):  rkitover | 2010-06-01 11:23:36 -0400
  remove useless use of n::c
 
 r9537 at Thesaurus (orig r9523):  rabbit | 2010-06-01 17:46:05 +0200
 Rewrite test (no functional changes)
 r9538 at Thesaurus (orig r9524):  caelum | 2010-06-01 17:58:44 +0200
 fix hang in SQLAHacks
 r9539 at Thesaurus (orig r9525):  caelum | 2010-06-01 19:48:24 +0200
 pass sqlite and pg version properly on ->deploy for SQLT trunk
 r9540 at Thesaurus (orig r9526):  rabbit | 2010-06-01 21:57:46 +0200
 Preserve @_ aliasing semantics on coderefs within try{} blocks
 r9551 at Thesaurus (orig r9537):  frew | 2010-06-02 07:05:39 +0200
 perl modules shouldnt munge @INC; thats the job of the script
 r9552 at Thesaurus (orig r9538):  caelum | 2010-06-02 09:03:33 +0200
 use SET ROWCOUNT for Sybase ASE limits without an offset
 r9553 at Thesaurus (orig r9539):  caelum | 2010-06-02 10:44:44 +0200
 update Changes
 r9554 at Thesaurus (orig r9540):  rabbit | 2010-06-02 11:44:25 +0200
 lib expects a list, not an arrayref
 r9555 at Thesaurus (orig r9541):  rabbit | 2010-06-02 11:53:13 +0200
 Do not run test without sqlt
 r9556 at Thesaurus (orig r9542):  rabbit | 2010-06-02 11:55:48 +0200
 Do not use 2**32 directly - causes %u differences between 32 and 64bit
 r9557 at Thesaurus (orig r9543):  rabbit | 2010-06-02 12:43:31 +0200
 Really fix uninit warning
 r9558 at Thesaurus (orig r9544):  rabbit | 2010-06-02 12:44:59 +0200
 Relax developer policy, allowing to skip optional dependencies when in a checkout
 r9559 at Thesaurus (orig r9545):  rabbit | 2010-06-02 12:55:54 +0200
 Trash unnecessary attributes
 r9560 at Thesaurus (orig r9546):  rabbit | 2010-06-02 13:22:21 +0200
 Make sure ddl_dir is created even if a dir-object is supplied
 r9561 at Thesaurus (orig r9547):  rabbit | 2010-06-02 13:41:40 +0200
 More changelogging
 r9562 at Thesaurus (orig r9548):  rabbit | 2010-06-02 14:14:05 +0200
 Auto-fill rdbms version for sqlt
 r9563 at Thesaurus (orig r9549):  rabbit | 2010-06-02 15:11:09 +0200
 Codify result_class accessor/attribute behavior
 r9564 at Thesaurus (orig r9550):  rabbit | 2010-06-02 15:21:59 +0200
 clarify choice of value



Property changes on: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps
___________________________________________________________________
Modified: svk:merge
   - 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/cookbook_fixes:7657
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/prefetch_bug-unqualified_column_in_search_related_cond:7959
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/resultsetcolumn_custom_columns:5160
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/sqla_1.50_compat:5414
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/void_populate_resultset_cond:7935
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/trunk:7982
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_column_attr:10946
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_trunk:11788
bd5ac9a7-f185-4d95-9186-dbb8b392a572:/local/os/bast/DBIx-Class/0.08/trunk:2798
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/table_name_ref:7266
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/ado_mssql:7886
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/autocast:7418
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/belongs_to_null_col_fix:5244
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/chaining_fixes:8626
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/column_attr:5074
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/complex_join_rels:4589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/connect_info_hash:7435
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/connected_schema_leak:8264
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cookbook_fixes:7479
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_distinct:6218
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_rs:6741
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/create_scalarref_rt51559:8027
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dbicadmin_pod:8786
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dbicadmin_refactor:8691
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dephandling:8674
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/diamond_relationships:6310
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/discard_changes_replication_fix:7252
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/filter_column:9343
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/fix-update-and-delete-as_query:6162
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/get_inflated_columns_rt46953:7964
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/grouped_has_many_join:7382
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/grouped_prefetch:6885
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/handle_all_storage_methods_in_replicated:8612
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/ic_dt_post_inflate:8517
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/informix:8434
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/is_resultset_paginated:7769
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/joined_count:6323
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mc_fixes:6645
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_limit_regression:8278
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_money_type:7096
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_rno_pagination:8054
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_storage_minor_refactor:7210
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_top_fixes:6971
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multi_stuff:5565
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multicreate_fixes:7275
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multiple_version_upgrade:8429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mysql_ansi:7175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mystery_join:6589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/new_replication_transaction_fixup:7058
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/no_duplicate_indexes_for_pk_cols:8373
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/normalize_connect_info:8274
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/null_column_regression:8314
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_connect_call:6854
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle-tweaks:6222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_quotes:8812
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_shorten_aliases:8234
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/order_by_refactor:6475
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/parser_fk_index:4485
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pg_unqualified_schema:7842
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pod_fixes:8902
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch:5699
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch-group_by:7917
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_bug-unqualified_column_in_search_related_cond:7900
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_limit:6724
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_pager:8431
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_redux:7206
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pri_key_refactor:8751
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/reduce_pings:7261
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/replication_dedux:4600
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rsrc_in_storage:6577
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rt_bug_41083:5437
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/search_related_prefetch:6818
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqla_1.50_compat:5321
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqlt_parser_view:8145
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-interbase:8929
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-tweaks:6262
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subclassed_rsset:5930
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subqueried_limit_fixes:9304
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subquery:5617
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/syb_connected:6919
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase:7682
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_asa:8513
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_bulk_insert:7679
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_bulkinsert_support:7796
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_computed_columns:8496
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_mssql:6125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_refactor:7940
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_support:7797
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/table_name_ref:7132
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/top_limit_altfix:6429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/try-tiny:9436
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/type_aware_update:6619
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/unresolvable_prefetch:6949
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioning:4578
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/view_rels:7908
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/views:5585
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/void_populate_resultset_cond:7944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/tags/0.08108_prerelease_please_do_not_pull_into_it:7008
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/tags/pre_0.08109_please_do_not_merge:7336
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:9465
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510
   + 168d5346-440b-0410-b799-f706be625ff1:/DBIx-Class-current:2207
462d4d0c-b505-0410-bf8e-ce8f877b3390:/local/bast/DBIx-Class:3159
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/cookbook_fixes:7657
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/prefetch_bug-unqualified_column_in_search_related_cond:7959
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/resultsetcolumn_custom_columns:5160
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/sqla_1.50_compat:5414
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/branches/void_populate_resultset_cond:7935
4d5fae46-8e6a-4e08-abee-817e9fb894a2:/local/bast/DBIx-Class/0.08/trunk:7982
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class:32260
9c88509d-e914-0410-b01c-b9530614cbfe:/local/DBIx-Class-CDBICompat:54993
9c88509d-e914-0410-b01c-b9530614cbfe:/vendor/DBIx-Class:31122
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_column_attr:10946
ab17426e-7cd3-4704-a2a2-80b7c0a611bb:/local/dbic_trunk:11788
bd5ac9a7-f185-4d95-9186-dbb8b392a572:/local/os/bast/DBIx-Class/0.08/trunk:2798
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/table_name_ref:7266
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/ado_mssql:7886
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/autocast:7418
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/belongs_to_null_col_fix:5244
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cdbicompat_integration:4160
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/chaining_fixes:8626
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/column_attr:5074
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/complex_join_rels:4589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/connect_info_hash:7435
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/connected_schema_leak:8264
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/cookbook_fixes:7479
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_distinct:6218
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/count_rs:6741
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/create_scalarref_rt51559:8027
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dbicadmin-non-versioned:9491
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dbicadmin_pod:8786
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dbicadmin_refactor:8691
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/dephandling:8674
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/diamond_relationships:6310
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/discard_changes_replication_fix:7252
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/file_column:3920
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/filter_column:9343
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/fix-update-and-delete-as_query:6162
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/get_inflated_columns_rt46953:7964
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/grouped_has_many_join:7382
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/grouped_prefetch:6885
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/handle_all_storage_methods_in_replicated:8612
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/ic_dt_post_inflate:8517
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/informix:8434
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/is_resultset_paginated:7769
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/joined_count:6323
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mc_fixes:6645
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_limit_regression:8278
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_money_type:7096
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_rno_pagination:8054
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_storage_minor_refactor:7210
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mssql_top_fixes:6971
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multi_stuff:5565
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multicreate_fixes:7275
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/multiple_version_upgrade:8429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mysql_ansi:7175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/mystery_join:6589
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/namespace-clean:9520
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/new_replication_transaction_fixup:7058
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/no_duplicate_indexes_for_pk_cols:8373
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/normalize_connect_info:8274
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/null_column_regression:8314
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_connect_call:6854
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/on_disconnect_do:3694
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle-tweaks:6222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_hierarchical_queries_rt39121:9514
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_quotes:8812
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_sequence:4173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/oracle_shorten_aliases:8234
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/order_by_refactor:6475
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/parser_fk_index:4485
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pg_unqualified_schema:7842
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pod_fixes:8902
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch:5699
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch-group_by:7917
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_bug-unqualified_column_in_search_related_cond:7900
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_limit:6724
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_pager:8431
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/prefetch_redux:7206
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/pri_key_refactor:8751
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/reduce_pings:7261
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/replication_dedux:4600
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rs_UD_cleanup:9499
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rsrc_in_storage:6577
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/rt_bug_41083:5437
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/savepoints:4223
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/search_related_prefetch:6818
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqla_1.50_compat:5321
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sqlt_parser_view:8145
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-interbase:8929
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-ms-access:4142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/storage-tweaks:6262
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subclassed_rsset:5930
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subqueried_limit_fixes:9304
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/subquery:5617
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/syb_connected:6919
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase:7682
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_asa:8513
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_bulk_insert:7679
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_bulkinsert_support:7796
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_computed_columns:8496
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_mssql:6125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_refactor:7940
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/sybase_support:7797
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/table_name_ref:7132
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/top_limit_altfix:6429
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/try-tiny:9436
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/type_aware_update:6619
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/unresolvable_prefetch:6949
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioned_enhancements:4125
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/versioning:4578
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/view_rels:7908
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/views:5585
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/branches/void_populate_resultset_cond:7944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/tags/0.08108_prerelease_please_do_not_pull_into_it:7008
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/tags/pre_0.08109_please_do_not_merge:7336
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/DBIx-Class/0.08/trunk:9550
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-C3:318
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-current:2222
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-joins:173
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class-resultset:570
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/datetime:1716
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_compat:1855
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/find_unique_query_fixes:2142
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/inflate:1988
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/many_to_many:2025
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/re_refactor_bugfix:1944
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/reorganize_tests:1827
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset-new-refactor:1766
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_2_electric_boogaloo:2175
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/resultset_cleanup:2102
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/branches/DBIx-Class/sqlt_tests_refactor:2043
bd8105ee-0ff8-0310-8827-fb3f25b6796d:/trunk/DBIx-Class:3606
fe160bb6-dc1c-0410-9f2b-d64a711b54a5:/local/DBIC-trunk-0.08:10510

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Changes
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Changes	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Changes	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,9 +5,13 @@
         - ::Storage::DBI now correctly preserves a parent $dbh from
           terminating children, even during interpreter-global
           out-of-order destruction
+        - dbicadmin supports an -I option with the same semantics as
+          perl itself
         - InflateColumn::DateTime support for MSSQL via DBD::Sybase
         - Millisecond precision support for MSSQL datetimes for
           InflateColumn::DateTime
+        - Oracle-specific hierarchical query syntax support:
+          CONNECT BY (NOCYCLE) / START WITH / ORDER SIBLINGS BY
         - Support connecting using $ENV{DBI_DSN} and $ENV{DBI_DRIVER}
         - current_source_alias method on ResultSet objects to
           determine the alias to use in programatically assembled
@@ -19,7 +23,14 @@
           the unsafe_subselect_ok attribute, due to optimized queries
         - Support for Generic Subquery limit "emulation" - awfully slow
           and inefficient but works on almost any db, and is preferred
-          to a soft-limit
+          to software limit emulation
+        - Sybase ASE driver now uses SET ROWCOUNT where possible, and
+          Generic Subquery otherwise for limit support instead of always
+          using software limit emulation
+        - create_ddl_dir (and derivatives) now attempt to create the given
+          $ddl_dir if it does not already exist
+        - deployment_statements now automatically supplies the current RDBMS
+          version to SQLT producer_args for MySQL, Pg, SQLite and Oracle
 
     * Fixes
         - Fix nasty potentially data-eating bug when deleting/updating
@@ -29,19 +40,38 @@
         - Don't try and ensure_class_loaded an object. This doesn't work.
         - Fix as_subselect_rs to not inject resultset class-wide where
           conditions outside of the resulting subquery
+        - Fix count() failing with {for} resultset attribute (RT#56257)
+        - Fixed incorrect detection of Limit dialect on unconnected $schema
         - update() on row not in_storage no longer throws an exception
           if there are no dirty columns to update (fixes cascaded update
           annoyances)
+        - update()/delete() on prefetching resultsets no longer results
+          in malformed SQL (some $rs attributes were erroneously left in)
+        - Fix dbicadmin to allow deploy() on non-versioned schema
+        - Fix dbicadmin to respect sql_dir on upgrade() (RT#57732)
         - Update Schema::Versioned to respect hashref style of
           connection_info
         - Do not recreate the same related object twice during MultiCreate
           (solves the problem of orphaned IC::FS files)
+        - Fully qualify xp_msver selector when using DBD::Sybase with
+          MSSQL (RT#57467)
+        - Fix ::DBI::Storage to always be able to present a full set of
+          connect() attributes to e.g. Schema::Versioned
+        - Fix Oracle auto-inc trigger detection of "INSERT OR UPDATE"-type
+          triggers
 
     * Misc
-        - Add a warning to load_namespaces if a class in ResultSet/
-          is not a subclass of DBIx::Class::ResultSet
+        - Reformatted Changelog \o/
+        - Allow developers to skip optional dependency forcing when working
+          from a checkout
+        - Add a warning to load_namespaces if a class in ResultSet/ is not
+          a subclass of DBIx::Class::ResultSet
         - All DBIC exception-handling switched to Try::Tiny
+        - All DBIC modules are now free of imports via namespace::clean
         - Depend on optimized SQL::Abstract (faster SQL generation)
+        - Depend on new Class::Accessor::Grouped reintroducing optional use
+          of Class::XSAccessor (just install C::XSA and get lightning fast
+          column accessors)
 
 0.08121 2010-04-11 18:43:00 (UTC)
         - Support for Firebird RDBMS with DBD::InterBase and ODBC

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Makefile.PL
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Makefile.PL	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/Makefile.PL	2010-06-02 13:34:40 UTC (rev 9552)
@@ -12,6 +12,14 @@
 use Config;
 $ENV{PERL5LIB} = join ($Config{path_sep}, @INC);
 
+use Getopt::Long qw/:config gnu_getopt bundling_override no_ignore_case pass_through/;
+my $args = {
+  skip_author_deps => undef,
+};
+GetOptions ($args, 'skip_author_deps');
+if (@ARGV) {
+  warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
+}
 
 ###
 ### DO NOT ADD OPTIONAL DEPENDENCIES HERE, EVEN AS recommends()
@@ -44,13 +52,14 @@
   'MRO::Compat'              => '0.09',
   'Module::Find'             => '0.06',
   'Path::Class'              => '0.18',
-  'SQL::Abstract'            => '1.66',
+  'SQL::Abstract'            => '1.67',
   'SQL::Abstract::Limit'     => '0.13',
   'Sub::Name'                => '0.04',
   'Data::Dumper::Concise'    => '1.000',
   'Scope::Guard'             => '0.03',
   'Context::Preserve'        => '0.01',
   'Try::Tiny'                => '0.04',
+  'namespace::clean'         => '0.14',
 };
 
 # this is so we can order requires alphabetically
@@ -63,23 +72,45 @@
 
 
 # require extra modules for testing if we're in a checkout
+my $optdep_msg;
 if ($Module::Install::AUTHOR) {
-  warn <<'EOW';
+  if ($args->{skip_author_deps}) {
+    $optdep_msg = <<'EOW';
+
 ******************************************************************************
 ******************************************************************************
 ***                                                                        ***
+*** IGNORING AUTHOR MODE: no optional test dependencies will be forced.    ***
+***                                                                        ***
+*** If you are using this checkout with the intention of submitting a DBIC ***
+*** patch, you are *STRONGLY ENCOURAGED* to install all dependencies, so   ***
+*** that every possible unit-test will run.                                ***
+***                                                                        ***
+******************************************************************************
+******************************************************************************
+
+EOW
+  }
+  else {
+    $optdep_msg = <<'EOW';
+
+******************************************************************************
+******************************************************************************
+***                                                                        ***
 *** AUTHOR MODE: all optional test dependencies converted to hard requires ***
+***      ( to disabled re-run Makefile.PL with --skip_author_deps )        ***
 ***                                                                        ***
 ******************************************************************************
 ******************************************************************************
 
 EOW
 
-  require DBIx::Class::Optional::Dependencies;
-  $reqs->{test_requires} = {
-    %{$reqs->{test_requires}},
-    map { %$_ } (values %{DBIx::Class::Optional::Dependencies->req_group_list}),
-  };
+    require DBIx::Class::Optional::Dependencies;
+    $reqs->{test_requires} = {
+      %{$reqs->{test_requires}},
+      map { %$_ } (values %{DBIx::Class::Optional::Dependencies->req_group_list}),
+    };
+  }
 }
 
 # compose final req list, for alphabetical ordering
@@ -103,7 +134,10 @@
   $rtype->($mod, $ver);
 }
 
+# output twice since the deplist is > 70 lines
+warn $optdep_msg;
 auto_install();
+warn $optdep_msg;
 
 # re-create various autogenerated documentation bits
 if ($Module::Install::AUTHOR) {
@@ -179,7 +213,7 @@
 
 
 # Re-write META.yml to _exclude_ all forced requires (we do not want to ship this)
-if ($Module::Install::AUTHOR) {
+if ($Module::Install::AUTHOR && ! $args->{skip_author_deps} ) {
 
   # FIXME test_requires is not yet part of META
   my %original_build_requires = ( %$build_requires, %$test_requires );

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Admin.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Admin.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Admin.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -87,14 +87,13 @@
 
 sub _build_schema {
   my ($self)  = @_;
+
   require Class::MOP;
   Class::MOP::load_class($self->schema_class);
-
-  $self->connect_info->[3]->{ignore_version} =1;
-  return $self->schema_class->connect(@{$self->connect_info()} ); # ,  $self->connect_info->[3], { ignore_version => 1} );
+  $self->connect_info->[3]{ignore_version} = 1;
+  return $self->schema_class->connect(@{$self->connect_info});
 }
 
-
 =head2 resultset
 
 a resultset from the schema to operate on
@@ -195,7 +194,7 @@
 
 =head2 config
 
-Instead of loading from a file the configuration can be provided directly as a hash ref.  Please note 
+Instead of loading from a file the configuration can be provided directly as a hash ref.  Please note
 config_stanza will still be required.
 
 =cut
@@ -296,8 +295,9 @@
 
 =back
 
-L<create> will generate sql for the supplied schema_class in sql_dir.  The flavour of sql to 
-generate can be controlled by suppling a sqlt_type which should be a L<SQL::Translator> name.  
+L<create> will generate sql for the supplied schema_class in sql_dir. The
+flavour of sql to generate can be controlled by supplying a sqlt_type which
+should be a L<SQL::Translator> name.
 
 Arguments for L<SQL::Translator> can be supplied in the sqlt_args hashref.
 
@@ -334,10 +334,12 @@
 sub upgrade {
   my ($self) = @_;
   my $schema = $self->schema();
+
   if (!$schema->get_db_version()) {
     # schema is unversioned
     $schema->throw_exception ("Could not determin current schema version, please either install() or deploy().\n");
   } else {
+    $schema->upgrade_directory ($self->sql_dir) if $self->sql_dir;  # this will override whatever default the schema has
     my $ret = $schema->upgrade();
     return $ret;
   }
@@ -352,9 +354,9 @@
 
 =back
 
-install is here to help when you want to move to L<DBIx::Class::Schema::Versioned> and have an existing 
-database.  install will take a version and add the version tracking tables and 'install' the version.  No 
-further ddl modification takes place.  Setting the force attribute to a true value will allow overriding of 
+install is here to help when you want to move to L<DBIx::Class::Schema::Versioned> and have an existing
+database.  install will take a version and add the version tracking tables and 'install' the version.  No
+further ddl modification takes place.  Setting the force attribute to a true value will allow overriding of
 already versioned databases.
 
 =cut
@@ -366,9 +368,9 @@
   $version ||= $self->version();
   if (!$schema->get_db_version() ) {
     # schema is unversioned
-    print "Going to install schema version\n";
+    print "Going to install schema version\n" if (!$self->quiet);
     my $ret = $schema->install($version);
-    print "retun is $ret\n";
+    print "return is $ret\n" if (!$self->quiet);
   }
   elsif ($schema->get_db_version() and $self->force ) {
     carp "Forcing install may not be a good idea";
@@ -391,7 +393,7 @@
 
 =back
 
-deploy will create the schema at the connected database.  C<$args> are passed straight to 
+deploy will create the schema at the connected database.  C<$args> are passed straight to
 L<DBIx::Class::Schema/deploy>.
 
 =cut
@@ -399,13 +401,7 @@
 sub deploy {
   my ($self, $args) = @_;
   my $schema = $self->schema();
-  if (!$schema->get_db_version() ) {
-    # schema is unversioned
-    $schema->deploy( $args, $self->sql_dir)
-      or $schema->throw_exception ("Could not deploy schema.\n"); # FIXME deploy() does not return 1/0 on success/fail
-  } else {
-    $schema->throw_exception("A versioned schema has already been deployed, try upgrade instead.\n");
-  }
+  $schema->deploy( $args, $self->sql_dir );
 }
 
 =head2 insert
@@ -502,7 +498,7 @@
 
 =back
 
-select takes the name of a resultset from the schema_class, a where hashref and a attrs to pass to ->search. 
+select takes the name of a resultset from the schema_class, a where hashref and a attrs to pass to ->search.
 The found data is returned in a array ref where the first row will be the columns list.
 
 =cut
@@ -518,7 +514,7 @@
 
   my @data;
   my @columns = $resultset->result_source->columns();
-  push @data, [@columns];# 
+  push @data, [@columns];#
 
   while (my $row = $resultset->next()) {
     my @fields;
@@ -533,12 +529,14 @@
 
 sub _confirm {
   my ($self) = @_;
-  print "Are you sure you want to do this? (type YES to confirm) \n";
+
   # mainly here for testing
   return 1 if ($self->meta->get_attribute('_confirm')->get_value($self));
+
+  print "Are you sure you want to do this? (type YES to confirm) \n";
   my $response = <STDIN>;
-  return 1 if ($response=~/^YES/);
-  return;
+
+  return ($response=~/^YES/);
 }
 
 sub _find_stanza {

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/DB.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/DB.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/DB.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -8,7 +8,8 @@
 use DBIx::Class::Storage::DBI;
 use DBIx::Class::ClassResolver::PassThrough;
 use DBI;
-use Scalar::Util;
+use Scalar::Util 'blessed';
+use namespace::clean;
 
 unless ($INC{"DBIx/Class/CDBICompat.pm"}) {
   warn "IMPORTANT: DBIx::Class::DB is DEPRECATED AND *WILL* BE REMOVED. DO NOT USE.\n";
@@ -183,7 +184,7 @@
   }
 
   my($source, $result_class) = @{$class->_result_source_instance};
-  return unless Scalar::Util::blessed($source);
+  return unless blessed $source;
 
   if ($result_class ne $class) {  # new class
     # Give this new class its own source and register it.

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Exception.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Exception.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Exception.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,6 +6,7 @@
 use Carp::Clan qw/^DBIx::Class|^Try::Tiny/;
 use Scalar::Util qw/blessed/;
 use Try::Tiny;
+use namespace::clean;
 
 use overload
     '""' => sub { shift->{msg} },

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/InflateColumn/DateTime.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/InflateColumn/DateTime.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/InflateColumn/DateTime.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,6 +5,7 @@
 use base qw/DBIx::Class/;
 use Carp::Clan qw/^DBIx::Class/;
 use Try::Tiny;
+use namespace::clean;
 
 =head1 NAME
 
@@ -12,7 +13,7 @@
 
 =head1 SYNOPSIS
 
-Load this component and then declare one or more 
+Load this component and then declare one or more
 columns to be of the datetime, timestamp or date datatype.
 
   package Event;
@@ -63,9 +64,9 @@
 
 =head1 DESCRIPTION
 
-This module figures out the type of DateTime::Format::* class to 
-inflate/deflate with based on the type of DBIx::Class::Storage::DBI::* 
-that you are using.  If you switch from one database to a different 
+This module figures out the type of DateTime::Format::* class to
+inflate/deflate with based on the type of DBIx::Class::Storage::DBI::*
+that you are using.  If you switch from one database to a different
 one your code should continue to work without modification (though note
 that this feature is new as of 0.07, so it may not be perfect yet - bug
 reports to the list very much welcome).
@@ -296,11 +297,11 @@
 
 =over 4
 
-=item More information about the add_columns method, and column metadata, 
+=item More information about the add_columns method, and column metadata,
       can be found in the documentation for L<DBIx::Class::ResultSource>.
 
 =item Further discussion of problems inherent to the Floating timezone:
-      L<Floating DateTimes|DateTime/Floating_DateTimes> 
+      L<Floating DateTimes|DateTime/Floating_DateTimes>
       and L<< $dt->set_time_zone|DateTime/"Set" Methods >>
 
 =back

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Manual/Troubleshooting.pod
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Manual/Troubleshooting.pod	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Manual/Troubleshooting.pod	2010-06-02 13:34:40 UTC (rev 9552)
@@ -158,13 +158,5 @@
 
 The solution is to use the smallest practical value for LongReadLen.
 
-=head2 create_ddl_dir does not produce DDL for MySQL views
-
-L<SQL::Translator> does not create DDL for MySQL views if it doesn't know you
-are using mysql version 5.000001 or higher.  To explicity set this version, add
-C<mysql_version> to the C<producer_args> in the C<%sqlt> options.
-
-  $schema->create_ddl_dir(['MySQL'], '1.0', './sql/', undef, { producer_args => { mysql_version => 5.000058 } })
-
 =cut
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Optional/Dependencies.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Optional/Dependencies.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Optional/Dependencies.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -32,7 +32,6 @@
   replicated => {
     req => {
       %$moose_basic,
-      'namespace::clean'          => '0.11',
       'Hash::Merge'               => '0.12',
     },
     pod => {
@@ -66,7 +65,7 @@
 
   deploy => {
     req => {
-      'SQL::Translator'           => '0.11005',
+      'SQL::Translator'           => '0.11006',
     },
     pod => {
       title => 'Storage::DBI::deploy()',
@@ -358,7 +357,7 @@
     <<'EOD',
 Dependencies are organized in C<groups> and each group can list one or more
 required modules, with an optional minimum version (or 0 for any version).
-The group name can be used in the 
+The group name can be used in the
 EOD
   );
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/Base.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/Base.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/Base.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -3,9 +3,11 @@
 use strict;
 use warnings;
 
-use Scalar::Util ();
 use base qw/DBIx::Class/;
+
+use Scalar::Util qw/weaken blessed/;
 use Try::Tiny;
+use namespace::clean;
 
 =head1 NAME
 
@@ -119,7 +121,7 @@
 =item is_foreign_key_constraint
 
 If you are using L<SQL::Translator> to create SQL for you and you find that it
-is creating constraints where it shouldn't, or not creating them where it 
+is creating constraints where it shouldn't, or not creating them where it
 should, set this attribute to a true or false value to override the detection
 of when to create constraints.
 
@@ -127,8 +129,8 @@
 
 If C<cascade_copy> is true on a C<has_many> relationship for an
 object, then when you copy the object all the related objects will
-be copied too. To turn this behaviour off, pass C<< cascade_copy => 0 >> 
-in the C<$attr> hashref. 
+be copied too. To turn this behaviour off, pass C<< cascade_copy => 0 >>
+in the C<$attr> hashref.
 
 The behaviour defaults to C<< cascade_copy => 1 >> for C<has_many>
 relationships.
@@ -137,7 +139,7 @@
 
 By default, DBIx::Class cascades deletes across C<has_many>,
 C<has_one> and C<might_have> relationships. You can disable this
-behaviour on a per-relationship basis by supplying 
+behaviour on a per-relationship basis by supplying
 C<< cascade_delete => 0 >> in the relationship attributes.
 
 The cascaded operations are performed after the requested delete,
@@ -160,14 +162,14 @@
 =item on_delete / on_update
 
 If you are using L<SQL::Translator> to create SQL for you, you can use these
-attributes to explicitly set the desired C<ON DELETE> or C<ON UPDATE> constraint 
-type. If not supplied the SQLT parser will attempt to infer the constraint type by 
+attributes to explicitly set the desired C<ON DELETE> or C<ON UPDATE> constraint
+type. If not supplied the SQLT parser will attempt to infer the constraint type by
 interrogating the attributes of the B<opposite> relationship. For any 'multi'
-relationship with C<< cascade_delete => 1 >>, the corresponding belongs_to 
-relationship will be created with an C<ON DELETE CASCADE> constraint. For any 
+relationship with C<< cascade_delete => 1 >>, the corresponding belongs_to
+relationship will be created with an C<ON DELETE CASCADE> constraint. For any
 relationship bearing C<< cascade_copy => 1 >> the resulting belongs_to constraint
 will be C<ON UPDATE CASCADE>. If you wish to disable this autodetection, and just
-use the RDBMS' default constraint type, pass C<< on_delete => undef >> or 
+use the RDBMS' default constraint type, pass C<< on_delete => undef >> or
 C<< on_delete => '' >>, and the same for C<on_update> respectively.
 
 =item is_deferrable
@@ -254,10 +256,10 @@
       foreach my $rev_rel (keys %$reverse) {
         if ($reverse->{$rev_rel}{attrs}{accessor} && $reverse->{$rev_rel}{attrs}{accessor} eq 'multi') {
           $attrs->{related_objects}{$rev_rel} = [ $self ];
-          Scalar::Util::weaken($attrs->{related_object}{$rev_rel}[0]);
+          weaken $attrs->{related_object}{$rev_rel}[0];
         } else {
           $attrs->{related_objects}{$rev_rel} = $self;
-          Scalar::Util::weaken($attrs->{related_object}{$rev_rel});
+          weaken $attrs->{related_object}{$rev_rel};
         }
       }
     }
@@ -305,7 +307,7 @@
 
   ( $objects_rs ) = $rs->search_related_rs('relname', $cond, $attrs);
 
-This method works exactly the same as search_related, except that 
+This method works exactly the same as search_related, except that
 it guarantees a resultset, even in list context.
 
 =cut
@@ -335,9 +337,9 @@
   my $new_obj = $obj->new_related('relname', \%col_data);
 
 Create a new item of the related foreign class. If called on a
-L<Row|DBIx::Class::Manual::Glossary/"Row"> object, it will magically 
-set any foreign key columns of the new object to the related primary 
-key columns of the source object for you.  The newly created item will 
+L<Row|DBIx::Class::Manual::Glossary/"Row"> object, it will magically
+set any foreign key columns of the new object to the related primary
+key columns of the source object for you.  The newly created item will
 not be saved into your storage until you call L<DBIx::Class::Row/insert>
 on it.
 
@@ -458,7 +460,7 @@
   if (defined $f_obj) {
     my $f_class = $rel_info->{class};
     $self->throw_exception( "Object $f_obj isn't a ".$f_class )
-      unless Scalar::Util::blessed($f_obj) and $f_obj->isa($f_class);
+      unless blessed $f_obj and $f_obj->isa($f_class);
   }
   $self->set_columns(
     $self->result_source->_resolve_condition(
@@ -532,7 +534,7 @@
 =back
 
   my $actor = $schema->resultset('Actor')->find(1);
-  my @roles = $schema->resultset('Role')->search({ role => 
+  my @roles = $schema->resultset('Role')->search({ role =>
      { '-in' => ['Fred', 'Barney'] } } );
 
   $actor->set_roles(\@roles);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/BelongsTo.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/BelongsTo.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/BelongsTo.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -7,8 +7,9 @@
 use strict;
 use warnings;
 use Try::Tiny;
+use namespace::clean;
 
-our %_pod_inherit_config = 
+our %_pod_inherit_config =
   (
    class_map => { 'DBIx::Class::Relationship::BelongsTo' => 'DBIx::Class::Relationship' }
   );
@@ -17,7 +18,7 @@
   my ($class, $rel, $f_class, $cond, $attrs) = @_;
 
   # assume a foreign key contraint unless defined otherwise
-  $attrs->{is_foreign_key_constraint} = 1 
+  $attrs->{is_foreign_key_constraint} = 1
     if not exists $attrs->{is_foreign_key_constraint};
   $attrs->{undef_on_null_fk} = 1
     if not exists $attrs->{undef_on_null_fk};

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasMany.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasMany.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasMany.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,8 +4,9 @@
 use strict;
 use warnings;
 use Try::Tiny;
+use namespace::clean;
 
-our %_pod_inherit_config = 
+our %_pod_inherit_config =
   (
    class_map => { 'DBIx::Class::Relationship::HasMany' => 'DBIx::Class::Relationship' }
   );
@@ -15,7 +16,7 @@
 
   unless (ref $cond) {
     $class->ensure_class_loaded($f_class);
-    my ($pri, $too_many) = try { $class->_pri_cols } 
+    my ($pri, $too_many) = try { $class->_pri_cols }
       catch {
         $class->throw_exception("Can't infer join condition for ${rel} on ${class}: $_");
       };

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasOne.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasOne.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Relationship/HasOne.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,8 +5,9 @@
 use warnings;
 use Carp::Clan qw/^DBIx::Class/;
 use Try::Tiny;
+use namespace::clean;
 
-our %_pod_inherit_config = 
+our %_pod_inherit_config =
   (
    class_map => { 'DBIx::Class::Relationship::HasOne' => 'DBIx::Class::Relationship' }
   );

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSet.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSet.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSet.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -2,10 +2,7 @@
 
 use strict;
 use warnings;
-use overload
-        '0+'     => "count",
-        'bool'   => "_bool",
-        fallback => 1;
+use base qw/DBIx::Class/;
 use Carp::Clan qw/^DBIx::Class/;
 use DBIx::Class::Exception;
 use Data::Page;
@@ -13,9 +10,14 @@
 use DBIx::Class::ResultSetColumn;
 use DBIx::Class::ResultSourceHandle;
 use List::Util ();
-use Scalar::Util ();
-use base qw/DBIx::Class/;
+use Scalar::Util 'blessed';
+use namespace::clean;
 
+use overload
+        '0+'     => "count",
+        'bool'   => "_bool",
+        fallback => 1;
+
 __PACKAGE__->mk_group_accessors('simple' => qw/_result_class _source_handle/);
 
 =head1 NAME
@@ -197,7 +199,6 @@
   my $self = {
     _source_handle => $source,
     cond => $attrs->{where},
-    count => undef,
     pager => undef,
     attrs => $attrs
   };
@@ -1238,14 +1239,12 @@
   my $rsrc = $self->result_source;
   $attrs ||= $self->_resolved_attrs;
 
-  # only take pieces we need for a simple count
-  my $tmp_attrs = { map
-    { $_ => $attrs->{$_} }
-    qw/ alias from where bind join /
-  };
+  my $tmp_attrs = { %$attrs };
+  # take off any limits, record_filter is cdbi, and no point of ordering nor locking a count
+  delete @{$tmp_attrs}{qw/rows offset order_by record_filter for/};
 
   # overwrite the selector (supplied by the storage)
-  $tmp_attrs->{select} = $rsrc->storage->_count_select ($rsrc, $tmp_attrs);
+  $tmp_attrs->{select} = $rsrc->storage->_count_select ($rsrc, $attrs);
   $tmp_attrs->{as} = 'count';
 
   my $tmp_rs = $rsrc->resultset_class->new($rsrc, $tmp_attrs)->get_column ('count');
@@ -1262,10 +1261,9 @@
   my $rsrc = $self->result_source;
   $attrs ||= $self->_resolved_attrs;
 
-  my $sub_attrs = { map
-    { $_ => $attrs->{$_} }
-    qw/ alias from where bind join group_by having rows offset /
-  };
+  my $sub_attrs = { %$attrs };
+  # extra selectors do not go in the subquery and there is no point of ordering it, nor locking it
+  delete @{$sub_attrs}{qw/collapse select _prefetch_select as order_by for/};
 
   # if we multi-prefetch we group_by primary keys only as this is what we would
   # get out of the rs via ->next/->all. We *DO WANT* to clobber old group_by regardless
@@ -1296,7 +1294,7 @@
                ->new ($rsrc, $sub_attrs)
                 ->as_subselect_rs
                  ->search ({}, { columns => { count => $rsrc->storage->_count_select ($rsrc, $attrs) } })
-                  -> get_column ('count');
+                  ->get_column ('count');
 }
 
 sub _bool {
@@ -1434,7 +1432,8 @@
     # make a new $rs selecting only the PKs (that's all we really need)
     my $attrs = $self->_resolved_attrs_copy;
 
-    delete $attrs->{$_} for qw/collapse select as/;
+
+    delete $attrs->{$_} for qw/collapse _collapse_order_by select _prefetch_select as/;
     $attrs->{columns} = [ map { "$attrs->{alias}.$_" } ($self->result_source->_pri_cols) ];
 
     if ($needs_group_by_subq) {
@@ -1468,7 +1467,6 @@
     }
 
     my $subrs = (ref $self)->new($rsrc, $attrs);
-
     return $self->result_source->storage->_subq_update_delete($subrs, $op, $values);
   }
   else {
@@ -1934,7 +1932,7 @@
   my $value = shift;
   my $ref_type = ref $value;
   return 1 if $ref_type eq '' || $ref_type eq 'SCALAR';
-  return 1 if Scalar::Util::blessed($value);
+  return 1 if blessed $value;
   return 0;
 }
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSetColumn.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSetColumn.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSetColumn.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -7,7 +7,7 @@
 
 use Carp::Clan qw/^DBIx::Class/;
 use DBIx::Class::Exception;
-use List::Util;
+use List::Util ();
 
 =head1 NAME
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSource.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSource.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSource.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -9,6 +9,8 @@
 use DBIx::Class::Exception;
 use Carp::Clan qw/^DBIx::Class/;
 use Try::Tiny;
+use List::Util 'first';
+use namespace::clean;
 
 use base qw/DBIx::Class/;
 
@@ -143,7 +145,7 @@
 If a column name beginning with a plus sign ('+col1') is provided, the
 attributes provided will be merged with any existing attributes for the
 column, with the new attributes taking precedence in the case that an
-attribute already exists. Using this without a hashref 
+attribute already exists. Using this without a hashref
 (C<< $source->add_columns(qw/+col1 +col2/) >>) is legal, but useless --
 it does the same thing it would do without the plus.
 
@@ -175,7 +177,7 @@
 
 This contains the column type. It is automatically filled if you use the
 L<SQL::Translator::Producer::DBIx::Class::File> producer, or the
-L<DBIx::Class::Schema::Loader> module. 
+L<DBIx::Class::Schema::Loader> module.
 
 Currently there is no standard set of values for the data_type. Use
 whatever your database supports.
@@ -899,7 +901,7 @@
 
   my $schema = $source->schema();
 
-Returns the L<DBIx::Class::Schema> object that this result source 
+Returns the L<DBIx::Class::Schema> object that this result source
 belongs to.
 
 =head2 storage
@@ -1291,7 +1293,7 @@
                -is_single => (
                   $rel_info->{attrs}{accessor}
                     &&
-                  List::Util::first { $rel_info->{attrs}{accessor} eq $_ } (qw/single filter/)
+                  first { $rel_info->{attrs}{accessor} eq $_ } (qw/single filter/)
                 ),
                -alias => $as,
                -relation_chain_depth => $seen->{-relation_chain_depth} || 0,
@@ -1478,7 +1480,7 @@
                     keys %{$rel_info->{cond}};
       my @ord = (ref($rel_info->{attrs}{order_by}) eq 'ARRAY'
                    ? @{$rel_info->{attrs}{order_by}}
-   
+
                 : (defined $rel_info->{attrs}{order_by}
                        ? ($rel_info->{attrs}{order_by})
                        : ()));
@@ -1536,7 +1538,7 @@
 
 =head2 handle
 
-Obtain a new handle to this source. Returns an instance of a 
+Obtain a new handle to this source. Returns an instance of a
 L<DBIx::Class::ResultSourceHandle>.
 
 =cut

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSourceProxy/Table.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSourceProxy/Table.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/ResultSourceProxy/Table.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,7 +6,8 @@
 use base qw/DBIx::Class::ResultSourceProxy/;
 
 use DBIx::Class::ResultSource::Table;
-use Scalar::Util ();
+use Scalar::Util 'blessed';
+use namespace::clean;
 
 __PACKAGE__->mk_classdata(table_class => 'DBIx::Class::ResultSource::Table');
 
@@ -80,7 +81,7 @@
   my ($class, $table) = @_;
   return $class->result_source_instance->name unless $table;
 
-  unless (Scalar::Util::blessed($table) && $table->isa($class->table_class)) {
+  unless (blessed $table && $table->isa($class->table_class)) {
 
     my $table_class = $class->table_class;
     $class->ensure_class_loaded($table_class);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Row.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Row.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Row.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,8 +6,9 @@
 use base qw/DBIx::Class/;
 
 use DBIx::Class::Exception;
-use Scalar::Util ();
+use Scalar::Util 'blessed';
 use Try::Tiny;
+use namespace::clean;
 
 ###
 ### Internal method
@@ -189,7 +190,7 @@
         my $acc_type = $info->{attrs}{accessor} || '';
         if ($acc_type eq 'single') {
           my $rel_obj = delete $attrs->{$key};
-          if(!Scalar::Util::blessed($rel_obj)) {
+          if(!blessed $rel_obj) {
             $rel_obj = $new->__new_related_find_or_new_helper($key, $rel_obj);
           }
 
@@ -209,7 +210,7 @@
           my @objects;
           foreach my $idx (0 .. $#$others) {
             my $rel_obj = $others->[$idx];
-            if(!Scalar::Util::blessed($rel_obj)) {
+            if(!blessed $rel_obj) {
               $rel_obj = $new->__new_related_find_or_new_helper($key, $rel_obj);
             }
 
@@ -227,7 +228,7 @@
         elsif ($acc_type eq 'filter') {
           ## 'filter' should disappear and get merged in with 'single' above!
           my $rel_obj = delete $attrs->{$key};
-          if(!Scalar::Util::blessed($rel_obj)) {
+          if(!blessed $rel_obj) {
             $rel_obj = $new->__new_related_find_or_new_helper($key, $rel_obj);
           }
           if ($rel_obj->in_storage) {
@@ -303,8 +304,7 @@
     my $rel_obj = $related_stuff{$relname};
 
     if (! $self->{_rel_in_storage}{$relname}) {
-      next unless (Scalar::Util::blessed($rel_obj)
-                    && $rel_obj->isa('DBIx::Class::Row'));
+      next unless (blessed $rel_obj && $rel_obj->isa('DBIx::Class::Row'));
 
       next unless $source->_pk_depends_on(
                     $relname, { $rel_obj->get_columns }
@@ -398,9 +398,7 @@
       : $related_stuff{$relname}
     ;
 
-    if (@cands
-          && Scalar::Util::blessed($cands[0])
-            && $cands[0]->isa('DBIx::Class::Row')
+    if (@cands && blessed $cands[0] && $cands[0]->isa('DBIx::Class::Row')
     ) {
       my $reverse = $source->reverse_relationship_info($relname);
       foreach my $obj (@cands) {
@@ -1115,7 +1113,7 @@
 
   if ($source->isa('DBIx::Class::ResultSourceHandle')) {
     $source = $source_handle->resolve
-  } 
+  }
   else {
     $source_handle = $source->handle
   }

Added: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks/Oracle.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks/Oracle.pm	                        (rev 0)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks/Oracle.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -0,0 +1,120 @@
+package # Hide from PAUSE
+  DBIx::Class::SQLAHacks::Oracle;
+
+use warnings;
+use strict;
+
+use base qw( DBIx::Class::SQLAHacks );
+use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
+
+sub new {
+  my $self = shift;
+  my %opts = (ref $_[0] eq 'HASH') ? %{$_[0]} : @_;
+  push @{$opts{special_ops}}, {
+    regex => qr/^prior$/i,
+    handler => '_where_field_PRIOR',
+  };
+
+  $self->SUPER::new (\%opts);
+}
+
+sub _assemble_binds {
+  my $self = shift;
+  return map { @{ (delete $self->{"${_}_bind"}) || [] } } (qw/from where oracle_connect_by having order/);
+}
+
+
+sub _parse_rs_attrs {
+    my $self = shift;
+    my ($rs_attrs) = @_;
+
+    my ($cb_sql, @cb_bind) = $self->_connect_by($rs_attrs);
+    push @{$self->{oracle_connect_by_bind}}, @cb_bind;
+
+    my $sql = $self->SUPER::_parse_rs_attrs(@_);
+
+    return "$cb_sql $sql";
+}
+
+sub _connect_by {
+    my ($self, $attrs) = @_;
+
+    my $sql = '';
+    my @bind;
+
+    if ( ref($attrs) eq 'HASH' ) {
+        if ( $attrs->{'start_with'} ) {
+            my ($ws, @wb) = $self->_recurse_where( $attrs->{'start_with'} );
+            $sql .= $self->_sqlcase(' start with ') . $ws;
+            push @bind, @wb;
+        }
+        if ( my $connect_by = $attrs->{'connect_by'} || $attrs->{'connect_by_nocycle'} ) {
+            my ($connect_by_sql, @connect_by_sql_bind) = $self->_recurse_where( $connect_by );
+            $sql .= sprintf(" %s %s",
+                ( $attrs->{'connect_by_nocycle'} ) ? $self->_sqlcase('connect by nocycle')
+                    : $self->_sqlcase('connect by'),
+                $connect_by_sql,
+            );
+            push @bind, @connect_by_sql_bind;
+        }
+        if ( $attrs->{'order_siblings_by'} ) {
+            $sql .= $self->_order_siblings_by( $attrs->{'order_siblings_by'} );
+        }
+    }
+
+    return wantarray ? ($sql, @bind) : $sql;
+}
+
+sub _order_siblings_by {
+    my ( $self, $arg ) = @_;
+
+    my ( @sql, @bind );
+    for my $c ( $self->_order_by_chunks($arg) ) {
+        $self->_SWITCH_refkind(
+            $c,
+            {
+                SCALAR   => sub { push @sql, $c },
+                ARRAYREF => sub { push @sql, shift @$c; push @bind, @$c },
+            }
+        );
+    }
+
+    my $sql =
+      @sql
+      ? sprintf( '%s %s', $self->_sqlcase(' order siblings by'), join( ', ', @sql ) )
+      : '';
+
+    return wantarray ? ( $sql, @bind ) : $sql;
+}
+
+# we need to add a '=' only when PRIOR is used against a column diretly
+# i.e. when it is invoked by a special_op callback
+sub _where_field_PRIOR {
+  my ($self, $lhs, $op, $rhs) = @_;
+  my ($sql, @bind) = $self->_recurse_where ($rhs);
+
+  $sql = sprintf ('%s = %s %s ',
+    $self->_convert($self->_quote($lhs)),
+    $self->_sqlcase ($op),
+    $sql
+  );
+
+  return ($sql, @bind);
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+DBIx::Class::SQLAHacks::Oracle - adds hierarchical query support for Oracle to SQL::Abstract
+
+=head1 DESCRIPTION
+
+See L<DBIx::Class::Storage::DBI::Oracle::Generic> for more informations about
+how to use hierarchical queries with DBIx::Class.
+
+=cut

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/SQLAHacks.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -8,8 +8,10 @@
 use base qw/SQL::Abstract::Limit/;
 use strict;
 use warnings;
-use Carp::Clan qw/^DBIx::Class|^SQL::Abstract/;
-use Sub::Name();
+use List::Util 'first';
+use Sub::Name 'subname';
+use namespace::clean;
+use Carp::Clan qw/^DBIx::Class|^SQL::Abstract|^Try::Tiny/;
 
 BEGIN {
   # reinstall the carp()/croak() functions imported into SQL::Abstract
@@ -19,7 +21,7 @@
   for my $f (qw/carp croak/) {
 
     my $orig = \&{"SQL::Abstract::$f"};
-    *{"SQL::Abstract::$f"} = Sub::Name::subname "SQL::Abstract::$f" =>
+    *{"SQL::Abstract::$f"} = subname "SQL::Abstract::$f" =>
       sub {
         if (Carp::longmess() =~ /DBIx::Class::SQLAHacks::[\w]+ .+? called \s at/x) {
           __PACKAGE__->can($f)->(@_);
@@ -31,7 +33,12 @@
   }
 }
 
+# the "oh noes offset/top without limit" constant
+# limited to 32 bits for sanity (and since it is fed
+# to sprintf %u)
+sub __max_int { 0xFFFFFFFF };
 
+
 # Tries to determine limit dialect.
 #
 sub new {
@@ -115,7 +122,7 @@
   # for possible further chaining)
   my (@in_sel, @out_sel, %renamed);
   for my $node (@sel) {
-    if (List::Util::first { $_ =~ / (?<! $re_alias ) $re_sep /x } ($node->{as}, $node->{unquoted_sql}) )  {
+    if (first { $_ =~ / (?<! $re_alias ) $re_sep /x } ($node->{as}, $node->{unquoted_sql}) )  {
       $node->{as} =~ s/ $re_sep /__/xg;
       my $quoted_as = $self->_quote($node->{as});
       push @in_sel, sprintf '%s AS %s', $node->{sql}, $quoted_as;
@@ -340,6 +347,12 @@
 
       $mid_sel .= ', ' . $extra_order_sel->{$extra_col};
     }
+
+    # since whatever order bindvals there are, they will be realiased
+    # and need to show up in front of the entire initial inner subquery
+    # Unshift *from_bind* to make this happen (horrible, horrible, but
+    # we don't have another mechanism yet)
+    unshift @{$self->{from_bind}}, @{$self->{order_bind}};
   }
 
   # and this is order re-alias magic
@@ -384,6 +397,21 @@
   return $sql;
 }
 
+# This for Sybase ASE, to use SET ROWCOUNT when there is no offset, and
+# GenericSubQ otherwise.
+sub _RowCountOrGenericSubQ {
+  my $self = shift;
+  my ($sql, $rs_attrs, $rows, $offset) = @_;
+
+  return $self->_GenericSubQ(@_) if $offset;
+
+  return sprintf <<"EOF", $rows, $sql;
+SET ROWCOUNT %d
+%s
+SET ROWCOUNT 0
+EOF
+}
+
 # This is the most evil limit "dialect" (more of a hack) for *really*
 # stupid databases. It works by ordering the set by some unique column,
 # and calculating amount of rows that have a less-er value (thus
@@ -460,7 +488,8 @@
   my $cmp_op = $direction eq 'desc' ? '>' : '<';
   my $count_tbl_alias = 'rownum__emulation';
 
-  my $order_group_having = $self->_parse_rs_attrs($rs_attrs);
+  my $order_sql = $self->_order_by (delete $rs_attrs->{order_by});
+  my $group_having_sql = $self->_parse_rs_attrs($rs_attrs);
 
   # add the order supplement (if any) as this is what will be used for the outer WHERE
   $in_sel .= ", $_" for keys %{$extra_order_sel||{}};
@@ -468,9 +497,10 @@
   $sql = sprintf (<<EOS,
 SELECT $out_sel
   FROM (
-    SELECT $in_sel ${sql}${order_group_having}
+    SELECT $in_sel ${sql}${group_having_sql}
   ) %s
 WHERE ( SELECT COUNT(*) FROM %s %s WHERE %s $cmp_op %s ) %s
+$order_sql
 EOS
     ( map { $self->_quote ($_) } (
       $rs_attrs->{alias},
@@ -502,8 +532,6 @@
 sub select {
   my ($self, $table, $fields, $where, $rs_attrs, @rest) = @_;
 
-  $self->{"${_}_bind"} = [] for (qw/having from order/);
-
   if (not ref($table) or ref($table) eq 'SCALAR') {
     $table = $self->_quote($table);
   }
@@ -512,12 +540,22 @@
   croak "LIMIT 0 Does Not Compute" if $rest[0] == 0;
     # and anyway, SQL::Abstract::Limit will cause a barf if we don't first
 
-  my ($sql, @where_bind) = $self->SUPER::select(
+  my ($sql, @bind) = $self->SUPER::select(
     $table, $self->_recurse_fields($fields), $where, $rs_attrs, @rest
   );
-  return wantarray ? ($sql, @{$self->{from_bind}}, @where_bind, @{$self->{having_bind}}, @{$self->{order_bind}} ) : $sql;
+  push @{$self->{where_bind}}, @bind;
+
+# this *must* be called, otherwise extra binds will remain in the sql-maker
+  my @all_bind = $self->_assemble_binds;
+
+  return wantarray ? ($sql, @all_bind) : $sql;
 }
 
+sub _assemble_binds {
+  my $self = shift;
+  return map { @{ (delete $self->{"${_}_bind"}) || [] } } (qw/from where having order/);
+}
+
 # Quotes table names, and handles default inserts
 sub insert {
   my $self = shift;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema/Versioned.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema/Versioned.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema/Versioned.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -183,6 +183,7 @@
 use Carp::Clan qw/^DBIx::Class/;
 use Time::HiRes qw/gettimeofday/;
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_classdata('_filedata');
 __PACKAGE__->mk_classdata('upgrade_directory');
@@ -226,7 +227,7 @@
 
   # must be called on a fresh database
   if ($self->get_db_version()) {
-    carp 'Install not possible as versions table already exists in database';
+      $self->throw_exception("A versioned schema has already been deployed, try upgrade instead.\n");
   }
 
   # default to current version if none passed
@@ -567,23 +568,22 @@
 {
   my ($self) = @_;
 
-  my $info = $self->storage->connect_info;
-  my $args = $info->[-1];
+  my $conn_info = $self->storage->connect_info;
+  $self->{vschema} = DBIx::Class::Version->connect(@$conn_info);
+  my $conn_attrs = $self->{vschema}->storage->_dbic_connect_attributes || {};
 
-  $self->{vschema} = DBIx::Class::Version->connect(@$info);
   my $vtable = $self->{vschema}->resultset('Table');
 
   # useful when connecting from scripts etc
-  return if ($args->{ignore_version} || ($ENV{DBIC_NO_VERSION_CHECK} && !exists $args->{ignore_version}));
+  return if ($conn_attrs->{ignore_version} || ($ENV{DBIC_NO_VERSION_CHECK} && !exists $conn_attrs->{ignore_version}));
 
   # check for legacy versions table and move to new if exists
-  my $vschema_compat = DBIx::Class::VersionCompat->connect(@$info);
   unless ($self->_source_exists($vtable)) {
-    my $vtable_compat = $vschema_compat->resultset('TableCompat');
+    my $vtable_compat = DBIx::Class::VersionCompat->connect(@$conn_info)->resultset('TableCompat');
     if ($self->_source_exists($vtable_compat)) {
       $self->{vschema}->deploy;
       map { $vtable->create({ installed => $_->Installed, version => $_->Version }) } $vtable_compat->all;
-      $self->storage->dbh->do("DROP TABLE " . $vtable_compat->result_source->from);
+      $self->storage->_get_dbh->do("DROP TABLE " . $vtable_compat->result_source->from);
     }
   }
 
@@ -683,13 +683,13 @@
   # This is necessary since there are legitimate cases when upgrades can happen
   # back to back within the same second. This breaks things since we relay on the
   # ability to sort by the 'installed' value. The logical choice of an autoinc
-  # is not possible, as it will break multiple legacy installations. Also it is 
+  # is not possible, as it will break multiple legacy installations. Also it is
   # not possible to format the string sanely, as the column is a varchar(20).
   # The 'v' character is added to the front of the string, so that any version
   # formatted by this new function will sort _after_ any existing 200... strings.
   my @tm = gettimeofday();
   my @dt = gmtime ($tm[0]);
-  my $o = $vtable->create({ 
+  my $o = $vtable->create({
     version => $version,
     installed => sprintf("v%04d%02d%02d_%02d%02d%02d.%03.0f",
       $dt[5] + 1900,

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Schema.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,10 +6,12 @@
 use DBIx::Class::Exception;
 use Carp::Clan qw/^DBIx::Class/;
 use Try::Tiny;
-use Scalar::Util ();
+use Scalar::Util 'weaken';
 use File::Spec;
-use Sub::Name ();
+use Sub::Name 'subname';
 use Module::Find();
+use Storable();
+use namespace::clean;
 
 use base qw/DBIx::Class/;
 
@@ -99,7 +101,7 @@
 If a Result class is found to already have a ResultSet class set using
 L</resultset_class> to some other class, you will be warned like this:
 
-  We found ResultSet class '$rs_class' for '$result', but it seems 
+  We found ResultSet class '$rs_class' for '$result', but it seems
   that you had already set '$result' to use '$rs_set' instead
 
 Both of the sub-namespaces are configurable if you don't like the defaults,
@@ -320,7 +322,7 @@
 If any classes found do not appear to be Result class files, you will
 get the following warning:
 
-   Failed to load $comp_class. Can't find source_name method. Is 
+   Failed to load $comp_class. Can't find source_name method. Is
    $comp_class really a full DBIC result class? Fix it, move it elsewhere,
    or make your load_classes call more specific.
 
@@ -480,11 +482,11 @@
 
 =back
 
-An optional sub which you can declare in your own Schema class that will get 
+An optional sub which you can declare in your own Schema class that will get
 passed the L<SQL::Translator::Schema> object when you deploy the schema via
 L</create_ddl_dir> or L</deploy>.
 
-For an example of what you can do with this, see 
+For an example of what you can do with this, see
 L<DBIx::Class::Manual::Cookbook/Adding Indexes And Functions To Your SQL>.
 
 Note that sqlt_deploy_hook is called by L</deployment_statements>, which in turn
@@ -656,7 +658,7 @@
 
 =head2 txn_scope_guard
 
-Runs C<txn_scope_guard> on the schema's storage. See 
+Runs C<txn_scope_guard> on the schema's storage. See
 L<DBIx::Class::Storage/txn_scope_guard>.
 
 =cut
@@ -742,7 +744,7 @@
 
 Pass this method a resultsource name, and an arrayref of
 arrayrefs. The arrayrefs should contain a list of column names,
-followed by one or many sets of matching data for the given columns. 
+followed by one or many sets of matching data for the given columns.
 
 In void context, C<insert_bulk> in L<DBIx::Class::Storage::DBI> is used
 to insert the data, as this is a fast method. However, insert_bulk currently
@@ -762,16 +764,16 @@
     ...
   ]);
 
-Since wantarray context is basically the same as looping over $rs->create(...) 
+Since wantarray context is basically the same as looping over $rs->create(...)
 you won't see any performance benefits and in this case the method is more for
 convenience. Void context sends the column information directly to storage
-using <DBI>s bulk insert method. So the performance will be much better for 
+using <DBI>s bulk insert method. So the performance will be much better for
 storages that support this method.
 
-Because of this difference in the way void context inserts rows into your 
+Because of this difference in the way void context inserts rows into your
 database you need to note how this will effect any loaded components that
-override or augment insert.  For example if you are using a component such 
-as L<DBIx::Class::UUIDColumns> to populate your primary keys you MUST use 
+override or augment insert.  For example if you are using a component such
+as L<DBIx::Class::UUIDColumns> to populate your primary keys you MUST use
 wantarray context if you want the PKs automatically created.
 
 =cut
@@ -785,7 +787,7 @@
         $rs->populate($data);
     }
   } else {
-      $self->throw_exception("$name is not a resultset"); 
+      $self->throw_exception("$name is not a resultset");
   }
 }
 
@@ -813,7 +815,7 @@
   my ($self, @info) = @_;
   return $self if !@info && $self->storage;
 
-  my ($storage_class, $args) = ref $self->storage_type ? 
+  my ($storage_class, $args) = ref $self->storage_type ?
     ($self->_normalize_storage_type($self->storage_type),{}) : ($self->storage_type, {});
 
   $storage_class = 'DBIx::Class::Storage'.$storage_class
@@ -918,7 +920,7 @@
     no strict 'refs';
     no warnings 'redefine';
     foreach my $meth (qw/class source resultset/) {
-      *{"${target}::${meth}"} = Sub::Name::subname "${target}::${meth}" =>
+      *{"${target}::${meth}"} = subname "${target}::${meth}" =>
         sub { shift->schema->$meth(@_) };
     }
   }
@@ -934,7 +936,7 @@
 
 =head2 svp_begin
 
-Creates a new savepoint (does nothing outside a transaction). 
+Creates a new savepoint (does nothing outside a transaction).
 Equivalent to calling $schema->storage->svp_begin.  See
 L<DBIx::Class::Storage/"svp_begin"> for more information.
 
@@ -951,7 +953,7 @@
 
 =head2 svp_release
 
-Releases a savepoint (does nothing outside a transaction). 
+Releases a savepoint (does nothing outside a transaction).
 Equivalent to calling $schema->storage->svp_release.  See
 L<DBIx::Class::Storage/"svp_release"> for more information.
 
@@ -968,7 +970,7 @@
 
 =head2 svp_rollback
 
-Rollback to a savepoint (does nothing outside a transaction). 
+Rollback to a savepoint (does nothing outside a transaction).
 Equivalent to calling $schema->storage->svp_rollback.  See
 L<DBIx::Class::Storage/"svp_rollback"> for more information.
 
@@ -1052,8 +1054,8 @@
 created. For quoting purposes supply C<quote_table_names> and
 C<quote_field_names>.
 
-Additionally, the DBIx::Class parser accepts a C<sources> parameter as a hash 
-ref or an array ref, containing a list of source to deploy. If present, then 
+Additionally, the DBIx::Class parser accepts a C<sources> parameter as a hash
+ref or an array ref, containing a list of source to deploy. If present, then
 only the sources listed will get deployed. Furthermore, you can use the
 C<add_fk_index> parser parameter to prevent the parser from creating an index for each
 FK.
@@ -1100,7 +1102,7 @@
 
 =back
 
-A convenient shortcut to 
+A convenient shortcut to
 C<< $self->storage->create_ddl_dir($self, @args) >>.
 
 Creates an SQL file based on the Schema, for each of the specified
@@ -1141,7 +1143,7 @@
     my $filename = $table->ddl_filename($type, $dir, $version, $preversion)
 
  In recent versions variables $dir and $version were reversed in order to
- bring the signature in line with other Schema/Storage methods. If you 
+ bring the signature in line with other Schema/Storage methods. If you
  really need to maintain backward compatibility, you can do the following
  in any overriding methods:
 
@@ -1162,7 +1164,7 @@
 
 =head2 thaw
 
-Provided as the recommended way of thawing schema objects. You can call 
+Provided as the recommended way of thawing schema objects. You can call
 C<Storable::thaw> directly if you wish, but the thawed objects will not have a
 reference to any schema, so are rather useless.
 
@@ -1239,7 +1241,7 @@
 
 =back
 
-This method is called by L</load_namespaces> and L</load_classes> to install the found classes into your Schema. You should be using those instead of this one. 
+This method is called by L</load_namespaces> and L</load_classes> to install the found classes into your Schema. You should be using those instead of this one.
 
 You will only need this method if you have your Result classes in
 files which are not named after the packages (or all in the same
@@ -1304,7 +1306,7 @@
 
 =back
 
-As L</register_source> but should be used if the result class already 
+As L</register_source> but should be used if the result class already
 has a source and you want to register an extra one.
 
 =cut
@@ -1322,7 +1324,7 @@
 
   $source = $source->new({ %$source, source_name => $moniker });
   $source->schema($self);
-  Scalar::Util::weaken($source->{schema}) if ref($self);
+  weaken $source->{schema} if ref($self);
 
   my $rs_class = $source->result_class;
 
@@ -1349,7 +1351,7 @@
 
 sub _unregister_source {
     my ($self, $moniker) = @_;
-    my %reg = %{$self->source_registrations}; 
+    my %reg = %{$self->source_registrations};
 
     my $source = delete $reg{$moniker};
     $self->source_registrations(\%reg);
@@ -1430,7 +1432,7 @@
     {
       no strict 'refs';
       my $name = join '::', $target, 'schema';
-      *$name = Sub::Name::subname $name, sub { $schema };
+      *$name = subname $name, sub { $schema };
     }
 
     $schema->connection(@info);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ADO.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ADO.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ADO.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -3,6 +3,7 @@
 
 use base 'DBIx::Class::Storage::DBI';
 use Try::Tiny;
+use namespace::clean;
 
 sub _rebless {
   my $self = shift;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Cursor.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Cursor.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Cursor.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,6 +6,7 @@
 use base qw/DBIx::Class::Cursor/;
 
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors('simple' =>
     qw/sth/

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Informix.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Informix.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Informix.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,7 +6,8 @@
 use mro 'c3';
 
 use Scope::Guard ();
-use Context::Preserve ();
+use Context::Preserve 'preserve_context';
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors('simple' => '__last_insert_id');
 
@@ -72,8 +73,7 @@
     $self->_do_query('SET CONSTRAINTS ALL IMMEDIATE');
   });
 
-  return Context::Preserve::preserve_context(sub { $sub->() },
-    after => sub { $txn_scope_guard->commit });
+  return preserve_context { $sub->() } after => sub { $txn_scope_guard->commit };
 }
 
 =head2 connect_call_datetime_setup

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/InterBase.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/InterBase.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/InterBase.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,8 +4,9 @@
 use warnings;
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
-use List::Util();
+use List::Util 'first';
 use Try::Tiny;
+use namespace::clean;
 
 =head1 NAME
 
@@ -40,13 +41,13 @@
   }
 
   $self->throw_exception('No sequence to fetch') unless $sequence;
-  
+
   my ($val) = $self->_get_dbh->selectrow_array(
 'SELECT GEN_ID(' . $self->sql_maker->_quote($sequence) .
 ', 1) FROM rdb$database');
 
   return $val;
-} 
+}
 
 sub _dbh_get_autoinc_seq {
   my ($self, $dbh, $source, $col) = @_;
@@ -79,7 +80,7 @@
       $generator = uc $generator unless $quoted;
 
       return $generator
-        if List::Util::first {
+        if first {
           $self->sql_maker->quote_char ? ($_ eq $col) : (uc($_) eq uc($col))
         } @trig_cols;
     }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/MSSQL.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/MSSQL.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/MSSQL.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,9 +6,9 @@
 use base qw/DBIx::Class::Storage::DBI::UniqueIdentifier/;
 use mro 'c3';
 use Try::Tiny;
+use List::Util 'first';
+use namespace::clean;
 
-use List::Util();
-
 __PACKAGE__->mk_group_accessors(simple => qw/
   _identity _identity_method
 /);
@@ -49,12 +49,8 @@
   my $self = shift;
   my ($source, $cols, $data) = @_;
 
-  my $is_identity_insert = (List::Util::first
-      { $source->column_info ($_)->{is_auto_increment} }
-      (@{$cols})
-  )
-     ? 1
-     : 0;
+  my $is_identity_insert =
+    (first { $source->column_info ($_)->{is_auto_increment} } @{$cols}) ? 1 : 0;
 
   if ($is_identity_insert) {
      $self->_set_identity_insert ($source->name);
@@ -73,9 +69,8 @@
 
   my $supplied_col_info = $self->_resolve_column_info($source, [keys %$to_insert] );
 
-  my $is_identity_insert = (List::Util::first { $_->{is_auto_increment} } (values %$supplied_col_info) )
-     ? 1
-     : 0;
+  my $is_identity_insert =
+    (first { $_->{is_auto_increment} } values %$supplied_col_info) ? 1 : 0;
 
   if ($is_identity_insert) {
      $self->_set_identity_insert ($source->name);
@@ -162,12 +157,12 @@
   if (
     $sql !~ /^ \s* SELECT \s+ TOP \s+ \d+ \s+ /xi
       &&
-    scalar $self->_parse_order_by ($attrs->{order_by}) 
+    scalar $self->_parse_order_by ($attrs->{order_by})
   ) {
     $self->throw_exception(
       'An ordered subselect encountered - this is not safe! Please see "Ordered Subselects" in DBIx::Class::Storage::DBI::MSSQL
     ') unless $attrs->{unsafe_subselect_ok};
-    my $max = 2 ** 32;
+    my $max = $self->sql_maker->__max_int;
     $sql =~ s/^ \s* SELECT \s/SELECT TOP $max /xi;
   }
 
@@ -197,7 +192,7 @@
 
 sub datetime_parser_type {
   'DBIx::Class::Storage::DBI::MSSQL::DateTime::Format'
-} 
+}
 
 sub sqlt_type { 'SQLServer' }
 
@@ -253,7 +248,7 @@
 package # hide from PAUSE
   DBIx::Class::Storage::DBI::MSSQL::DateTime::Format;
 
-my $datetime_format      = '%Y-%m-%d %H:%M:%S.%3N'; # %F %T 
+my $datetime_format      = '%Y-%m-%d %H:%M:%S.%3N'; # %F %T
 my $smalldatetime_format = '%Y-%m-%d %H:%M:%S';
 
 my ($datetime_parser, $smalldatetime_parser);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC/Microsoft_SQL_Server.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,10 +4,9 @@
 
 use base qw/DBIx::Class::Storage::DBI::MSSQL/;
 use mro 'c3';
-
-use List::Util();
-use Scalar::Util ();
+use Scalar::Util 'reftype';
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors(simple => qw/
   _using_dynamic_cursors
@@ -67,7 +66,7 @@
 
   my $dbi_attrs = $self->_dbi_connect_info->[-1];
 
-  unless (ref($dbi_attrs) && Scalar::Util::reftype($dbi_attrs) eq 'HASH') {
+  unless (ref($dbi_attrs) && reftype $dbi_attrs eq 'HASH') {
     $dbi_attrs = {};
     push @{ $self->_dbi_connect_info }, $dbi_attrs;
   }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/ODBC.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,6 +5,7 @@
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
 use Try::Tiny;
+use namespace::clean;
 
 sub _rebless {
   my ($self) = @_;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle/Generic.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -3,8 +3,9 @@
 use strict;
 use warnings;
 use Scope::Guard ();
-use Context::Preserve ();
+use Context::Preserve 'preserve_context';
 use Try::Tiny;
+use namespace::clean;
 
 =head1 NAME
 
@@ -18,6 +19,51 @@
   __PACKAGE__->set_primary_key('id');
   __PACKAGE__->sequence('mysequence');
 
+  # Somewhere in your Code
+  # add some data to a table with a hierarchical relationship
+  $schema->resultset('Person')->create ({
+        firstname => 'foo',
+        lastname => 'bar',
+        children => [
+            {
+                firstname => 'child1',
+                lastname => 'bar',
+                children => [
+                    {
+                        firstname => 'grandchild',
+                        lastname => 'bar',
+                    }
+                ],
+            },
+            {
+                firstname => 'child2',
+                lastname => 'bar',
+            },
+        ],
+    });
+
+  # select from the hierarchical relationship
+  my $rs = $schema->resultset('Person')->search({},
+    {
+      'start_with' => { 'firstname' => 'foo', 'lastname' => 'bar' },
+      'connect_by' => { 'parentid' => { '-prior' => \'persionid' },
+      'order_siblings_by' => { -asc => 'name' },
+    };
+  );
+
+  # this will select the whole tree starting from person "foo bar", creating
+  # following query:
+  # SELECT
+  #     me.persionid me.firstname, me.lastname, me.parentid
+  # FROM
+  #     person me
+  # START WITH
+  #     firstname = 'foo' and lastname = 'bar'
+  # CONNECT BY
+  #     parentid = prior persionid
+  # ORDER SIBLINGS BY
+  #     firstname ASC
+
 =head1 DESCRIPTION
 
 This class implements base Oracle support. The subclass
@@ -31,6 +77,8 @@
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
 
+__PACKAGE__->sql_maker_class('DBIx::Class::SQLAHacks::Oracle');
+
 sub deployment_statements {
   my $self = shift;;
   my ($schema, $type, $version, $dir, $sqltargs, @rest) = @_;
@@ -40,10 +88,14 @@
   $sqltargs->{quote_table_names} = $quote_char ? 1 : 0;
   $sqltargs->{quote_field_names} = $quote_char ? 1 : 0;
 
-  my $oracle_version = try { $self->_get_dbh->get_info(18) };
+  if (
+    ! exists $sqltargs->{producer_args}{oracle_version}
+      and
+    my $dver = $self->_server_info->{dbms_version}
+  ) {
+    $sqltargs->{producer_args}{oracle_version} = $dver;
+  }
 
-  $sqltargs->{producer_args}{oracle_version} = $oracle_version;
-
   $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);
 }
 
@@ -355,15 +407,99 @@
   my $txn_scope_guard = $self->txn_scope_guard;
 
   $self->_do_query('alter session set constraints = deferred');
-  
+
   my $sg = Scope::Guard->new(sub {
     $self->_do_query('alter session set constraints = immediate');
   });
 
-  return Context::Preserve::preserve_context(sub { $sub->() },
-    after => sub { $txn_scope_guard->commit });
+  return
+    preserve_context { $sub->() } after => sub { $txn_scope_guard->commit };
 }
 
+=head1 ATTRIBUTES
+
+Following additional attributes can be used in resultsets.
+
+=head2 connect_by or connect_by_nocycle
+
+=over 4
+
+=item Value: \%connect_by
+
+=back
+
+A hashref of conditions used to specify the relationship between parent rows
+and child rows of the hierarchy.
+
+
+  connect_by => { parentid => 'prior personid' }
+
+  # adds a connect by statement to the query:
+  # SELECT
+  #     me.persionid me.firstname, me.lastname, me.parentid
+  # FROM
+  #     person me
+  # CONNECT BY
+  #     parentid = prior persionid
+  
+
+  connect_by_nocycle => { parentid => 'prior personid' }
+
+  # adds a connect by statement to the query:
+  # SELECT
+  #     me.persionid me.firstname, me.lastname, me.parentid
+  # FROM
+  #     person me
+  # CONNECT BY NOCYCLE
+  #     parentid = prior persionid
+
+
+=head2 start_with
+
+=over 4
+
+=item Value: \%condition
+
+=back
+
+A hashref of conditions which specify the root row(s) of the hierarchy.
+
+It uses the same syntax as L<DBIx::Class::ResultSet/search>
+
+  start_with => { firstname => 'Foo', lastname => 'Bar' }
+
+  # SELECT
+  #     me.persionid me.firstname, me.lastname, me.parentid
+  # FROM
+  #     person me
+  # START WITH
+  #     firstname = 'foo' and lastname = 'bar'
+  # CONNECT BY
+  #     parentid = prior persionid
+
+=head2 order_siblings_by
+
+=over 4
+
+=item Value: ($order_siblings_by | \@order_siblings_by)
+
+=back
+
+Which column(s) to order the siblings by.
+
+It uses the same syntax as L<DBIx::Class::ResultSet/order_by>
+
+  'order_siblings_by' => 'firstname ASC'
+
+  # SELECT
+  #     me.persionid me.firstname, me.lastname, me.parentid
+  # FROM
+  #     person me
+  # CONNECT BY
+  #     parentid = prior persionid
+  # ORDER SIBLINGS BY
+  #     firstname ASC
+
 =head1 AUTHOR
 
 See L<DBIx::Class/CONTRIBUTORS>.

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Oracle.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,6 +6,7 @@
 use base qw/DBIx::Class::Storage::DBI/;
 use mro 'c3';
 use Try::Tiny;
+use namespace::clean;
 
 sub _rebless {
     my ($self) = @_;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Pg.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Pg.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Pg.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -10,7 +10,8 @@
 
 use DBD::Pg qw(:pg_types);
 use Scope::Guard ();
-use Context::Preserve ();
+use Context::Preserve 'preserve_context';
+use namespace::clean;
 
 # Ask for a DBD::Pg with array support
 warn __PACKAGE__.": DBD::Pg 2.9.2 or greater is strongly recommended\n"
@@ -36,8 +37,7 @@
     $self->_do_query('SET CONSTRAINTS ALL IMMEDIATE');
   });
 
-  return Context::Preserve::preserve_context(sub { $sub->() },
-    after => sub { $txn_scope_guard->commit });
+  return preserve_context { $sub->() } after => sub { $txn_scope_guard->commit };
 }
 
 # only used when INSERT ... RETURNING is disabled
@@ -199,6 +199,23 @@
     $self->_get_dbh->pg_rollback_to($name);
 }
 
+sub deployment_statements {
+  my $self = shift;;
+  my ($schema, $type, $version, $dir, $sqltargs, @rest) = @_;
+
+  $sqltargs ||= {};
+
+  if (
+    ! exists $sqltargs->{producer_args}{postgres_version}
+      and
+    my $dver = $self->_server_info->{normalized_dbms_version}
+  ) {
+    $sqltargs->{producer_args}{postgres_version} = $dver;
+  }
+
+  $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);
+}
+
 1;
 
 __END__

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated/WithDSN.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,8 +4,8 @@
 use Scalar::Util 'reftype';
 requires qw/_query_start/;
 
+use Try::Tiny;
 use namespace::clean -except => 'meta';
-use Try::Tiny;
 
 =head1 NAME
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Replicated.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -17,6 +17,7 @@
 use Hash::Merge;
 use List::Util qw/min max reduce/;
 use Try::Tiny;
+use namespace::clean;
 
 use namespace::clean -except => 'meta';
 
@@ -38,7 +39,7 @@
   $schema->storage_type( ['::DBI::Replicated', {balancer=>'::Random'}] );
   $schema->connection(...);
 
-Next, you need to add in the Replicants.  Basically this is an array of 
+Next, you need to add in the Replicants.  Basically this is an array of
 arrayrefs, where each arrayref is database connect information.  Think of these
 arguments as what you'd pass to the 'normal' $schema->connect method.
 
@@ -59,7 +60,7 @@
   my $RS = $schema->resultset('Source')->search(undef, {force_pool=>'master'});
 
 Now $RS will force everything (both reads and writes) to use whatever was setup
-as the master storage.  'master' is hardcoded to always point to the Master, 
+as the master storage.  'master' is hardcoded to always point to the Master,
 but you can also use any Replicant name.  Please see:
 L<DBIx::Class::Storage::DBI::Replicated::Pool> and the replicants attribute for more.
 
@@ -124,7 +125,7 @@
 
 =head2 pool_type
 
-Contains the classname which will instantiate the L</pool> object.  Defaults 
+Contains the classname which will instantiate the L</pool> object.  Defaults
 to: L<DBIx::Class::Storage::DBI::Replicated::Pool>.
 
 =cut
@@ -206,7 +207,7 @@
 
 =head2 balancer
 
-Is a <DBIx::Class::Storage::DBI::Replicated::Balancer> or derived class.  This 
+Is a <DBIx::Class::Storage::DBI::Replicated::Balancer> or derived class.  This
 is a class that takes a pool (<DBIx::Class::Storage::DBI::Replicated::Pool>)
 
 =cut
@@ -236,7 +237,7 @@
 
 =head1 ATTRIBUTES IMPLEMENTING THE DBIx::Storage::DBI INTERFACE
 
-The following methods are delegated all the methods required for the 
+The following methods are delegated all the methods required for the
 L<DBIx::Class::Storage::DBI> interface.
 
 =head2 read_handler
@@ -253,7 +254,7 @@
     select
     select_single
     columns_info_for
-    _dbh_columns_info_for 
+    _dbh_columns_info_for
     _select
   /],
 );
@@ -319,6 +320,7 @@
     _fix_bind_params
     _default_dbi_connect_attributes
     _dbi_connect_info
+    _dbic_connect_attributes
     auto_savepoint
     _sqlt_version_ok
     _query_end
@@ -467,7 +469,7 @@
 =cut
 
 sub BUILDARGS {
-  my ($class, $schema, $storage_type_args, @args) = @_;  
+  my ($class, $schema, $storage_type_args, @args) = @_;
 
   return {
     schema=>$schema,
@@ -620,7 +622,7 @@
   my $reliably = sub {
     my $name = shift @_;
     $schema->resultset('User')->create({name=>$name});
-    my $user_rs = $schema->resultset('User')->find({name=>$name}); 
+    my $user_rs = $schema->resultset('User')->find({name=>$name});
     return $user_rs;
   };
 
@@ -918,7 +920,7 @@
   my $self = shift;
 
   return max map $_->lag_behind_master, $self->replicants;
-} 
+}
 
 =head2 is_replicating
 
@@ -966,7 +968,7 @@
 
 sub _driver_determined {
   my $self = shift;
-  
+
   if (@_) {
     $_->_driver_determined(@_) for $self->all_storages;
   }
@@ -976,19 +978,19 @@
 
 sub _init {
   my $self = shift;
-  
+
   $_->_init for $self->all_storages;
 }
 
 sub _run_connection_actions {
   my $self = shift;
-  
+
   $_->_run_connection_actions for $self->all_storages;
 }
 
 sub _do_connection_actions {
   my $self = shift;
-  
+
   if (@_) {
     $_->_do_connection_actions(@_) for $self->all_storages;
   }
@@ -1029,7 +1031,7 @@
 
   if (not $self->_server_info_hash) {
     my $min_version_info = (
-      reduce { $a->[0] < $b->[0] ? $a : $b } 
+      reduce { $a->[0] < $b->[0] ? $a : $b }
       map [ $numify_ver->($_->{dbms_version}), $_ ],
       map $_->_server_info, $self->all_storages
     )->[1];

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,8 +4,9 @@
 use warnings;
 use base qw/DBIx::Class::Storage::DBI::UniqueIdentifier/;
 use mro 'c3';
-use List::Util ();
+use List::Util 'first';
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors(simple => qw/
   _identity
@@ -42,9 +43,8 @@
   my $self = shift;
   my ($source, $to_insert) = @_;
 
-  my $identity_col = List::Util::first {
-      $source->column_info($_)->{is_auto_increment} 
-  } $source->columns;
+  my $identity_col =
+    first { $source->column_info($_)->{is_auto_increment} } $source->columns;
 
 # user might have an identity PK without is_auto_increment
   if (not $identity_col) {

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLite.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLite.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/SQLite.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -45,17 +45,17 @@
 }
 
 sub deployment_statements {
-  my $self = shift;;
+  my $self = shift;
   my ($schema, $type, $version, $dir, $sqltargs, @rest) = @_;
 
   $sqltargs ||= {};
 
-  # it'd be cool to use the normalized perl-style version but this needs sqlt hacking as well
-  if (my $sqlite_version = $self->_server_info->{dbms_version}) {
-    # numify, SQLT does a numeric comparison
-    $sqlite_version =~ s/^(\d+) \. (\d+) (?: \. (\d+))? .*/${1}.${2}/x;
-
-    $sqltargs->{producer_args}{sqlite_version} = $sqlite_version if $sqlite_version;
+  if (
+    ! exists $sqltargs->{producer_args}{sqlite_version}
+      and
+    my $dver = $self->_server_info->{normalized_dbms_version}
+  ) {
+    $sqltargs->{producer_args}{sqlite_version} = $dver;
   }
 
   $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,8 +5,9 @@
   DBIx::Class::Storage::DBI::Sybase::ASE
 /;
 use mro 'c3';
-use List::Util ();
-use Scalar::Util ();
+use List::Util 'first';
+use Scalar::Util 'looks_like_number';
+use namespace::clean;
 
 sub _init {
   my $self = shift;
@@ -17,7 +18,7 @@
 
 sub _fetch_identity_sql { 'SELECT ' . $_[0]->_identity_method }
 
-my $number = sub { Scalar::Util::looks_like_number($_[0]) };
+my $number = sub { looks_like_number $_[0] };
 
 my $decimal = sub { $_[0] =~ /^ [-+]? \d+ (?:\.\d*)? \z/x };
 
@@ -38,7 +39,7 @@
 
   return $self->next::method(@_) if not defined $value or not defined $type;
 
-  if (my $key = List::Util::first { $type =~ /$_/i } keys %noquote) {
+  if (my $key = first { $type =~ /$_/i } keys %noquote) {
     return 1 if $noquote{$key}->($value);
   }
   elsif ($self->is_datatype_numeric($type) && $number->($value)) {

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -9,11 +9,12 @@
 /;
 use mro 'c3';
 use Carp::Clan qw/^DBIx::Class/;
-use Scalar::Util();
-use List::Util();
+use Scalar::Util 'blessed';
+use List::Util 'first';
 use Sub::Name();
-use Data::Dumper::Concise();
+use Data::Dumper::Concise 'Dumper';
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors('simple' =>
     qw/_identity _blob_log_on_update _writer_storage _is_extra_storage
@@ -151,6 +152,16 @@
   };
 }
 
+sub _sql_maker_opts {
+  my ( $self, $opts ) = @_;
+
+  if ( $opts ) {
+    $self->{_sql_maker_opts} = { %$opts };
+  }
+
+  return { limit_dialect => 'RowCountOrGenericSubQ', %{$self->{_sql_maker_opts}||{}} };
+}
+
 sub disconnect {
   my $self = shift;
 
@@ -248,19 +259,18 @@
 
   my ($sql, $bind) = $self->next::method (@_);
 
-  my $table = Scalar::Util::blessed($ident) ? $ident->from : $ident;
+  my $table = blessed $ident ? $ident->from : $ident;
 
   my $bind_info = $self->_resolve_column_info(
     $ident, [map $_->[0], @{$bind}]
   );
-  my $bound_identity_col = List::Util::first
-    { $bind_info->{$_}{is_auto_increment} }
-    (keys %$bind_info)
+  my $bound_identity_col =
+    first { $bind_info->{$_}{is_auto_increment} }
+    keys %$bind_info
   ;
-  my $identity_col = Scalar::Util::blessed($ident) &&
-    List::Util::first
-    { $ident->column_info($_)->{is_auto_increment} }
-    $ident->columns
+  my $identity_col =
+    blessed $ident &&
+    first { $ident->column_info($_)->{is_auto_increment} } $ident->columns
   ;
 
   if (($op eq 'insert' && $bound_identity_col) ||
@@ -348,9 +358,9 @@
   my $self = shift;
   my ($source, $to_insert) = @_;
 
-  my $identity_col = (List::Util::first
-    { $source->column_info($_)->{is_auto_increment} }
-    $source->columns) || '';
+  my $identity_col =
+    (first { $source->column_info($_)->{is_auto_increment} } $source->columns)
+    || '';
 
   # check for empty insert
   # INSERT INTO foo DEFAULT VALUES -- does not work with Sybase
@@ -433,9 +443,8 @@
 
   my $table = $source->name;
 
-  my $identity_col = List::Util::first
-    { $source->column_info($_)->{is_auto_increment} }
-    $source->columns;
+  my $identity_col =
+    first { $source->column_info($_)->{is_auto_increment} } $source->columns;
 
   my $is_identity_update = $identity_col && defined $fields->{$identity_col};
 
@@ -484,14 +493,10 @@
   my $self = shift;
   my ($source, $cols, $data) = @_;
 
-  my $identity_col = List::Util::first
-    { $source->column_info($_)->{is_auto_increment} }
-    $source->columns;
+  my $identity_col =
+    first { $source->column_info($_)->{is_auto_increment} } $source->columns;
 
-  my $is_identity_insert = (List::Util::first
-    { $_ eq $identity_col }
-    @{$cols}
-  ) ? 1 : 0;
+  my $is_identity_insert = (first { $_ eq $identity_col } @{$cols}) ? 1 : 0;
 
   my @source_columns = $source->columns;
 
@@ -597,7 +602,7 @@
       return 0;
   });
 
-  my $exception;
+  my $exception = '';
   try {
     my $bulk = $self->_bulk_storage;
 
@@ -788,7 +793,7 @@
     if (not $sth) {
       $self->throw_exception(
           "Could not find row in table '$table' for blob update:\n"
-        . Data::Dumper::Concise::Dumper (\%where)
+        . (Dumper \%where)
       );
     }
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase/Microsoft_SQL_Server.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -59,7 +59,7 @@
 sub _get_server_version {
   my $self = shift;
 
-  my $product_version = $self->_get_dbh->selectrow_hashref('xp_msver ProductVersion');
+  my $product_version = $self->_get_dbh->selectrow_hashref('master.dbo.xp_msver ProductVersion');
 
   if ((my $version = $product_version->{Character_Value}) =~ /^(\d+)\./) {
     return $version;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/Sybase.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -3,6 +3,7 @@
 use strict;
 use warnings;
 use Try::Tiny;
+use namespace::clean;
 
 use base qw/DBIx::Class::Storage::DBI/;
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/mysql.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/mysql.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI/mysql.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -51,6 +51,23 @@
   return 'MySQL';
 }
 
+sub deployment_statements {
+  my $self = shift;
+  my ($schema, $type, $version, $dir, $sqltargs, @rest) = @_;
+
+  $sqltargs ||= {};
+
+  if (
+    ! exists $sqltargs->{producer_args}{mysql_version}
+      and 
+    my $dver = $self->_server_info->{normalized_dbms_version}
+  ) {
+    $sqltargs->{producer_args}{mysql_version} = $dver;
+  }
+
+  $self->next::method($schema, $type, $version, $dir, $sqltargs, @rest);
+}
+
 sub _svp_begin {
     my ($self, $name) = @_;
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBI.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -11,18 +11,18 @@
 use DBI;
 use DBIx::Class::Storage::DBI::Cursor;
 use DBIx::Class::Storage::Statistics;
-use Scalar::Util();
-use List::Util();
-use Data::Dumper::Concise();
-use Sub::Name ();
+use Scalar::Util qw/refaddr weaken reftype blessed/;
+use Data::Dumper::Concise 'Dumper';
+use Sub::Name 'subname';
 use Try::Tiny;
-use File::Path ();
+use File::Path 'make_path';
+use namespace::clean;
 
-__PACKAGE__->mk_group_accessors('simple' =>
-  qw/_connect_info _dbi_connect_info _dbh _sql_maker _sql_maker_opts _conn_pid
-     _conn_tid transaction_depth _dbh_autocommit _driver_determined savepoints
-     _server_info_hash/
-);
+__PACKAGE__->mk_group_accessors('simple' => qw/
+  _connect_info _dbi_connect_info _dbic_connect_attributes _driver_determined
+  _dbh _server_info_hash _conn_pid _conn_tid _sql_maker _sql_maker_opts
+  transaction_depth _dbh_autocommit  savepoints
+/);
 
 # the values for these accessors are picked out (and deleted) from
 # the attribute hashref passed to connect_info
@@ -66,7 +66,7 @@
 
   no strict qw/refs/;
   no warnings qw/redefine/;
-  *{__PACKAGE__ ."::$meth"} = Sub::Name::subname $meth => sub {
+  *{__PACKAGE__ ."::$meth"} = subname $meth => sub {
     if (not $_[0]->_driver_determined) {
       $_[0]->_determine_driver;
       goto $_[0]->can($meth);
@@ -581,6 +581,11 @@
   $self->_dbi_connect_info([@args,
     %attrs && !(ref $args[0] eq 'CODE') ? \%attrs : ()]);
 
+  # FIXME - dirty:
+  # save attributes them in a separate accessor so they are always
+  # introspectable, even in case of a CODE $dbhmaker
+  $self->_dbic_connect_attributes (\%attrs);
+
   return $self->_connect_info;
 }
 
@@ -727,9 +732,10 @@
 
   local $self->{_in_dbh_do} = 1;
 
-  my @args = @_;
+  # take a ref instead of a copy, to preserve coderef @_ aliasing semantics
+  my $args = \@_;
   return try {
-    $self->$code ($dbh, @args);
+    $self->$code ($dbh, @$args);
   } catch {
     $self->throw_exception($_) if $self->connected;
 
@@ -739,7 +745,7 @@
       if $ENV{DBIC_DBIRETRY_DEBUG};
 
     $self->_populate_dbh;
-    $self->$code($self->_dbh, @args);
+    $self->$code($self->_dbh, @$args);
   };
 }
 
@@ -763,19 +769,22 @@
   my $tried = 0;
   while(1) {
     my $exception;
-    my @args = @_;
+
+    # take a ref instead of a copy, to preserve coderef @_ aliasing semantics
+    my $args = \@_;
+
     try {
       $self->_get_dbh;
 
       $self->txn_begin;
       if($want_array) {
-          @result = $coderef->(@args);
+          @result = $coderef->(@$args);
       }
       elsif(defined $want_array) {
-          $result[0] = $coderef->(@args);
+          $result[0] = $coderef->(@$args);
       }
       else {
-          $coderef->(@args);
+          $coderef->(@$args);
       }
       $self->txn_commit;
     } catch {
@@ -1050,7 +1059,7 @@
       } else {
         # if connect_info is a CODEREF, we have no choice but to connect
         if (ref $self->_dbi_connect_info->[0] &&
-            Scalar::Util::reftype($self->_dbi_connect_info->[0]) eq 'CODE') {
+            reftype $self->_dbi_connect_info->[0] eq 'CODE') {
           $self->_populate_dbh;
           $driver = $self->_dbh->{Driver}{Name};
         }
@@ -1171,7 +1180,7 @@
 
     unless ($self->unsafe) {
       my $weak_self = $self;
-      Scalar::Util::weaken($weak_self);
+      weaken $weak_self;
       $dbh->{HandleError} = sub {
           if ($weak_self) {
             $weak_self->throw_exception("DBI Exception: $_[0]");
@@ -1386,7 +1395,7 @@
 sub _prep_for_execute {
   my ($self, $op, $extra_bind, $ident, $args) = @_;
 
-  if( Scalar::Util::blessed($ident) && $ident->isa("DBIx::Class::ResultSource") ) {
+  if( blessed $ident && $ident->isa("DBIx::Class::ResultSource") ) {
     $ident = $ident->from();
   }
 
@@ -1465,7 +1474,9 @@
 
   # Can this fail without throwing an exception anyways???
   my $rv = $sth->execute();
-  $self->throw_exception($sth->errstr) if !$rv;
+  $self->throw_exception(
+    $sth->errstr || $sth->err || 'Unknown error: execute() returned false, but error flags were not set...'
+  ) if !$rv;
 
   $self->_query_end( $sql, @$bind );
 
@@ -1555,9 +1566,9 @@
       $cols->[$col_idx],
       do {
         local $Data::Dumper::Maxdepth = 1; # don't dump objects, if any
-        Data::Dumper::Concise::Dumper({
+        Dumper {
           map { $cols->[$_] => $data->[$slice_idx][$_] } (0 .. $#$cols)
-        }),
+        },
       }
     );
   };
@@ -1680,7 +1691,7 @@
       $sth->finish
     }
     catch {
-      $err = shift unless defined $err 
+      $err = shift unless defined $err
     };
   };
 
@@ -1696,9 +1707,7 @@
 
     $self->throw_exception(sprintf "%s for populate slice:\n%s",
       ($tuple_status->[$i][1] || $err),
-      Data::Dumper::Concise::Dumper({
-        map { $cols->[$_] => $data->[$i][$_] } (0 .. $#$cols)
-      }),
+      Dumper { map { $cols->[$_] => $data->[$i][$_] } (0 .. $#$cols) },
     );
   }
 
@@ -1928,7 +1937,7 @@
   }
   elsif (defined $attrs->{offset}) {
     # MySQL actually recommends this approach.  I cringe.
-    $attrs->{rows} = 2**32;
+    $attrs->{rows} = $sql_maker->__max_int;
   }
 
   my @limit;
@@ -2322,8 +2331,13 @@
     carp "No directory given, using ./\n";
     $dir = './';
   } else {
-      -d $dir or File::Path::mkpath($dir)
-          or $self->throw_exception("create_ddl_dir: $! creating dir '$dir'");
+      -d $dir
+        or
+      make_path ("$dir")  # make_path does not like objects (i.e. Path::Class::Dir)
+        or
+      $self->throw_exception(
+        "Failed to create '$dir': " . ($! || $@ || 'error unknow')
+      );
   }
 
   $self->throw_exception ("Directory '$dir' does not exist\n") unless(-d $dir);

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBIHacks.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBIHacks.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/DBIHacks.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -14,6 +14,9 @@
 use mro 'c3';
 
 use Carp::Clan qw/^DBIx::Class/;
+use List::Util 'first';
+use Scalar::Util 'blessed';
+use namespace::clean;
 
 #
 # This code will remove non-selecting/non-restricting joins from
@@ -105,10 +108,7 @@
   # if a multi-type join was needed in the subquery - add a group_by to simulate the
   # collapse in the subq
   $inner_attrs->{group_by} ||= $inner_select
-    if List::Util::first
-      { ! $_->[0]{-is_single} }
-      (@{$inner_from}[1 .. $#$inner_from])
-  ;
+    if first { ! $_->[0]{-is_single} } (@{$inner_from}[1 .. $#$inner_from]);
 
   # generate the subquery
   my $subq = $self->_select_args_to_query (
@@ -240,10 +240,11 @@
   local $sql_maker->{quote_char} = "\x00"; # so that we can regex away
 
   # generate sql chunks
+  local $sql_maker->{having_bind};  # these are throw away results
   my $to_scan = {
     restricting => [
       $sql_maker->_recurse_where ($where),
-      $sql_maker->_order_by({
+      $sql_maker->_parse_rs_attrs ({
         map { $_ => $attrs->{$_} } (qw/group_by having/)
       }),
     ],
@@ -324,7 +325,7 @@
 
   # the reason this is so contrived is that $ident may be a {from}
   # structure, specifying multiple tables to join
-  if ( Scalar::Util::blessed($ident) && $ident->isa("DBIx::Class::ResultSource") ) {
+  if ( blessed $ident && $ident->isa("DBIx::Class::ResultSource") ) {
     # this is compat mode for insert/update/delete which do not deal with aliases
     $alias2source->{me} = $ident;
     $rs_alias = 'me';

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/TxnScopeGuard.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/TxnScopeGuard.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage/TxnScopeGuard.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -4,6 +4,7 @@
 use warnings;
 use Carp::Clan qw/^DBIx::Class/;
 use Try::Tiny;
+use namespace::clean;
 
 sub new {
   my ($class, $storage) = @_;
@@ -78,7 +79,7 @@
 =head1 DESCRIPTION
 
 An object that behaves much like L<Scope::Guard>, but hardcoded to do the
-right thing with transactions in DBIx::Class. 
+right thing with transactions in DBIx::Class.
 
 =head1 METHODS
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class/Storage.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -7,10 +7,11 @@
 use mro 'c3';
 
 use DBIx::Class::Exception;
-use Scalar::Util();
+use Scalar::Util 'weaken';
 use IO::File;
 use DBIx::Class::Storage::TxnScopeGuard;
 use Try::Tiny;
+use namespace::clean;
 
 __PACKAGE__->mk_group_accessors('simple' => qw/debug debugobj schema/);
 __PACKAGE__->mk_group_accessors('inherited' => 'cursor_class');
@@ -84,7 +85,7 @@
 sub set_schema {
   my ($self, $schema) = @_;
   $self->schema($schema);
-  Scalar::Util::weaken($self->{schema}) if ref $self->{schema};
+  weaken $self->{schema} if ref $self->{schema};
 }
 
 =head2 connected
@@ -186,7 +187,8 @@
 =cut
 
 sub txn_do {
-  my ($self, $coderef, @args) = @_;
+  my $self = shift;
+  my $coderef = shift;
 
   ref $coderef eq 'CODE' or $self->throw_exception
     ('$coderef must be a CODE reference');
@@ -198,19 +200,21 @@
   my $wantarray = wantarray; # Need to save this since the context
                              # inside the try{} block is independent
                              # of the context that called txn_do()
+  my $args = \@_;
+
   try {
 
     # Need to differentiate between scalar/list context to allow for
     # returning a list in scalar context to get the size of the list
     if ($wantarray) {
       # list context
-      @return_values = $coderef->(@args);
+      @return_values = $coderef->(@$args);
     } elsif (defined $wantarray) {
       # scalar context
-      $return_value = $coderef->(@args);
+      $return_value = $coderef->(@$args);
     } else {
       # void context
-      $coderef->(@args);
+      $coderef->(@$args);
     }
     $self->txn_commit;
   }
@@ -479,8 +483,8 @@
 written to the file C</path/name>.
 
 This environment variable is checked when the storage object is first
-created (when you call connect on your schema).  So, run-time changes 
-to this environment variable will not take effect unless you also 
+created (when you call connect on your schema).  So, run-time changes
+to this environment variable will not take effect unless you also
 re-connect on your schema.
 
 =head2 DBIX_CLASS_STORAGE_DBI_DEBUG

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/DBIx/Class.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -225,6 +225,8 @@
 
 aherzog: Adam Herzog <adam at herzogdesigns.com>
 
+Alexander Keusch <cpan at keusch.at>
+
 amiri: Amiri Barksdale <amiri at metalabel.com>
 
 amoore: Andrew Moore <amoore at cpan.org>
@@ -345,6 +347,8 @@
 
 rafl: Florian Ragwitz <rafl at debian.org>
 
+rbo: Robert Bohne <rbo at cpan.org>
+
 rbuels: Robert Buels <rmb32 at cornell.edu>
 
 rdj: Ryan D Johnson <ryan at innerfence.com>

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/SQL/Translator/Parser/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/SQL/Translator/Parser/DBIx/Class.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/lib/SQL/Translator/Parser/DBIx/Class.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -15,8 +15,9 @@
 use Exporter;
 use SQL::Translator::Utils qw(debug normalize_name);
 use Carp::Clan qw/^SQL::Translator|^DBIx::Class|^Try::Tiny/;
-use Scalar::Util ();
+use Scalar::Util 'weaken';
 use Try::Tiny;
+use namespace::clean;
 
 use base qw(Exporter);
 
@@ -34,7 +35,7 @@
 sub parse {
     # this is a hack to prevent schema leaks due to a retarded SQLT implementation
     # DO NOT REMOVE (until SQLT2 is out, the all of this will be rewritten anyway)
-    Scalar::Util::weaken ($_[1]) if ref ($_[1]);
+    weaken $_[1] if ref ($_[1]);
 
     my ($tr, $data)   = @_;
     my $args          = $tr->parser_args;
@@ -64,7 +65,7 @@
         $dbicschema->throw_exception ("'sources' parameter must be an array or hash ref")
           unless( $ref eq 'ARRAY' || ref eq 'HASH' );
 
-        # limit monikers to those specified in 
+        # limit monikers to those specified in
         my $sources;
         if ($ref eq 'ARRAY') {
             $sources->{$_} = 1 for (@$limit_sources);
@@ -170,7 +171,7 @@
             # Force the order of @cond to match the order of ->add_columns
             my $idx;
             my %other_columns_idx = map {'foreign.'.$_ => ++$idx } $relsource->columns;
-            my @cond = sort { $other_columns_idx{$a} cmp $other_columns_idx{$b} } keys(%{$rel_info->{cond}}); 
+            my @cond = sort { $other_columns_idx{$a} cmp $other_columns_idx{$b} } keys(%{$rel_info->{cond}});
 
             # Get the key information, mapping off the foreign/self markers
             my @refkeys = map {/^\w+\.(\w+)$/} @cond;


Property changes on: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/maint/svn-log.perl
___________________________________________________________________
Deleted: svn:mime-type
   - text/script

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/script/dbicadmin
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/script/dbicadmin	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/script/dbicadmin	2010-06-02 13:34:40 UTC (rev 9552)
@@ -39,7 +39,7 @@
       ['deploy' => 'Deploy the schema to the database',],
       ['select'   => 'Select data from the schema', ],
       ['insert'   => 'Insert data into the schema', ],
-      ['update'   => 'Update data in the schema', ], 
+      ['update'   => 'Update data in the schema', ],
       ['delete'   => 'Delete data from the schema',],
       ['op:s' => 'compatiblity option all of the above can be suppied as --op=<action>'],
       ['help' => 'display this help', { implies => { schema_class => '__dummy__' } } ],
@@ -62,6 +62,7 @@
     ['force' => 'Be forceful with some operations'],
     ['trace' => 'Turn on DBIx::Class trace output'],
     ['quiet' => 'Be less verbose'],
+    ['I:s@' => 'Same as perl\'s -I, prepended to current @INC'],
   )
 );
 
@@ -86,23 +87,27 @@
     );
 }
 
+# FIXME - lowercasing will eventually go away when Getopt::Long::Descriptive is fixed
+if($opts->{i}) {
+  require lib;
+  lib->import( @{delete $opts->{i}} );
+}
+
 if($opts->{help}) {
-    $usage->die();
+  $usage->die();
 }
 
 # option compatability mangle
 if($opts->{connect}) {
   $opts->{connect_info} = delete $opts->{connect};
 }
-
 my $admin = DBIx::Class::Admin->new( %$opts );
 
-
 my $action = $opts->{action};
 
 $action = $opts->{op} if ($action eq 'op');
 
-print "Performig action $action...\n";
+print "Performing action $action...\n";
 
 my $res = $admin->$action();
 if ($action eq 'select') {


Property changes on: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t
___________________________________________________________________
Deleted: svn:ignore
   - var


Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/03podcoverage.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/03podcoverage.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/03podcoverage.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -2,9 +2,10 @@
 use strict;
 
 use Test::More;
-use List::Util ();
+use List::Util 'first';
 use lib qw(t/lib);
 use DBICTest;
+use namespace::clean;
 
 # Don't run tests for installs
 unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
@@ -23,7 +24,7 @@
 # of what this is doing might be in order.
 # The exceptions structure below is a hash keyed by the module
 # name. Any * in a name is treated like a wildcard and will behave
-# as expected. Modules are matched by longest string first, so 
+# as expected. Modules are matched by longest string first, so
 # A::B::C will match even if there is A::B*
 
 # The value for each is a hash, which contains one or more
@@ -88,6 +89,12 @@
         /]
     },
 
+    'DBIx::Class::Admin'        => {
+        ignore => [ qw/
+            BUILD
+        /]
+     },
+
     'DBIx::Class::Storage::DBI::Replicated*'        => {
         ignore => [ qw/
             connect_call_do_sql
@@ -134,8 +141,8 @@
 foreach my $module (@modules) {
   SKIP: {
 
-    my ($match) = List::Util::first
-      { $module =~ $_ }
+    my ($match) =
+      first { $module =~ $_ }
       (sort { length $b <=> length $a || $b cmp $a } (keys %$ex_lookup) )
     ;
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/52cycle.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/52cycle.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/52cycle.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -12,7 +12,8 @@
 
 use DBICTest;
 use DBICTest::Schema;
-use Scalar::Util ();
+use Scalar::Util 'weaken';
+use namespace::clean;
 
 import Test::Memory::Cycle;
 
@@ -31,7 +32,7 @@
   my $row = $weak->{row} = $rs->first;
   memory_cycle_ok($row, 'No cycles in row');
 
-  Scalar::Util::weaken ($_) for values %$weak;
+  weaken $_ for values %$weak;
   memory_cycle_ok($weak, 'No cycles in weak object collection');
 }
 

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/72pg.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/72pg.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/72pg.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -201,6 +201,15 @@
   is( $uc_name_info->{size}, 3, "Case insensitive matching info for 'uc_name'" );
 
 
+## Test ResultSet->update
+my $artist = $schema->resultset('Artist')->first;
+my $cds = $artist->cds_unordered->search({
+    year => { '!=' => 2010 }
+}, { prefetch => 'liner_notes' });
+TODO: {
+    todo_skip 'update resultset with a prefetch over a might_have rel', 1;
+    $cds->update({ year => '2010' });
+}
 
 
 ## Test SELECT ... FOR UPDATE

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/73oracle.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/73oracle.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/73oracle.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -30,8 +30,10 @@
 
 use Test::Exception;
 use Test::More;
+
 use lib qw(t/lib);
 use DBICTest;
+use DBIC::SqlMakerTest;
 
 my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_ORA_${_}" } qw/DSN USER PASS/};
 
@@ -48,6 +50,7 @@
 eval {
   $dbh->do("DROP SEQUENCE artist_seq");
   $dbh->do("DROP SEQUENCE cd_seq");
+  $dbh->do("DROP SEQUENCE track_seq");
   $dbh->do("DROP SEQUENCE pkid1_seq");
   $dbh->do("DROP SEQUENCE pkid2_seq");
   $dbh->do("DROP SEQUENCE nonpkid_seq");
@@ -58,11 +61,12 @@
 };
 $dbh->do("CREATE SEQUENCE artist_seq START WITH 1 MAXVALUE 999999 MINVALUE 0");
 $dbh->do("CREATE SEQUENCE cd_seq START WITH 1 MAXVALUE 999999 MINVALUE 0");
+$dbh->do("CREATE SEQUENCE track_seq START WITH 1 MAXVALUE 999999 MINVALUE 0");
 $dbh->do("CREATE SEQUENCE pkid1_seq START WITH 1 MAXVALUE 999999 MINVALUE 0");
 $dbh->do("CREATE SEQUENCE pkid2_seq START WITH 10 MAXVALUE 999999 MINVALUE 0");
 $dbh->do("CREATE SEQUENCE nonpkid_seq START WITH 20 MAXVALUE 999999 MINVALUE 0");
 
-$dbh->do("CREATE TABLE artist (artistid NUMBER(12), name VARCHAR(255), rank NUMBER(38), charfield VARCHAR2(10))");
+$dbh->do("CREATE TABLE artist (artistid NUMBER(12), parentid NUMBER(12), name VARCHAR(255), rank NUMBER(38), charfield VARCHAR2(10))");
 $dbh->do("ALTER TABLE artist ADD (CONSTRAINT artist_pk PRIMARY KEY (artistid))");
 
 $dbh->do("CREATE TABLE sequence_test (pkid1 NUMBER(12), pkid2 NUMBER(12), nonpkid NUMBER(12), name VARCHAR(255))");
@@ -72,6 +76,7 @@
 $dbh->do("ALTER TABLE cd ADD (CONSTRAINT cd_pk PRIMARY KEY (cdid))");
 
 $dbh->do("CREATE TABLE track (trackid NUMBER(12), cd NUMBER(12) REFERENCES cd(cdid) DEFERRABLE, position NUMBER(12), title VARCHAR(255), last_updated_on DATE, last_updated_at DATE, small_dt DATE)");
+$dbh->do("ALTER TABLE track ADD (CONSTRAINT track_pk PRIMARY KEY (trackid))");
 
 $dbh->do(qq{
   CREATE OR REPLACE TRIGGER artist_insert_trg
@@ -97,6 +102,30 @@
     END IF;
   END;
 });
+$dbh->do(qq{
+  CREATE OR REPLACE TRIGGER cd_insert_trg
+  BEFORE INSERT ON cd
+  FOR EACH ROW
+  BEGIN
+    IF :new.cdid IS NULL THEN
+      SELECT cd_seq.nextval
+      INTO :new.cdid
+      FROM DUAL;
+    END IF;
+  END;
+});
+$dbh->do(qq{
+  CREATE OR REPLACE TRIGGER track_insert_trg
+  BEFORE INSERT ON track
+  FOR EACH ROW
+  BEGIN
+    IF :new.trackid IS NULL THEN
+      SELECT track_seq.nextval
+      INTO :new.trackid
+      FROM DUAL;
+    END IF;
+  END;
+});
 
 {
     # Swiped from t/bindtype_columns.t to avoid creating my own Resultset.
@@ -161,7 +190,7 @@
 
 # test join with row count ambiguity
 
-my $track = $schema->resultset('Track')->create({ trackid => 1, cd => 1,
+my $track = $schema->resultset('Track')->create({ cd => $cd->cdid,
     position => 1, title => 'Track1' });
 my $tjoin = $schema->resultset('Track')->search({ 'me.title' => 'Track1'},
         { join => 'cd',
@@ -173,7 +202,7 @@
 is($row->title, 'Track1', "ambiguous column ok");
 
 # check count distinct with multiple columns
-my $other_track = $schema->resultset('Track')->create({ trackid => 2, cd => 1, position => 1, title => 'Track2' });
+my $other_track = $schema->resultset('Track')->create({ cd => $cd->cdid, position => 1, title => 'Track2' });
 
 my $tcount = $schema->resultset('Track')->search(
   {},
@@ -284,6 +313,410 @@
   }
 }
 
+
+### test hierarchical queries
+if ( $schema->storage->isa('DBIx::Class::Storage::DBI::Oracle::Generic') ) {
+    my $source = $schema->source('Artist');
+
+    $source->add_column( 'parentid' );
+
+    $source->add_relationship('children', 'DBICTest::Schema::Artist',
+        { 'foreign.parentid' => 'self.artistid' },
+        {
+            accessor => 'multi',
+            join_type => 'LEFT',
+            cascade_delete => 1,
+            cascade_copy => 1,
+        } );
+    $source->add_relationship('parent', 'DBICTest::Schema::Artist',
+        { 'foreign.artistid' => 'self.parentid' },
+        { accessor => 'single' } );
+    DBICTest::Schema::Artist->add_column( 'parentid' );
+    DBICTest::Schema::Artist->has_many(
+        children => 'DBICTest::Schema::Artist',
+        { 'foreign.parentid' => 'self.artistid' }
+    );
+    DBICTest::Schema::Artist->belongs_to(
+        parent => 'DBICTest::Schema::Artist',
+        { 'foreign.artistid' => 'self.parentid' }
+    );
+
+    $schema->resultset('Artist')->create ({
+        name => 'root',
+        rank => 1,
+        cds => [],
+        children => [
+            {
+                name => 'child1',
+                rank => 2,
+                children => [
+                    {
+                        name => 'grandchild',
+                        rank => 3,
+                        cds => [
+                            {
+                                title => "grandchilds's cd" ,
+                                year => '2008',
+                                tracks => [
+                                    {
+                                        position => 1,
+                                        title => 'Track 1 grandchild',
+                                    }
+                                ],
+                            }
+                        ],
+                        children => [
+                            {
+                                name => 'greatgrandchild',
+                                rank => 3,
+                            }
+                        ],
+                    }
+                ],
+            },
+            {
+                name => 'child2',
+                rank => 3,
+            },
+        ],
+    });
+
+    $schema->resultset('Artist')->create(
+        {
+            name     => 'cycle-root',
+            children => [
+                {
+                    name     => 'cycle-child1',
+                    children => [ { name => 'cycle-grandchild' } ],
+                },
+                { name => 'cycle-child2' },
+            ],
+        }
+    );
+
+    $schema->resultset('Artist')->find({ name => 'cycle-root' })
+      ->update({ parentid => \'artistid' });
+
+    # select the whole tree
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY parentid = PRIOR artistid 
+        )',
+        [ [ name => 'root'] ],
+      );
+      is_deeply (
+        [ $rs->get_column ('name')->all ],
+        [ qw/root child1 grandchild greatgrandchild child2/ ],
+        'got artist tree',
+      );
+
+
+      is_same_sql_bind (
+        $rs->count_rs->as_query,
+        '(
+          SELECT COUNT( * )
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY parentid = PRIOR artistid 
+        )',
+        [ [ name => 'root'] ],
+      );
+
+      is( $rs->count, 5, 'Connect By count ok' );
+    }
+
+    # use order siblings by statement
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+        order_siblings_by => { -desc => 'name' },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY parentid = PRIOR artistid 
+          ORDER SIBLINGS BY name DESC
+        )',
+        [ [ name => 'root'] ],
+      );
+
+      is_deeply (
+        [ $rs->get_column ('name')->all ],
+        [ qw/root child2 child1 grandchild greatgrandchild/ ],
+        'Order Siblings By ok',
+      );
+    }
+
+    # get the root node
+    {
+      my $rs = $schema->resultset('Artist')->search({ parentid => undef }, {
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid
+            FROM artist me
+          WHERE ( parentid IS NULL )
+          START WITH name = ?
+          CONNECT BY parentid = PRIOR artistid 
+        )',
+        [ [ name => 'root'] ],
+      );
+
+      is_deeply(
+        [ $rs->get_column('name')->all ],
+        [ 'root' ],
+        'found root node',
+      );
+    }
+
+    # combine a connect by with a join
+    {
+      my $rs = $schema->resultset('Artist')->search(
+        {'cds.title' => { -like => '%cd'} },
+        {
+          join => 'cds',
+          start_with => { 'me.name' => 'root' },
+          connect_by => { parentid => { -prior => \ 'artistid' } },
+        }
+      );
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid
+            FROM artist me
+            LEFT JOIN cd cds ON cds.artist = me.artistid
+          WHERE ( cds.title LIKE ? )
+          START WITH me.name = ?
+          CONNECT BY parentid = PRIOR artistid 
+        )',
+        [ [ 'cds.title' => '%cd' ], [ 'me.name' => 'root' ] ],
+      );
+
+      is_deeply(
+        [ $rs->get_column('name')->all ],
+        [ 'grandchild' ],
+        'Connect By with a join result name ok'
+      );
+
+
+      is_same_sql_bind (
+        $rs->count_rs->as_query,
+        '(
+          SELECT COUNT( * )
+            FROM artist me
+            LEFT JOIN cd cds ON cds.artist = me.artistid
+          WHERE ( cds.title LIKE ? )
+          START WITH me.name = ?
+          CONNECT BY parentid = PRIOR artistid 
+        )',
+        [ [ 'cds.title' => '%cd' ], [ 'me.name' => 'root' ] ],
+      );
+
+      is( $rs->count, 1, 'Connect By with a join; count ok' );
+    }
+
+    # combine a connect by with order_by
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+        order_by => { -asc => [ 'LEVEL', 'name' ] },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY parentid = PRIOR artistid 
+          ORDER BY LEVEL ASC, name ASC
+        )',
+        [ [ name => 'root' ] ],
+      );
+
+      is_deeply (
+        [ $rs->get_column ('name')->all ],
+        [ qw/root child1 child2 grandchild greatgrandchild/ ],
+        'Connect By with a order_by - result name ok'
+      );
+    }
+
+
+    # limit a connect by
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+        order_by => { -asc => 'name' },
+        rows => 2,
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '( 
+            SELECT artistid, name, rank, charfield, parentid FROM (
+                  SELECT artistid, name, rank, charfield, parentid, ROWNUM rownum__index FROM (
+                      SELECT 
+                          me.artistid,
+                          me.name,
+                          me.rank,
+                          me.charfield,
+                          me.parentid 
+                      FROM artist me 
+                      START WITH name = ? 
+                      CONNECT BY parentid = PRIOR artistid
+                      ORDER BY name ASC 
+                  ) me 
+            ) me
+            WHERE rownum__index BETWEEN 1 AND 2
+        )',
+        [ [ name => 'root' ] ],
+      );
+
+      is_deeply (
+        [ $rs->get_column ('name')->all ],
+        [qw/child1 child2/],
+        'LIMIT a Connect By query - correct names'
+      );
+
+      # TODO: 
+      # prints "START WITH name = ? 
+      # CONNECT BY artistid = PRIOR parentid "
+      # after count_subq, 
+      # I will fix this later...
+      # 
+      is_same_sql_bind (
+        $rs->count_rs->as_query,
+        '( 
+            SELECT COUNT( * ) FROM (
+                SELECT artistid FROM (
+                    SELECT artistid, ROWNUM rownum__index FROM (
+                        SELECT 
+                            me.artistid
+                        FROM artist me 
+                        START WITH name = ? 
+                        CONNECT BY parentid = PRIOR artistid
+                    ) me
+                ) me 
+                WHERE rownum__index BETWEEN 1 AND 2
+            ) me
+        )',
+        [ [ name => 'root' ] ],
+      );
+
+      is( $rs->count, 2, 'Connect By; LIMIT count ok' );
+    }
+
+    # combine a connect_by with group_by and having
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        select => ['count(rank)'],
+        start_with => { name => 'root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+        group_by => ['rank'],
+        having => { 'count(rank)' => { '<', 2 } },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+            SELECT count(rank)
+            FROM artist me
+            START WITH name = ?
+            CONNECT BY parentid = PRIOR artistid
+            GROUP BY rank HAVING count(rank) < ?
+        )',
+        [ [ name => 'root' ], [ 'count(rank)' => 2 ] ],
+      );
+
+      is_deeply (
+        [ $rs->get_column ('count(rank)')->all ],
+        [1, 1],
+        'Group By a Connect By query - correct values'
+      );
+    }
+
+
+    # select the whole cycle tree without nocylce
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'cycle-root' },
+        connect_by => { parentid => { -prior => \ 'artistid' } },
+      });
+      eval { $rs->get_column ('name')->all };
+      if ( $@ =~ /ORA-01436/ ){ # ORA-01436:  CONNECT BY loop in user data
+        pass "connect by initify loop detection without nocycle";
+      }else{
+        fail "connect by initify loop detection without nocycle, not detected by oracle";
+      }
+    }
+
+    # select the whole cycle tree with nocylce
+    {
+      my $rs = $schema->resultset('Artist')->search({}, {
+        start_with => { name => 'cycle-root' },
+        '+select'  => [ \ 'CONNECT_BY_ISCYCLE' ],
+        connect_by_nocycle => { parentid => { -prior => \ 'artistid' } },
+      });
+
+      is_same_sql_bind (
+        $rs->as_query,
+        '(
+          SELECT me.artistid, me.name, me.rank, me.charfield, me.parentid, CONNECT_BY_ISCYCLE
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY NOCYCLE parentid = PRIOR artistid 
+        )',
+        [ [ name => 'cycle-root'] ],
+      );
+      is_deeply (
+        [ $rs->get_column ('name')->all ],
+        [ qw/cycle-root cycle-child1 cycle-grandchild cycle-child2/ ],
+        'got artist tree with nocycle (name)',
+      );
+      is_deeply (
+        [ $rs->get_column ('CONNECT_BY_ISCYCLE')->all ],
+        [ qw/1 0 0 0/ ],
+        'got artist tree with nocycle (CONNECT_BY_ISCYCLE)',
+      );
+
+
+      is_same_sql_bind (
+        $rs->count_rs->as_query,
+        '(
+          SELECT COUNT( * )
+            FROM artist me
+          START WITH name = ?
+          CONNECT BY NOCYCLE parentid = PRIOR artistid 
+        )',
+        [ [ name => 'cycle-root'] ],
+      );
+
+      is( $rs->count, 4, 'Connect By Nocycle count ok' );
+    }
+}
+
 done_testing;
 
 # clean up our mess
@@ -291,6 +724,7 @@
     if($schema && ($dbh = $schema->storage->dbh)) {
         $dbh->do("DROP SEQUENCE artist_seq");
         $dbh->do("DROP SEQUENCE cd_seq");
+        $dbh->do("DROP SEQUENCE track_seq");
         $dbh->do("DROP SEQUENCE pkid1_seq");
         $dbh->do("DROP SEQUENCE pkid2_seq");
         $dbh->do("DROP SEQUENCE nonpkid_seq");

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/746mssql.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/746mssql.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/746mssql.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -301,6 +301,7 @@
       is ($limited_rs->count_rs->next, 6, "$test_type: Correct count_rs of limited right-sorted joined resultset");
 
       my $queries;
+      my $orig_debug = $schema->storage->debug;
       $schema->storage->debugcb(sub { $queries++; });
       $schema->storage->debug(1);
 
@@ -312,7 +313,7 @@
       is ($queries, 1, "$test_type: Only one query with prefetch");
 
       $schema->storage->debugcb(undef);
-      $schema->storage->debug(0);
+      $schema->storage->debug($orig_debug);
 
       is_deeply (
         [map { $_->name } ($limited_rs->search_related ('owner')->all) ],
@@ -338,7 +339,10 @@
     my ($sql, @bind) = @${$owners->page(3)->as_query};
     is_deeply (
       \@bind,
-      [ ([ 'me.name' => 'somebogusstring' ], [ test => 'xxx' ]) x 2 ],  # double because of the prefetch subq
+      [
+        $dialect eq 'Top' ? [ test => 'xxx' ] : (),                 # the extra re-order bind
+        ([ 'me.name' => 'somebogusstring' ], [ test => 'xxx' ]) x 2 # double because of the prefetch subq
+      ],
     );
 
     is ($owners->page(1)->all, 3, "$test_type: has_many prefetch returns correct number of rows");

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/74mssql.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/74mssql.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/74mssql.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -52,13 +52,17 @@
 
   isa_ok($schema->storage, "DBIx::Class::Storage::$storage_type");
 
-# start disconnected to test _ping
-  $schema->storage->_dbh->disconnect;
+  SKIP: {
+    skip 'This version of DBD::Sybase segfaults on disconnect', 1 if DBD::Sybase->VERSION < 1.08;
 
-  lives_ok {
-    $schema->storage->dbh_do(sub { $_[1]->do('select 1') })
-  } '_ping works';
+    # start disconnected to test _ping
+    $schema->storage->_dbh->disconnect;
 
+    lives_ok {
+      $schema->storage->dbh_do(sub { $_[1]->do('select 1') })
+    } '_ping works';
+  }
+
   my $dbh = $schema->storage->dbh;
 
   $dbh->do("IF OBJECT_ID('artist', 'U') IS NOT NULL
@@ -177,25 +181,17 @@
   SKIP: {
     my $storage = $schema->storage;
     my $version = $storage->_server_info->{normalized_dbms_version};
-    
-    skip 1, 'could not detect SQL Server version' if not defined $version;
 
+    skip 'could not detect SQL Server version', 1 if not defined $version;
+
     my $have_rno = $version >= 9 ? 1 : 0;
 
-    # Delete version information to force RNO check when rebuilding SQLA
-    # instance.
-    no strict 'refs';
-    no warnings 'redefine';
-    local *{(ref $storage).'::_get_server_version'} = sub { undef };
-
-    my $server_info = { %{ $storage->_server_info_hash } }; # clone
-
-    delete @$server_info{qw/dbms_version normalized_dbms_version/};
-
-    local $storage->{_server_info_hash} = $server_info;
     local $storage->{_sql_maker}        = undef;
     local $storage->{_sql_maker_opts}   = undef;
 
+    local $storage->{_server_info_hash} = { %{ $storage->_server_info_hash } }; # clone
+    delete @{$storage->{_server_info_hash}}{qw/dbms_version normalized_dbms_version/};
+
     $storage->sql_maker;
 
     my $rno_detected =

Deleted: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/81transactions.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/81transactions.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/81transactions.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -1,396 +0,0 @@
-use strict;
-use warnings;
-
-use Test::More;
-use Test::Warn;
-use Test::Exception;
-use lib qw(t/lib);
-use DBICTest;
-
-my $schema = DBICTest->init_schema();
-
-my $code = sub {
-  my ($artist, @cd_titles) = @_;
-
-  $artist->create_related('cds', {
-    title => $_,
-    year => 2006,
-  }) foreach (@cd_titles);
-
-  return $artist->cds->all;
-};
-
-# Test checking of parameters
-{
-  throws_ok (sub {
-    (ref $schema)->txn_do(sub{});
-  }, qr/storage/, "can't call txn_do without storage");
-
-  throws_ok ( sub {
-    $schema->txn_do('');
-  }, qr/must be a CODE reference/, '$coderef parameter check ok');
-}
-
-# Test successful txn_do() - scalar context
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my @titles = map {'txn_do test CD ' . $_} (1..5);
-  my $artist = $schema->resultset('Artist')->find(1);
-  my $count_before = $artist->cds->count;
-  my $count_after = $schema->txn_do($code, $artist, @titles);
-  is($count_after, $count_before+5, 'successful txn added 5 cds');
-  is($artist->cds({
-    title => "txn_do test CD $_",
-  })->first->year, 2006, "new CD $_ year correct") for (1..5);
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
-}
-
-# Test successful txn_do() - list context
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my @titles = map {'txn_do test CD ' . $_} (6..10);
-  my $artist = $schema->resultset('Artist')->find(1);
-  my $count_before = $artist->cds->count;
-  my @cds = $schema->txn_do($code, $artist, @titles);
-  is(scalar @cds, $count_before+5, 'added 5 CDs and returned in list context');
-  is($artist->cds({
-    title => "txn_do test CD $_",
-  })->first->year, 2006, "new CD $_ year correct") for (6..10);
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
-}
-
-# Test nested successful txn_do()
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my $nested_code = sub {
-    my ($schema, $artist, $code) = @_;
-
-    my @titles1 = map {'nested txn_do test CD ' . $_} (1..5);
-    my @titles2 = map {'nested txn_do test CD ' . $_} (6..10);
-
-    $schema->txn_do($code, $artist, @titles1);
-    $schema->txn_do($code, $artist, @titles2);
-  };
-
-  my $artist = $schema->resultset('Artist')->find(2);
-  my $count_before = $artist->cds->count;
-
-  lives_ok (sub {
-    $schema->txn_do($nested_code, $schema, $artist, $code);
-  }, 'nested txn_do succeeded');
-
-  is($artist->cds({
-    title => 'nested txn_do test CD '.$_,
-  })->first->year, 2006, qq{nested txn_do CD$_ year ok}) for (1..10);
-  is($artist->cds->count, $count_before+10, 'nested txn_do added all CDs');
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
-}
-
-my $fail_code = sub {
-  my ($artist) = @_;
-  $artist->create_related('cds', {
-    title => 'this should not exist',
-    year => 2005,
-  });
-  die "the sky is falling";
-};
-
-# Test failed txn_do()
-{
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my $artist = $schema->resultset('Artist')->find(3);
-
-  throws_ok (sub {
-    $schema->txn_do($fail_code, $artist);
-  }, qr/the sky is falling/, 'failed txn_do threw an exception');
-
-  my $cd = $artist->cds({
-    title => 'this should not exist',
-    year => 2005,
-  })->first;
-  ok(!defined($cd), q{failed txn_do didn't change the cds table});
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
-}
-
-# do the same transaction again
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my $artist = $schema->resultset('Artist')->find(3);
-
-  throws_ok (sub {
-    $schema->txn_do($fail_code, $artist);
-  }, qr/the sky is falling/, 'failed txn_do threw an exception');
-
-  my $cd = $artist->cds({
-    title => 'this should not exist',
-    year => 2005,
-  })->first;
-  ok(!defined($cd), q{failed txn_do didn't change the cds table});
-
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
-}
-
-# Test failed txn_do() with failed rollback
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my $artist = $schema->resultset('Artist')->find(3);
-
-  # Force txn_rollback() to throw an exception
-  no warnings 'redefine';
-  no strict 'refs';
-
-  # die in rollback
-  local *{"DBIx::Class::Storage::DBI::SQLite::txn_rollback"} = sub{
-    my $storage = shift;
-    die 'FAILED';
-  };
-
-  throws_ok (
-    sub {
-      $schema->txn_do($fail_code, $artist);
-    },
-    qr/the sky is falling.+Rollback failed/s,
-    'txn_rollback threw a rollback exception (and included the original exception'
-  );
-
-  my $cd = $artist->cds({
-    title => 'this should not exist',
-    year => 2005,
-  })->first;
-  isa_ok($cd, 'DBICTest::CD', q{failed txn_do with a failed txn_rollback }.
-         q{changed the cds table});
-  $cd->delete; # Rollback failed
-  $cd = $artist->cds({
-    title => 'this should not exist',
-    year => 2005,
-  })->first;
-  ok(!defined($cd), q{deleted the failed txn's cd});
-  $schema->storage->_dbh->rollback;
-}
-
-# reset schema object (the txn_rollback meddling screws it up)
-$schema = DBICTest->init_schema();
-
-# Test nested failed txn_do()
-{
-  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
-
-  my $nested_fail_code = sub {
-    my ($schema, $artist, $code1, $code2) = @_;
-
-    my @titles = map {'nested txn_do test CD ' . $_} (1..5);
-
-    $schema->txn_do($code1, $artist, @titles); # successful txn
-    $schema->txn_do($code2, $artist);          # failed txn
-  };
-
-  my $artist = $schema->resultset('Artist')->find(3);
-
-  throws_ok ( sub {
-    $schema->txn_do($nested_fail_code, $schema, $artist, $code, $fail_code);
-  }, qr/the sky is falling/, 'nested failed txn_do threw exception');
-
-  ok(!defined($artist->cds({
-    title => 'nested txn_do test CD '.$_,
-    year => 2006,
-  })->first), qq{failed txn_do didn't add first txn's cd $_}) for (1..5);
-  my $cd = $artist->cds({
-    title => 'this should not exist',
-    year => 2005,
-  })->first;
-  ok(!defined($cd), q{failed txn_do didn't add failed txn's cd});
-}
-
-# Grab a new schema to test txn before connect
-{
-    my $schema2 = DBICTest->init_schema(no_deploy => 1);
-    lives_ok (sub {
-        $schema2->txn_begin();
-        $schema2->txn_begin();
-    }, 'Pre-connection nested transactions.');
-
-    # although not connected DBI would still warn about rolling back at disconnect
-    $schema2->txn_rollback;
-    $schema2->txn_rollback;
-    $schema2->storage->disconnect;
-}
-$schema->storage->disconnect;
-
-# Test txn_scope_guard
-{
-  my $schema = DBICTest->init_schema();
-
-  is($schema->storage->transaction_depth, 0, "Correct transaction depth");
-  my $artist_rs = $schema->resultset('Artist');
-  throws_ok {
-   my $guard = $schema->txn_scope_guard;
-
-
-    $artist_rs->create({
-      name => 'Death Cab for Cutie',
-      made_up_column => 1,
-    });
-
-   $guard->commit;
-  } qr/No such column made_up_column .*? at .*?81transactions.t line \d+/s, "Error propogated okay";
-
-  ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
-
-  my $inner_exception = '';  # set in inner() below
-  throws_ok (sub {
-    outer($schema, 1);
-  }, qr/$inner_exception/, "Nested exceptions propogated");
-
-  ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
-
-  lives_ok (sub {
-    warnings_exist ( sub {
-      # The 0 arg says don't die, just let the scope guard go out of scope
-      # forcing a txn_rollback to happen
-      outer($schema, 0);
-    }, qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./, 'Out of scope warning detected');
-    ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
-  }, 'rollback successful withot exception');
-
-  sub outer {
-    my ($schema) = @_;
-
-    my $guard = $schema->txn_scope_guard;
-    $schema->resultset('Artist')->create({
-      name => 'Death Cab for Cutie',
-    });
-    inner(@_);
-  }
-
-  sub inner {
-    my ($schema, $fatal) = @_;
-
-    my $inner_guard = $schema->txn_scope_guard;
-    is($schema->storage->transaction_depth, 2, "Correct transaction depth");
-
-    my $artist = $artist_rs->find({ name => 'Death Cab for Cutie' });
-
-    eval {
-      $artist->cds->create({
-        title => 'Plans',
-        year => 2005,
-        $fatal ? ( foo => 'bar' ) : ()
-      });
-    };
-    if ($@) {
-      # Record what got thrown so we can test it propgates out properly.
-      $inner_exception = $@;
-      die $@;
-    }
-
-    # inner guard should commit without consequences
-    $inner_guard->commit;
-  }
-}
-
-# make sure the guard does not eat exceptions
-{
-  my $schema = DBICTest->init_schema();
-  throws_ok (sub {
-    my $guard = $schema->txn_scope_guard;
-    $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
-
-    $schema->storage->disconnect;  # this should freak out the guard rollback
-
-    die 'Deliberate exception';
-  }, qr/Deliberate exception.+Rollback failed/s);
-}
-
-# make sure it warns *big* on failed rollbacks
-{
-  my $schema = DBICTest->init_schema();
-
-  # something is really confusing Test::Warn here, no time to debug
-=begin
-  warnings_exist (
-    sub {
-      my $guard = $schema->txn_scope_guard;
-      $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
-
-      $schema->storage->disconnect;  # this should freak out the guard rollback
-    },
-    [
-      qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./,
-      qr/\*+ ROLLBACK FAILED\!\!\! \*+/,
-    ],
-    'proper warnings generated on out-of-scope+rollback failure'
-  );
-=cut
-
-  my @want = (
-    qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./,
-    qr/\*+ ROLLBACK FAILED\!\!\! \*+/,
-  );
-
-  my @w;
-  local $SIG{__WARN__} = sub {
-    if (grep {$_[0] =~ $_} (@want)) {
-      push @w, $_[0];
-    }
-    else {
-      warn $_[0];
-    }
-  };
-  {
-      my $guard = $schema->txn_scope_guard;
-      $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
-
-      $schema->storage->disconnect;  # this should freak out the guard rollback
-  }
-
-  is (@w, 2, 'Both expected warnings found');
-}
-
-# make sure AutoCommit => 0 on external handles behaves correctly with scope_guard
-{
-  my $factory = DBICTest->init_schema (AutoCommit => 0);
-  cmp_ok ($factory->resultset('CD')->count, '>', 0, 'Something to delete');
-  my $dbh = $factory->storage->dbh;
-
-  ok (!$dbh->{AutoCommit}, 'AutoCommit is off on $dbh');
-  my $schema = DBICTest::Schema->connect (sub { $dbh });
-
-
-  lives_ok ( sub {
-    my $guard = $schema->txn_scope_guard;
-    $schema->resultset('CD')->delete;
-    $guard->commit;
-  }, 'No attempt to start a transaction with scope guard');
-
-  is ($schema->resultset('CD')->count, 0, 'Deletion successful');
-}
-
-# make sure AutoCommit => 0 on external handles behaves correctly with txn_do
-{
-  my $factory = DBICTest->init_schema (AutoCommit => 0);
-  cmp_ok ($factory->resultset('CD')->count, '>', 0, 'Something to delete');
-  my $dbh = $factory->storage->dbh;
-
-  ok (!$dbh->{AutoCommit}, 'AutoCommit is off on $dbh');
-  my $schema = DBICTest::Schema->connect (sub { $dbh });
-
-
-  lives_ok ( sub {
-    $schema->txn_do (sub { $schema->resultset ('CD')->delete });
-  }, 'No attempt to start a atransaction with txn_do');
-
-  is ($schema->resultset('CD')->count, 0, 'Deletion successful');
-}
-
-done_testing;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/02ddl.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/02ddl.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/02ddl.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -28,6 +28,7 @@
   no_populate=>1,
   sqlite_use_file  => 1,
 );
+
 { # create the schema
 
 #  make sure we are  clean
@@ -37,26 +38,24 @@
 my $admin = DBIx::Class::Admin->new(
   schema_class=> "DBICTest::Schema",
   sql_dir=> $sql_dir,
-  connect_info => \@connect_info, 
+  connect_info => \@connect_info,
 );
 isa_ok ($admin, 'DBIx::Class::Admin', 'create the admin object');
 lives_ok { $admin->create('MySQL'); } 'Can create MySQL sql';
 lives_ok { $admin->create('SQLite'); } 'Can Create SQLite sql';
+lives_ok {
+  $SIG{__WARN__} = sub { warn @_ unless $_[0] =~ /no such table.+DROP TABLE/s };
+  $admin->deploy()
+} 'Can Deploy schema';
 }
 
 { # upgrade schema
 
-#my $schema = DBICTest->init_schema(
-#  no_deploy    => 1,
-#  no_populat    => 1,
-#  sqlite_use_file  => 1,
-#);
-
 clean_dir($sql_dir);
 require DBICVersion_v1;
 
 my $admin = DBIx::Class::Admin->new(
-  schema_class => 'DBICVersion::Schema', 
+  schema_class => 'DBICVersion::Schema',
   sql_dir =>  $sql_dir,
   connect_info => \@connect_info,
 );
@@ -73,9 +72,10 @@
 
 
 require DBICVersion_v2;
+DBICVersion::Schema->upgrade_directory (undef);  # so that we can test use of $sql_dir
 
 $admin = DBIx::Class::Admin->new(
-  schema_class => 'DBICVersion::Schema', 
+  schema_class => 'DBICVersion::Schema',
   sql_dir =>  $sql_dir,
   connect_info => \@connect_info
 );
@@ -84,6 +84,7 @@
 {
   local $SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /DB version .+? is lower than the schema version/ };
   lives_ok {$admin->upgrade();} 'upgrade the schema';
+  dies_ok {$admin->deploy} 'cannot deploy installed schema, should upgrade instead';
 }
 
 is($schema->get_db_version, $DBICVersion::Schema::VERSION, 'Schema and db versions match');
@@ -95,7 +96,7 @@
 clean_dir($sql_dir);
 
 my $admin = DBIx::Class::Admin->new(
-  schema_class  => 'DBICVersion::Schema', 
+  schema_class  => 'DBICVersion::Schema',
   sql_dir      => $sql_dir,
   _confirm    => 1,
   connect_info  => \@connect_info,
@@ -122,7 +123,7 @@
   }
   foreach my $file ($dir->children) {
     # skip any hidden files
-    next if ($file =~ /^\./); 
+    next if ($file =~ /^\./);
     unlink $file;
   }
 }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/10script.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/10script.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/admin/10script.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -17,9 +17,13 @@
 
 my @json_backends = qw/XS JSON DWIW/;
 my $tests_per_run = 5;
+plan tests => ($tests_per_run * @json_backends) + 1;
 
-plan tests => $tests_per_run * @json_backends;
 
+# test the script is setting @INC properly
+test_exec (qw| -It/lib/testinclude --schema=DBICTestAdminInc --insert --connect=[] |);
+cmp_ok ( $? >> 8, '==', 70, 'Correct exit code from connecting a custom INC schema' );
+
 for my $js (@json_backends) {
 
     eval {JSON::Any->import ($js) };
@@ -37,22 +41,22 @@
 
     my $employees = $schema->resultset('Employee');
 
-    system( _prepare_system_args( qw|--op=insert --set={"name":"Matt"}| ) );
+    test_exec( default_args(), qw|--op=insert --set={"name":"Matt"}| );
     ok( ($employees->count()==1), "$ENV{JSON_ANY_ORDER}: insert count" );
 
     my $employee = $employees->find(1);
     ok( ($employee->name() eq 'Matt'), "$ENV{JSON_ANY_ORDER}: insert valid" );
 
-    system( _prepare_system_args( qw|--op=update --set={"name":"Trout"}| ) );
+    test_exec( default_args(), qw|--op=update --set={"name":"Trout"}| );
     $employee = $employees->find(1);
     ok( ($employee->name() eq 'Trout'), "$ENV{JSON_ANY_ORDER}: update" );
 
-    system( _prepare_system_args( qw|--op=insert --set={"name":"Aran"}| ) );
+    test_exec( default_args(), qw|--op=insert --set={"name":"Aran"}| );
 
     SKIP: {
         skip ("MSWin32 doesn't support -| either", 1) if $^O eq 'MSWin32';
 
-        open(my $fh, "-|",  _prepare_system_args( qw|--op=select --attrs={"order_by":"name"}| ) ) or die $!;
+        open(my $fh, "-|",  ( 'script/dbicadmin', default_args(), qw|--op=select --attrs={"order_by":"name"}| ) ) or die $!;
         my $data = do { local $/; <$fh> };
         close($fh);
         if (!ok( ($data=~/Aran.*Trout/s), "$ENV{JSON_ANY_ORDER}: select with attrs" )) {
@@ -60,32 +64,35 @@
         };
     }
 
-    system( _prepare_system_args( qw|--op=delete --where={"name":"Trout"}| ) );
+    test_exec( default_args(), qw|--op=delete --where={"name":"Trout"}| );
     ok( ($employees->count()==1), "$ENV{JSON_ANY_ORDER}: delete" );
 }
 
+sub default_args {
+  return (
+    qw|--quiet --schema=DBICTest::Schema --class=Employee|,
+    q|--connect=["dbi:SQLite:dbname=t/var/DBIxClass.db","","",{"AutoCommit":1}]|,
+    qw|--force -I testincludenoniterference|,
+  );
+}
+
 # Why do we need this crap? Apparently MSWin32 can not pass through quotes properly
 # (sometimes it will and sometimes not, depending on what compiler was used to build
 # perl). So we go the extra mile to escape all the quotes. We can't also use ' instead
 # of ", because JSON::XS (proudly) does not support "malformed JSON" as the author
 # calls it. Bleh.
 #
-sub _prepare_system_args {
-    my $perl = $^X;
+sub test_exec {
+  my $perl = $^X;
 
-    my @args = (
-        qw|script/dbicadmin --quiet --schema=DBICTest::Schema --class=Employee|,
-        q|--connect=["dbi:SQLite:dbname=t/var/DBIxClass.db","","",{"AutoCommit":1}]|,
-        qw|--force|,
-        @_,
-    );
+  my @args = ('script/dbicadmin', @_);
 
-    if ( $^O eq 'MSWin32' ) {
-        $perl = qq|"$perl"|;    # execution will fail if $^X contains paths
-        for (@args) {
-            $_ =~ s/"/\\"/g;
-        }
+  if ( $^O eq 'MSWin32' ) {
+    $perl = qq|"$perl"|;    # execution will fail if $^X contains paths
+    for (@args) {
+      $_ =~ s/"/\\"/g;
     }
+  }
 
-    return ($perl, @args);
+  system ($perl, @args);
 }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/cdbi/02-Film.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/cdbi/02-Film.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/cdbi/02-Film.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -1,5 +1,7 @@
 use strict;
 use Test::More;
+use Scalar::Util 'refaddr';
+use namespace::clean;
 $| = 1;
 
 BEGIN {
@@ -383,21 +385,21 @@
   # my bad taste is your bad taste
   my $btaste  = Film->retrieve('Bad Taste');
   my $btaste2 = Film->retrieve('Bad Taste');
-  is Scalar::Util::refaddr($btaste), Scalar::Util::refaddr($btaste2),
+  is refaddr $btaste, refaddr $btaste2,
     "Retrieving twice gives ref to same object";
 
   my ($btaste5) = Film->search(title=>'Bad Taste');
-  is Scalar::Util::refaddr($btaste), Scalar::Util::refaddr($btaste5),
+  is refaddr $btaste, refaddr $btaste5,
     "Searching also gives ref to same object";
 
   $btaste2->remove_from_object_index;
   my $btaste3 = Film->retrieve('Bad Taste');
-  isnt Scalar::Util::refaddr($btaste2), Scalar::Util::refaddr($btaste3),
+  isnt refaddr $btaste2, refaddr $btaste3,
     "Removing from object_index and retrieving again gives new object";
 
   $btaste3->clear_object_index;
   my $btaste4 = Film->retrieve('Bad Taste');
-  isnt Scalar::Util::refaddr($btaste2), Scalar::Util::refaddr($btaste4),
+  isnt refaddr $btaste2, refaddr $btaste4,
     "Clearing cache and retrieving again gives new object";
  
   $btaste=Film->insert({
@@ -407,7 +409,7 @@
     NumExplodingSheep => 2,
   });
   $btaste2 = Film->retrieve('Bad Taste 2');
-  is Scalar::Util::refaddr($btaste), Scalar::Util::refaddr($btaste2),
+  is refaddr $btaste, refaddr $btaste2,
     "Creating and retrieving gives ref to same object";
  
 }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/datetime_mssql.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/datetime_mssql.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/datetime_mssql.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -1,5 +1,5 @@
 use strict;
-use warnings;  
+use warnings;
 
 use Test::More;
 use Test::Exception;
@@ -36,6 +36,7 @@
 
 my $schema;
 
+SKIP:
 for my $connect_info (@connect_info) {
   my ($dsn, $user, $pass) = @$connect_info;
 
@@ -45,6 +46,15 @@
     on_connect_call => 'datetime_setup'
   });
 
+  {
+    my $w;
+    local $SIG{__WARN__} = sub { $w = shift };
+    $schema->storage->ensure_connected;
+    if ($w =~ /Your DBD::Sybase is too old to support DBIx::Class::InflateColumn::DateTime/) {
+      skip "Skipping tests on old DBD::Sybase " . DBD::Sybase->VERSION, 1;
+    }
+  }
+
   my $guard = Scope::Guard->new(\&cleanup);
 
 # coltype, column, datehash

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/hri.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/hri.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/inflate/hri.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -2,6 +2,7 @@
 use warnings;
 
 use Test::More;
+use Test::Exception;
 use lib qw(t/lib);
 use DBICTest;
 my $schema = DBICTest->init_schema();
@@ -11,35 +12,62 @@
 {
     my $rs = $schema->resultset('CD')->search ({}, {
         order_by => 'cdid',
-        # use the hashref inflator class as result class
-        result_class => 'DBIx::Class::ResultClass::HashRefInflator',
     });
 
-    # get the defined columns
-    my @dbic_cols = sort $rs->result_source->columns;
+    my $orig_resclass = $rs->result_class;
+    eval "package DBICTest::CDSubclass; use base '$orig_resclass'";
 
-    # fetch first record
-    my $datahashref1 = $rs->first;
+# override on a specific $rs object, should not chain
+    $rs->result_class ('DBICTest::CDSubclass');
 
-    my @hashref_cols = sort keys %$datahashref1;
+    my $cd = $rs->find ({cdid => 1});
+    is (ref $cd, 'DBICTest::CDSubclass', 'result_class override propagates to find');
 
-    is_deeply( \@dbic_cols, \@hashref_cols, 'returned columns' );
+    $cd = $rs->search({ cdid => 1 })->single;
+    is (ref $cd, $orig_resclass, 'result_class override does not propagate over seach+single');
 
-    my $cd1 = $rs->find ({cdid => 1});
-    is_deeply ( $cd1, $datahashref1, 'first/find return the same thing');
+    $cd = $rs->search()->find ({ cdid => 1 });
+    is (ref $cd, $orig_resclass, 'result_class override does not propagate over seach+find');
 
-    my $cd2 = $rs->search({ cdid => 1 })->single;
-    is_deeply ( $cd2, $datahashref1, 'first/search+single return the same thing');
+# set as attr - should propagate
+    my $hri_rs = $rs->search ({}, { result_class => 'DBIx::Class::ResultClass::HashRefInflator' });
+    is ($rs->result_class, 'DBICTest::CDSubclass', 'original class unchanged');
+    is ($hri_rs->result_class, 'DBIx::Class::ResultClass::HashRefInflator', 'result_class accessor pre-set via attribute');
 
-    $rs->result_class('DBIx::Class::Row');
 
-    is( $rs->result_class, 'DBIx::Class::Row', 'result_class set' );
+    my $datahashref1 = $hri_rs->next;
+    is_deeply(
+      [ sort keys %$datahashref1 ],
+      [ sort $rs->result_source->columns ],
+      'returned correct columns',
+    );
 
+    $cd = $hri_rs->find ({cdid => 1});
+    is_deeply ( $cd, $datahashref1, 'first/find return the same thing (result_class attr propagates)');
+
+    $cd = $hri_rs->search({ cdid => 1 })->single;
+    is_deeply ( $cd, $datahashref1, 'first/search+single return the same thing (result_class attr propagates)');
+
+    $hri_rs->result_class ('DBIx::Class::Row'); # something bogus
     is(
-        $rs->search->result_class, 'DBIx::Class::ResultClass::HashRefInflator',
-        'result_class set using accessor does not propagate over search'
+        $hri_rs->search->result_class, 'DBIx::Class::ResultClass::HashRefInflator',
+        'result_class set using accessor does not propagate over unused search'
     );
 
+# test result class auto-loading
+    throws_ok (
+      sub { $rs->result_class ('nonexsitant_bogus_class') },
+      qr/Can't locate nonexsitant_bogus_class.pm/,
+      'Attempt to load on accessor override',
+    );
+    is ($rs->result_class, 'DBICTest::CDSubclass', 'class unchanged');
+
+    throws_ok (
+      sub { $rs->search ({}, { result_class => 'nonexsitant_bogus_class' }) },
+      qr/Can't locate nonexsitant_bogus_class.pm/,
+      'Attempt to load on accessor override',
+    );
+    is ($rs->result_class, 'DBICTest::CDSubclass', 'class unchanged');
 }
 
 sub check_cols_of {

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICTest/AuthorCheck.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICTest/AuthorCheck.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICTest/AuthorCheck.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -31,7 +31,7 @@
 
   # not using file->stat as it invokes File::stat which in turn breaks stat(_)
   my ($mf_pl_mtime, $mf_mtime, $optdeps_mtime) = ( map
-    { (stat ($root->file ($_)) )[9] }
+    { (stat ($root->file ($_)) )[9] || undef }  # stat returns () on nonexistent files
     (qw|Makefile.PL  Makefile|, $optdeps)
   );
 
@@ -66,10 +66,16 @@
 We have a number of reasons to believe that this is a development
 checkout and that you, the user, did not run `perl Makefile.PL`
 before using this code. You absolutely _must_ perform this step,
-and ensure you have all required dependencies present. Not doing
+to ensure you have all required dependencies present. Not doing
 so often results in a lot of wasted time for other contributors
 trying to assit you with spurious "its broken!" problems.
 
+By default DBICs Makefile.PL turns all optional dependenciess into
+*HARD REQUIREMENTS*, in order to make sure that the entire test
+suite is executed, and no tests are skipped due to missing modules.
+If you for some reason need to disable this behavior - supply the
+--skip_author_deps option when running perl Makefile.PL
+
 If you are seeing this message unexpectedly (i.e. you are in fact
 attempting a regular installation be it through CPAN or manually),
 please report the situation to either the mailing list or to the

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v1.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v1.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v1.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -36,12 +36,8 @@
 
 __PACKAGE__->register_class('Table', 'DBICVersion::Table');
 __PACKAGE__->load_components('+DBIx::Class::Schema::Versioned');
+__PACKAGE__->upgrade_directory('t/var/');
 
-sub upgrade_directory
-{
-    return 't/var/';
-}
-
 sub ordered_schema_versions {
   return('1.0','2.0','3.0');
 }

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v2.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v2.pm	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v2.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -47,9 +47,4 @@
 __PACKAGE__->upgrade_directory('t/var/');
 __PACKAGE__->backup_directory('t/var/backup/');
 
-#sub upgrade_directory
-#{
-#    return 't/var/';
-#}
-
 1;


Property changes on: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/DBICVersion_v3.pm
___________________________________________________________________
Deleted: svn:keywords
   - "Author Date Id Revision Url"

Added: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/testinclude/DBICTestAdminInc.pm
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/testinclude/DBICTestAdminInc.pm	                        (rev 0)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/lib/testinclude/DBICTestAdminInc.pm	2010-06-02 13:34:40 UTC (rev 9552)
@@ -0,0 +1,6 @@
+package DBICTestAdminInc;
+use base 'DBIx::Class::Schema';
+
+sub connect { exit 70 } # this is what the test will expect to see
+
+1;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/resultset/update_delete.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/resultset/update_delete.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/resultset/update_delete.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -5,6 +5,8 @@
 use Test::More;
 use Test::Exception;
 use DBICTest;
+use DBIC::DebugObj;
+use DBIC::SqlMakerTest;
 
 my $schema = DBICTest->init_schema();
 
@@ -105,7 +107,6 @@
 );
 
 $sub_rs->delete;
-
 is ($tkfks->count, $tkfk_cnt -= 2, 'Only two rows deleted');
 
 # make sure limit-only deletion works
@@ -113,4 +114,29 @@
 $tkfks->search ({}, { rows => 1 })->delete;
 is ($tkfks->count, $tkfk_cnt -= 1, 'Only one row deleted');
 
+
+# Make sure prefetch is properly stripped too
+# check with sql-equality, as sqlite will accept bad sql just fine
+my ($sql, @bind);
+my $orig_debugobj = $schema->storage->debugobj;
+my $orig_debug = $schema->storage->debug;
+
+$schema->storage->debugobj (DBIC::DebugObj->new (\$sql, \@bind) );
+$schema->storage->debug (1);
+$schema->resultset('CD')->search(
+  { year => { '!=' => 2010 } },
+  { prefetch => 'liner_notes' },
+)->delete;
+
+$schema->storage->debugobj ($orig_debugobj);
+$schema->storage->debug ($orig_debug);
+
+is_same_sql_bind (
+  $sql,
+  \@bind,
+  'DELETE FROM cd WHERE ( cdid IN ( SELECT me.cdid FROM cd me WHERE ( year != ? ) GROUP BY me.cdid ) )',
+  ["'2010'"],
+  'Update on prefetching resultset strips prefetch correctly'
+);
+
 done_testing;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/limit_dialects/generic_subq.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/limit_dialects/generic_subq.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/limit_dialects/generic_subq.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -28,7 +28,6 @@
           FROM books me
           JOIN owners owner ON owner.id = me.owner
         WHERE ( source = ? )
-        ORDER BY me.title
       ) me
     WHERE
       (
@@ -36,6 +35,7 @@
           FROM books rownum__emulation
         WHERE rownum__emulation.title < me.title
       ) < 2
+    ORDER BY me.title
   )',
   [  [ 'source', 'Library' ] ],
 );
@@ -69,7 +69,6 @@
           FROM "books" "me"
           JOIN "owners" "owner" ON "owner"."id" = "me"."owner"
         WHERE ( "source" = ? )
-        ORDER BY "title" DESC
       ) "me"
     WHERE
       (
@@ -77,6 +76,7 @@
           FROM "books" "rownum__emulation"
         WHERE "rownum__emulation"."title" > "me"."title"
       ) BETWEEN 1 AND 3
+    ORDER BY "title" DESC
   )',
   [ [ 'source', 'Library' ] ],
 );
@@ -104,7 +104,6 @@
           FROM "books" "me"
           JOIN "owners" "owner" ON "owner"."id" = "me"."owner"
         WHERE ( "source" = ? )
-        ORDER BY "title"
       ) "me"
     WHERE
       (
@@ -112,6 +111,7 @@
           FROM "books" "rownum__emulation"
         WHERE "rownum__emulation"."title" < "me"."title"
       ) BETWEEN 1 AND 4294967295
+    ORDER BY "title"
   )',
   [ [ 'source', 'Library' ] ],
 );

Added: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/oracle.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/oracle.t	                        (rev 0)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/sqlahacks/oracle.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -0,0 +1,80 @@
+
+use strict;
+use warnings;
+use Test::More;
+use Test::Exception;
+use Data::Dumper::Concise;
+use lib qw(t/lib);
+use DBIC::SqlMakerTest;
+use DBIx::Class::SQLAHacks::Oracle;
+
+# 
+#  Offline test for connect_by 
+#  ( without acitve database connection)
+# 
+my @handle_tests = (
+    {
+        connect_by  => { 'parentid' => { '-prior' => \'artistid' } },
+        stmt        => '"parentid" = PRIOR artistid',
+        bind        => [],
+        msg         => 'Simple: "parentid" = PRIOR artistid',
+    },
+    {
+        connect_by  => { 'parentid' => { '!=' => { '-prior' => \'artistid' } } },
+        stmt        => '"parentid" != ( PRIOR artistid )',
+        bind        => [],
+        msg         => 'Simple: "parentid" != ( PRIOR artistid )',
+    },
+    # Examples from http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries003.htm
+
+    # CONNECT BY last_name != 'King' AND PRIOR employee_id = manager_id ...
+    {
+        connect_by  => [
+            last_name => { '!=' => 'King' },
+            manager_id => { '-prior' => \'employee_id' },
+        ],
+        stmt        => '( "last_name" != ? OR "manager_id" = PRIOR employee_id )',
+        bind        => ['King'],
+        msg         => 'oracle.com example #1',
+    },
+    # CONNECT BY PRIOR employee_id = manager_id and 
+    #            PRIOR account_mgr_id = customer_id ...
+    {
+        connect_by  => {
+            manager_id => { '-prior' => \'employee_id' },
+            customer_id => { '>', { '-prior' => \'account_mgr_id' } },
+        },
+        stmt        => '( "customer_id" > ( PRIOR account_mgr_id ) AND "manager_id" = PRIOR employee_id )',
+        bind        => [],
+        msg         => 'oracle.com example #2',
+    },
+    # CONNECT BY NOCYCLE PRIOR employee_id = manager_id AND LEVEL <= 4;
+    # TODO: NOCYCLE parameter doesn't work
+);
+
+my $sqla_oracle = DBIx::Class::SQLAHacks::Oracle->new( quote_char => '"', name_sep => '.' );
+isa_ok($sqla_oracle, 'DBIx::Class::SQLAHacks::Oracle');
+
+
+my $test_count = ( @handle_tests * 2 ) + 1;
+
+for my $case (@handle_tests) {
+    my ( $stmt, @bind );
+    my $msg = sprintf("Offline: %s",
+        $case->{msg} || substr($case->{stmt},0,25),
+    );
+    lives_ok(
+        sub {
+            ( $stmt, @bind ) = $sqla_oracle->_recurse_where( $case->{connect_by} );
+            is_same_sql_bind( $stmt, \@bind, $case->{stmt}, $case->{bind},$msg )
+              || diag "Search term:\n" . Dumper $case->{connect_by};
+        }
+    ,sprintf("lives is ok from '%s'",$msg));
+}
+
+# 
+#   Online Tests?
+# 
+$test_count += 0;
+
+done_testing( $test_count );

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/dbh_do.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/dbh_do.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/dbh_do.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -1,9 +1,9 @@
 #!/usr/bin/perl
 
 use strict;
-use warnings;  
+use warnings;
 
-use Test::More tests => 8;
+use Test::More;
 use lib qw(t/lib);
 use DBICTest;
 
@@ -11,23 +11,32 @@
 my $schema = DBICTest->init_schema();
 my $storage = $schema->storage;
 
-my $test_func = sub {
-    is $_[0], $storage;
-    is $_[1], $storage->dbh;
-    is $_[2], "foo";
-    is $_[3], "bar";
-};
+my @args;
+my $test_func = sub { @args = @_ };
 
-$storage->dbh_do(
-    $test_func,
-    "foo", "bar"
+$storage->dbh_do($test_func, "foo", "bar");
+is_deeply (
+  \@args,
+  [ $storage, $storage->dbh, "foo", "bar" ],
 );
 
+
 my $storage_class = ref $storage;
 {
-    no strict 'refs';
-    *{$storage_class .'::__test_method'} = $test_func;
+  no strict 'refs';
+  local *{$storage_class .'::__test_method'} = $test_func;
+  $storage->dbh_do("__test_method", "baz", "buz");
 }
-$storage->dbh_do("__test_method", "foo", "bar");
 
-    
\ No newline at end of file
+is_deeply (
+  \@args,
+  [ $storage, $storage->dbh, "baz", "buz" ],
+);
+
+# test aliasing
+my $res = 'original';
+$storage->dbh_do (sub { $_[2] = 'changed' }, $res);
+
+is ($res, 'changed', "Arguments properly aliased for dbh_do");
+
+done_testing;

Modified: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/deploy.t
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/deploy.t	2010-06-02 13:23:55 UTC (rev 9551)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/deploy.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -6,22 +6,28 @@
 use lib qw(t/lib);
 use DBICTest;
 
+BEGIN {
+  require DBIx::Class;
+  plan skip_all =>
+      'Test needs ' . DBIx::Class::Optional::Dependencies->req_missing_for ('deploy')
+    unless DBIx::Class::Optional::Dependencies->req_ok_for ('deploy')
+}
+
 use File::Spec;
-use File::Path qw/ mkpath rmtree /;
-
-
+use Path::Class qw/dir/;
+use File::Path qw/make_path remove_tree/;
 my $schema = DBICTest->init_schema();
 
-my $var = File::Spec->catfile(qw| t var create_ddl_dir |);
+my $var = dir (qw| t var create_ddl_dir |);
 -d $var
-    or mkpath($var)
-    or die "can't create $var";
+    or make_path( "$var" )
+    or die "can't create $var: $!";
 
-my $test_dir_1 =  File::Spec->catdir( $var, 'test1', 'foo', 'bar' );
-rmtree( $test_dir_1 ) if -d $test_dir_1;
+my $test_dir_1 = $var->subdir ('test1', 'foo', 'bar' );
+remove_tree( "$test_dir_1" ) if -d $test_dir_1;
 $schema->create_ddl_dir( undef, undef, $test_dir_1 );
 
-ok( -d $test_dir_1, 'create_ddl_dir did a mkpath on its target dir' );
+ok( -d $test_dir_1, 'create_ddl_dir did a make_path on its target dir' );
 ok( scalar( glob $test_dir_1.'/*.sql' ), 'there are sql files in there' );
 
 TODO: {

Copied: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/txn.t (from rev 9401, DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/81transactions.t)
===================================================================
--- DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/txn.t	                        (rev 0)
+++ DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/storage/txn.t	2010-06-02 13:34:40 UTC (rev 9552)
@@ -0,0 +1,404 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Warn;
+use Test::Exception;
+use lib qw(t/lib);
+use DBICTest;
+
+my $schema = DBICTest->init_schema();
+
+my $code = sub {
+  my ($artist, @cd_titles) = @_;
+
+  $artist->create_related('cds', {
+    title => $_,
+    year => 2006,
+  }) foreach (@cd_titles);
+
+  return $artist->cds->all;
+};
+
+# Test checking of parameters
+{
+  throws_ok (sub {
+    (ref $schema)->txn_do(sub{});
+  }, qr/storage/, "can't call txn_do without storage");
+
+  throws_ok ( sub {
+    $schema->txn_do('');
+  }, qr/must be a CODE reference/, '$coderef parameter check ok');
+}
+
+# Test successful txn_do() - scalar context
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my @titles = map {'txn_do test CD ' . $_} (1..5);
+  my $artist = $schema->resultset('Artist')->find(1);
+  my $count_before = $artist->cds->count;
+  my $count_after = $schema->txn_do($code, $artist, @titles);
+  is($count_after, $count_before+5, 'successful txn added 5 cds');
+  is($artist->cds({
+    title => "txn_do test CD $_",
+  })->first->year, 2006, "new CD $_ year correct") for (1..5);
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
+}
+
+# Test successful txn_do() - list context
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my @titles = map {'txn_do test CD ' . $_} (6..10);
+  my $artist = $schema->resultset('Artist')->find(1);
+  my $count_before = $artist->cds->count;
+  my @cds = $schema->txn_do($code, $artist, @titles);
+  is(scalar @cds, $count_before+5, 'added 5 CDs and returned in list context');
+  is($artist->cds({
+    title => "txn_do test CD $_",
+  })->first->year, 2006, "new CD $_ year correct") for (6..10);
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
+}
+
+# Test txn_do() @_ aliasing support
+{
+  my $res = 'original';
+  $schema->storage->txn_do (sub { $_[0] = 'changed' }, $res);
+  is ($res, 'changed', "Arguments properly aliased for txn_do");
+}
+
+# Test nested successful txn_do()
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my $nested_code = sub {
+    my ($schema, $artist, $code) = @_;
+
+    my @titles1 = map {'nested txn_do test CD ' . $_} (1..5);
+    my @titles2 = map {'nested txn_do test CD ' . $_} (6..10);
+
+    $schema->txn_do($code, $artist, @titles1);
+    $schema->txn_do($code, $artist, @titles2);
+  };
+
+  my $artist = $schema->resultset('Artist')->find(2);
+  my $count_before = $artist->cds->count;
+
+  lives_ok (sub {
+    $schema->txn_do($nested_code, $schema, $artist, $code);
+  }, 'nested txn_do succeeded');
+
+  is($artist->cds({
+    title => 'nested txn_do test CD '.$_,
+  })->first->year, 2006, qq{nested txn_do CD$_ year ok}) for (1..10);
+  is($artist->cds->count, $count_before+10, 'nested txn_do added all CDs');
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
+}
+
+my $fail_code = sub {
+  my ($artist) = @_;
+  $artist->create_related('cds', {
+    title => 'this should not exist',
+    year => 2005,
+  });
+  die "the sky is falling";
+};
+
+# Test failed txn_do()
+{
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my $artist = $schema->resultset('Artist')->find(3);
+
+  throws_ok (sub {
+    $schema->txn_do($fail_code, $artist);
+  }, qr/the sky is falling/, 'failed txn_do threw an exception');
+
+  my $cd = $artist->cds({
+    title => 'this should not exist',
+    year => 2005,
+  })->first;
+  ok(!defined($cd), q{failed txn_do didn't change the cds table});
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
+}
+
+# do the same transaction again
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my $artist = $schema->resultset('Artist')->find(3);
+
+  throws_ok (sub {
+    $schema->txn_do($fail_code, $artist);
+  }, qr/the sky is falling/, 'failed txn_do threw an exception');
+
+  my $cd = $artist->cds({
+    title => 'this should not exist',
+    year => 2005,
+  })->first;
+  ok(!defined($cd), q{failed txn_do didn't change the cds table});
+
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth has been reset');
+}
+
+# Test failed txn_do() with failed rollback
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my $artist = $schema->resultset('Artist')->find(3);
+
+  # Force txn_rollback() to throw an exception
+  no warnings 'redefine';
+  no strict 'refs';
+
+  # die in rollback
+  local *{"DBIx::Class::Storage::DBI::SQLite::txn_rollback"} = sub{
+    my $storage = shift;
+    die 'FAILED';
+  };
+
+  throws_ok (
+    sub {
+      $schema->txn_do($fail_code, $artist);
+    },
+    qr/the sky is falling.+Rollback failed/s,
+    'txn_rollback threw a rollback exception (and included the original exception'
+  );
+
+  my $cd = $artist->cds({
+    title => 'this should not exist',
+    year => 2005,
+  })->first;
+  isa_ok($cd, 'DBICTest::CD', q{failed txn_do with a failed txn_rollback }.
+         q{changed the cds table});
+  $cd->delete; # Rollback failed
+  $cd = $artist->cds({
+    title => 'this should not exist',
+    year => 2005,
+  })->first;
+  ok(!defined($cd), q{deleted the failed txn's cd});
+  $schema->storage->_dbh->rollback;
+}
+
+# reset schema object (the txn_rollback meddling screws it up)
+$schema = DBICTest->init_schema();
+
+# Test nested failed txn_do()
+{
+  is( $schema->storage->{transaction_depth}, 0, 'txn depth starts at 0');
+
+  my $nested_fail_code = sub {
+    my ($schema, $artist, $code1, $code2) = @_;
+
+    my @titles = map {'nested txn_do test CD ' . $_} (1..5);
+
+    $schema->txn_do($code1, $artist, @titles); # successful txn
+    $schema->txn_do($code2, $artist);          # failed txn
+  };
+
+  my $artist = $schema->resultset('Artist')->find(3);
+
+  throws_ok ( sub {
+    $schema->txn_do($nested_fail_code, $schema, $artist, $code, $fail_code);
+  }, qr/the sky is falling/, 'nested failed txn_do threw exception');
+
+  ok(!defined($artist->cds({
+    title => 'nested txn_do test CD '.$_,
+    year => 2006,
+  })->first), qq{failed txn_do didn't add first txn's cd $_}) for (1..5);
+  my $cd = $artist->cds({
+    title => 'this should not exist',
+    year => 2005,
+  })->first;
+  ok(!defined($cd), q{failed txn_do didn't add failed txn's cd});
+}
+
+# Grab a new schema to test txn before connect
+{
+    my $schema2 = DBICTest->init_schema(no_deploy => 1);
+    lives_ok (sub {
+        $schema2->txn_begin();
+        $schema2->txn_begin();
+    }, 'Pre-connection nested transactions.');
+
+    # although not connected DBI would still warn about rolling back at disconnect
+    $schema2->txn_rollback;
+    $schema2->txn_rollback;
+    $schema2->storage->disconnect;
+}
+$schema->storage->disconnect;
+
+# Test txn_scope_guard
+{
+  my $schema = DBICTest->init_schema();
+
+  is($schema->storage->transaction_depth, 0, "Correct transaction depth");
+  my $artist_rs = $schema->resultset('Artist');
+  my $fn = __FILE__;
+  throws_ok {
+   my $guard = $schema->txn_scope_guard;
+
+
+    $artist_rs->create({
+      name => 'Death Cab for Cutie',
+      made_up_column => 1,
+    });
+
+   $guard->commit;
+  } qr/No such column made_up_column .*? at .*?$fn line \d+/s, "Error propogated okay";
+
+  ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
+
+  my $inner_exception = '';  # set in inner() below
+  throws_ok (sub {
+    outer($schema, 1);
+  }, qr/$inner_exception/, "Nested exceptions propogated");
+
+  ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
+
+  lives_ok (sub {
+    warnings_exist ( sub {
+      # The 0 arg says don't die, just let the scope guard go out of scope
+      # forcing a txn_rollback to happen
+      outer($schema, 0);
+    }, qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./, 'Out of scope warning detected');
+    ok(!$artist_rs->find({name => 'Death Cab for Cutie'}), "Artist not created");
+  }, 'rollback successful withot exception');
+
+  sub outer {
+    my ($schema) = @_;
+
+    my $guard = $schema->txn_scope_guard;
+    $schema->resultset('Artist')->create({
+      name => 'Death Cab for Cutie',
+    });
+    inner(@_);
+  }
+
+  sub inner {
+    my ($schema, $fatal) = @_;
+
+    my $inner_guard = $schema->txn_scope_guard;
+    is($schema->storage->transaction_depth, 2, "Correct transaction depth");
+
+    my $artist = $artist_rs->find({ name => 'Death Cab for Cutie' });
+
+    eval {
+      $artist->cds->create({
+        title => 'Plans',
+        year => 2005,
+        $fatal ? ( foo => 'bar' ) : ()
+      });
+    };
+    if ($@) {
+      # Record what got thrown so we can test it propgates out properly.
+      $inner_exception = $@;
+      die $@;
+    }
+
+    # inner guard should commit without consequences
+    $inner_guard->commit;
+  }
+}
+
+# make sure the guard does not eat exceptions
+{
+  my $schema = DBICTest->init_schema();
+  throws_ok (sub {
+    my $guard = $schema->txn_scope_guard;
+    $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
+
+    $schema->storage->disconnect;  # this should freak out the guard rollback
+
+    die 'Deliberate exception';
+  }, qr/Deliberate exception.+Rollback failed/s);
+}
+
+# make sure it warns *big* on failed rollbacks
+{
+  my $schema = DBICTest->init_schema();
+
+  # something is really confusing Test::Warn here, no time to debug
+=begin
+  warnings_exist (
+    sub {
+      my $guard = $schema->txn_scope_guard;
+      $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
+
+      $schema->storage->disconnect;  # this should freak out the guard rollback
+    },
+    [
+      qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./,
+      qr/\*+ ROLLBACK FAILED\!\!\! \*+/,
+    ],
+    'proper warnings generated on out-of-scope+rollback failure'
+  );
+=cut
+
+  my @want = (
+    qr/A DBIx::Class::Storage::TxnScopeGuard went out of scope without explicit commit or error. Rolling back./,
+    qr/\*+ ROLLBACK FAILED\!\!\! \*+/,
+  );
+
+  my @w;
+  local $SIG{__WARN__} = sub {
+    if (grep {$_[0] =~ $_} (@want)) {
+      push @w, $_[0];
+    }
+    else {
+      warn $_[0];
+    }
+  };
+  {
+      my $guard = $schema->txn_scope_guard;
+      $schema->resultset ('Artist')->create ({ name => 'bohhoo'});
+
+      $schema->storage->disconnect;  # this should freak out the guard rollback
+  }
+
+  is (@w, 2, 'Both expected warnings found');
+}
+
+# make sure AutoCommit => 0 on external handles behaves correctly with scope_guard
+{
+  my $factory = DBICTest->init_schema (AutoCommit => 0);
+  cmp_ok ($factory->resultset('CD')->count, '>', 0, 'Something to delete');
+  my $dbh = $factory->storage->dbh;
+
+  ok (!$dbh->{AutoCommit}, 'AutoCommit is off on $dbh');
+  my $schema = DBICTest::Schema->connect (sub { $dbh });
+
+
+  lives_ok ( sub {
+    my $guard = $schema->txn_scope_guard;
+    $schema->resultset('CD')->delete;
+    $guard->commit;
+  }, 'No attempt to start a transaction with scope guard');
+
+  is ($schema->resultset('CD')->count, 0, 'Deletion successful');
+}
+
+# make sure AutoCommit => 0 on external handles behaves correctly with txn_do
+{
+  my $factory = DBICTest->init_schema (AutoCommit => 0);
+  cmp_ok ($factory->resultset('CD')->count, '>', 0, 'Something to delete');
+  my $dbh = $factory->storage->dbh;
+
+  ok (!$dbh->{AutoCommit}, 'AutoCommit is off on $dbh');
+  my $schema = DBICTest::Schema->connect (sub { $dbh });
+
+
+  lives_ok ( sub {
+    $schema->txn_do (sub { $schema->resultset ('CD')->delete });
+  }, 'No attempt to start a atransaction with txn_do');
+
+  is ($schema->resultset('CD')->count, 0, 'Deletion successful');
+}
+
+done_testing;


Property changes on: DBIx-Class/0.08/branches/_abandoned_but_possibly_useful/view-deps/t/var
___________________________________________________________________
Added: svn:ignore
   + *





More information about the Bast-commits mailing list