[Bast-commits] r8792 - in DBIx-Class/0.08/branches/oracle_quotes: .
lib lib/DBIx lib/DBIx/Class lib/DBIx/Class/Admin
lib/DBIx/Class/CDBICompat lib/DBIx/Class/InflateColumn
lib/DBIx/Class/Manual lib/DBIx/Class/Optional
lib/DBIx/Class/Relationship lib/DBIx/Class/ResultSource
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/Replicated/Balancer
lib/DBIx/Class/Storage/DBI/Role lib/DBIx/Class/Storage/DBI/Sybase
lib/DBIx/Class/Storage/DBI/Sybase/ASE
lib/SQL/Translator/Parser/DBIx script t t/admin t/bind
t/count t/inflate t/lib/DBICTest t/sqlahacks/quotes t/storage
ribasushi at dev.catalyst.perl.org
ribasushi at dev.catalyst.perl.org
Sun Feb 21 14:31:08 GMT 2010
Author: ribasushi
Date: 2010-02-21 14:31:08 +0000 (Sun, 21 Feb 2010)
New Revision: 8792
Added:
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Descriptive.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Usage.pm
DBIx-Class/0.08/branches/oracle_quotes/t/count/group_by_func.t
Removed:
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm
Modified:
DBIx-Class/0.08/branches/oracle_quotes/
DBIx-Class/0.08/branches/oracle_quotes/Changes
DBIx-Class/0.08/branches/oracle_quotes/Makefile.PL
DBIx-Class/0.08/branches/oracle_quotes/lib/
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/AbstractSearch.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Copy.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Iterator.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn/File.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Component.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Cookbook.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Example.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Intro.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Joining.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Reading.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Troubleshooting.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Optional/Dependencies.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Ordered.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/PK.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Accessor.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Base.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/BelongsTo.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasMany.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasOne.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSet.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource/Table.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceHandle.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceProxy.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Row.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/SQLAHacks/OracleJoins.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema/Versioned.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/StartupCheck.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AutoCast.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MSSQL.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MultiColumnIn.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Oracle/WhereJoins.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/First.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Introduction.pod
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Role/QueryCounter.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/mysql.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBIHacks.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/TxnScopeGuard.pm
DBIx-Class/0.08/branches/oracle_quotes/lib/SQL/Translator/Parser/DBIx/Class.pm
DBIx-Class/0.08/branches/oracle_quotes/script/dbicadmin
DBIx-Class/0.08/branches/oracle_quotes/t/02pod.t
DBIx-Class/0.08/branches/oracle_quotes/t/03podcoverage.t
DBIx-Class/0.08/branches/oracle_quotes/t/52cycle.t
DBIx-Class/0.08/branches/oracle_quotes/t/69update.t
DBIx-Class/0.08/branches/oracle_quotes/t/75limit.t
DBIx-Class/0.08/branches/oracle_quotes/t/76joins.t
DBIx-Class/0.08/branches/oracle_quotes/t/86sqlt.t
DBIx-Class/0.08/branches/oracle_quotes/t/99dbic_sqlt_parser.t
DBIx-Class/0.08/branches/oracle_quotes/t/admin/02ddl.t
DBIx-Class/0.08/branches/oracle_quotes/t/admin/03data.t
DBIx-Class/0.08/branches/oracle_quotes/t/bind/attribute.t
DBIx-Class/0.08/branches/oracle_quotes/t/count/distinct.t
DBIx-Class/0.08/branches/oracle_quotes/t/inflate/hri.t
DBIx-Class/0.08/branches/oracle_quotes/t/lib/DBICTest/AuthorCheck.pm
DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes.t
DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes_newstyle.t
DBIx-Class/0.08/branches/oracle_quotes/t/storage/error.t
Log:
r8715 at Thesaurus (orig r8702): ribasushi | 2010-02-14 10:46:51 +0100
This is Moose, so use CMOP
r8720 at Thesaurus (orig r8707): ribasushi | 2010-02-15 10:28:22 +0100
Final POD touches
r8721 at Thesaurus (orig r8708): ribasushi | 2010-02-15 10:31:38 +0100
Spellcheck (jawnsy++)
r8722 at Thesaurus (orig r8709): ribasushi | 2010-02-15 10:32:24 +0100
One more
r8723 at Thesaurus (orig r8710): ribasushi | 2010-02-15 14:49:26 +0100
Release 0.08119
r8725 at Thesaurus (orig r8712): ribasushi | 2010-02-15 14:50:56 +0100
Bump trunl version
r8726 at Thesaurus (orig r8713): rafl | 2010-02-15 15:49:55 +0100
Make sure we actually run all tests, given we're using done_testing.
r8727 at Thesaurus (orig r8714): rafl | 2010-02-15 15:50:01 +0100
Make sure overriding deployment_statements is possible from within schemas.
r8728 at Thesaurus (orig r8715): rafl | 2010-02-15 15:56:06 +0100
Changelogging.
r8729 at Thesaurus (orig r8716): rafl | 2010-02-15 15:58:09 +0100
Make some cookbook code compile.
r8730 at Thesaurus (orig r8717): nuba | 2010-02-15 16:11:52 +0100
spelling fixes in the documaentation, sholud be gud now ;)
r8732 at Thesaurus (orig r8719): caelum | 2010-02-16 11:09:58 +0100
use OO interface of Hash::Merge for ::DBI::Replicated
r8734 at Thesaurus (orig r8721): ribasushi | 2010-02-16 11:41:06 +0100
Augment did-author-run-makefile check to include OptDeps
r8735 at Thesaurus (orig r8722): ribasushi | 2010-02-16 12:16:06 +0100
Reorg support section, add live-chat link
r8739 at Thesaurus (orig r8726): caelum | 2010-02-16 14:51:58 +0100
set behavior for Hash::Merge in ::DBI::Replicated, otherwise it uses the global setting
r8740 at Thesaurus (orig r8727): caelum | 2010-02-16 15:43:25 +0100
POD touchups
r8759 at Thesaurus (orig r8746): ribasushi | 2010-02-19 00:30:37 +0100
Fix bogus test
r8760 at Thesaurus (orig r8747): ribasushi | 2010-02-19 00:34:22 +0100
Retire useless abstraction (all rdbms need this anyway)
r8761 at Thesaurus (orig r8748): ribasushi | 2010-02-19 00:35:01 +0100
Fix count of group_by over aliased function
r8765 at Thesaurus (orig r8752): ribasushi | 2010-02-19 10:11:20 +0100
r8497 at Thesaurus (orig r8484): ribasushi | 2010-01-31 10:06:29 +0100
Branch to unify mandatory PK handling
r8498 at Thesaurus (orig r8485): ribasushi | 2010-01-31 10:20:36 +0100
This is not really used for anything (same code in DBI)
r8499 at Thesaurus (orig r8486): ribasushi | 2010-01-31 10:25:55 +0100
Helper primary_columns wrapper to throw if a PK is not defined
r8500 at Thesaurus (orig r8487): ribasushi | 2010-01-31 11:07:25 +0100
Stupid errors
r8501 at Thesaurus (orig r8488): ribasushi | 2010-01-31 12:18:57 +0100
Saner handling of nonexistent/partial conditions
r8762 at Thesaurus (orig r8749): ribasushi | 2010-02-19 10:07:40 +0100
trap unresolvable conditions due to incomplete relationship specification
r8764 at Thesaurus (orig r8751): ribasushi | 2010-02-19 10:11:09 +0100
Changes
r8767 at Thesaurus (orig r8754): ribasushi | 2010-02-19 11:14:30 +0100
Fix for RT54697
r8769 at Thesaurus (orig r8756): caelum | 2010-02-19 12:21:53 +0100
bump Test::Pod dep
r8770 at Thesaurus (orig r8757): caelum | 2010-02-19 12:23:07 +0100
bump Test::Pod dep in Optional::Dependencies too
r8773 at Thesaurus (orig r8760): rabbit | 2010-02-19 16:41:24 +0100
Fix stupid sqlt parser regression
r8774 at Thesaurus (orig r8761): rabbit | 2010-02-19 16:42:40 +0100
Port remaining tests to the Opt::Dep reposiory
r8775 at Thesaurus (orig r8762): rabbit | 2010-02-19 16:43:36 +0100
Some test cleanups
r8780 at Thesaurus (orig r8767): rabbit | 2010-02-20 20:59:20 +0100
Test::Deep actually isn't required
r8786 at Thesaurus (orig r8773): rabbit | 2010-02-20 22:21:41 +0100
These are core for perl 5.8
r8787 at Thesaurus (orig r8774): rabbit | 2010-02-21 10:52:40 +0100
Shuffle tests a bit
r8788 at Thesaurus (orig r8775): rabbit | 2010-02-21 12:09:25 +0100
Bogus require
r8789 at Thesaurus (orig r8776): rabbit | 2010-02-21 12:09:48 +0100
Bogus unnecessary dep
r8800 at Thesaurus (orig r8787): rabbit | 2010-02-21 13:39:21 +0100
r8748 at Thesaurus (orig r8735): goraxe | 2010-02-17 23:17:15 +0100
branch for dbicadmin pod fixes
r8778 at Thesaurus (orig r8765): goraxe | 2010-02-20 20:35:00 +0100
add G:L:D sub classes to generate pod
r8779 at Thesaurus (orig r8766): goraxe | 2010-02-20 20:56:16 +0100
dbicadmin: use subclassed G:L:D to generate some pod
r8782 at Thesaurus (orig r8769): goraxe | 2010-02-20 21:48:29 +0100
adjust Makefile.pl to generate dbicadmin.pod
r8783 at Thesaurus (orig r8770): goraxe | 2010-02-20 21:50:55 +0100
add svn-ignore for dbicadmin.pod
r8784 at Thesaurus (orig r8771): goraxe | 2010-02-20 22:01:41 +0100
change Options to Arguments
r8785 at Thesaurus (orig r8772): goraxe | 2010-02-20 22:10:29 +0100
add DBIx::Class::Admin::{Descriptive,Usage} to podcover ignore list
r8790 at Thesaurus (orig r8777): rabbit | 2010-02-21 12:35:38 +0100
Cleanup the makefile regen a bit
r8792 at Thesaurus (orig r8779): rabbit | 2010-02-21 12:53:01 +0100
Bah humbug
r8793 at Thesaurus (orig r8780): rabbit | 2010-02-21 12:55:18 +0100
And another one
r8797 at Thesaurus (orig r8784): rabbit | 2010-02-21 13:32:03 +0100
The minimal pod seems to confuse the manpage generator, commenting out for now
r8798 at Thesaurus (orig r8785): rabbit | 2010-02-21 13:38:03 +0100
Add license/author to dbicadmin autogen POD
r8799 at Thesaurus (orig r8786): rabbit | 2010-02-21 13:38:58 +0100
Reorder makefile author actions to make output more readable
r8803 at Thesaurus (orig r8790): ribasushi | 2010-02-21 14:24:15 +0100
Fix exception text
r8804 at Thesaurus (orig r8791): ribasushi | 2010-02-21 15:14:58 +0100
Extra testdep
Property changes on: DBIx-Class/0.08/branches/oracle_quotes
___________________________________________________________________
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_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/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_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/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/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-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/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/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:8699
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_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/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_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/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-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/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/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:8791
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/oracle_quotes/Changes
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/Changes 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/Changes 2010-02-21 14:31:08 UTC (rev 8792)
@@ -1,5 +1,15 @@
Revision history for DBIx::Class
+ - Make sure possibly overwritten deployment_statements methods in
+ schemas get called on $schema->deploy
+ - Fix count() with group_by aliased-function resultsets
+ - Massive refactor and cleanup of primary key handling
+ - Fixed regression losing custom result_class (really this time)
+ (RT#54697)
+ - Fixed regression in DBIC SQLT::Parser failing with a classname
+ (as opposed to a schema object)
+
+0.08119 2010-02-15 09:36:00 (UTC)
- Add $rs->is_ordered to test for existing order_by on a resultset
- Add as_subselect_rs to DBIC::ResultSet from
DBIC::Helper::ResultSet::VirtualView::as_virtual_view
Modified: DBIx-Class/0.08/branches/oracle_quotes/Makefile.PL
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/Makefile.PL 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/Makefile.PL 2010-02-21 14:31:08 UTC (rev 8792)
@@ -8,6 +8,11 @@
use FindBin;
use lib "$FindBin::Bin/lib";
+# adjust ENV for $AUTHOR system() calls
+use Config;
+$ENV{PERL5LIB} = join ($Config{path_sep}, @INC);
+
+
###
### DO NOT ADD OPTIONAL DEPENDENCIES HERE, EVEN AS recommends()
### All of them should go to DBIx::Class::Optional::Dependencies
@@ -25,19 +30,12 @@
my $test_requires = {
'File::Temp' => '0.22',
'Test::Builder' => '0.33',
- 'Test::Deep' => '0',
'Test::Exception' => '0',
'Test::More' => '0.92',
'Test::Warn' => '0.21',
};
my $runtime_requires = {
- # Core
- 'List::Util' => '0',
- 'Scalar::Util' => '0',
- 'Storable' => '0',
-
- # Dependencies
'Carp::Clan' => '6.0',
'Class::Accessor::Grouped' => '0.09002',
'Class::C3::Componentised' => '1.0005',
@@ -47,7 +45,6 @@
'MRO::Compat' => '0.09',
'Module::Find' => '0.06',
'Path::Class' => '0.18',
- 'Scope::Guard' => '0.03',
'SQL::Abstract' => '1.61',
'SQL::Abstract::Limit' => '0.13',
'Sub::Name' => '0.04',
@@ -62,25 +59,9 @@
test_requires => { %$test_requires },
};
-# re-build README and require extra modules for testing if we're in a checkout
+
+# require extra modules for testing if we're in a checkout
if ($Module::Install::AUTHOR) {
-
- print "Regenerating README\n";
- system('pod2text lib/DBIx/Class.pm > README');
-
- if (-f 'MANIFEST') {
- print "Removing MANIFEST\n";
- unlink 'MANIFEST';
- }
-
- print "Regenerating Optional/Dependencies.pod\n";
- require DBIx::Class::Optional::Dependencies;
- DBIx::Class::Optional::Dependencies->_gen_pod;
-
-# FIXME Disabled due to unsolved issues, ask theorbtwo
-# require Module::Install::Pod::Inherit;
-# PodInherit();
-
warn <<'EOW';
******************************************************************************
******************************************************************************
@@ -92,6 +73,7 @@
EOW
+ require DBIx::Class::Optional::Dependencies;
$reqs->{test_requires} = {
%{$reqs->{test_requires}},
%{DBIx::Class::Optional::Dependencies->_all_optional_requirements},
@@ -119,6 +101,31 @@
$rtype->($mod, $ver);
}
+auto_install();
+
+# re-create various autogenerated documentation bits
+if ($Module::Install::AUTHOR) {
+
+ print "Regenerating README\n";
+ system('pod2text lib/DBIx/Class.pm > README');
+
+ if (-f 'MANIFEST') {
+ print "Removing MANIFEST\n";
+ unlink 'MANIFEST';
+ }
+
+ print "Regenerating dbicadmin.pod\n";
+ system('perl script/dbicadmin --pod > lib/dbicadmin.pod');
+
+ print "Regenerating Optional/Dependencies.pod\n";
+ require DBIx::Class::Optional::Dependencies;
+ DBIx::Class::Optional::Dependencies->_gen_pod;
+
+ # FIXME Disabled due to unsolved issues, ask theorbtwo
+ # require Module::Install::Pod::Inherit;
+ # PodInherit();
+}
+
install_script (qw|
script/dbicadmin
|);
@@ -138,13 +145,10 @@
lib/DBIx/Class/PK/Auto
|);
no_index package => $_ for (qw/
- DBIx::Class::Storage::DBI::AmbiguousGlob
DBIx::Class::SQLAHacks DBIx::Class::Storage::DBIHacks
/);
-auto_install();
-
WriteAll();
Property changes on: DBIx-Class/0.08/branches/oracle_quotes/lib
___________________________________________________________________
Added: svn:ignore
+ dbicadmin.pod
Added: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Descriptive.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Descriptive.pm (rev 0)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Descriptive.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -0,0 +1,10 @@
+package # hide from PAUSE
+ DBIx::Class::Admin::Descriptive;
+
+use DBIx::Class::Admin::Usage;
+
+use base 'Getopt::Long::Descriptive';
+
+sub usage_class { 'DBIx::Class::Admin::Usage'; }
+
+1;
Added: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Usage.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Usage.pm (rev 0)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin/Usage.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -0,0 +1,85 @@
+package # hide from PAUSE
+ DBIx::Class::Admin::Usage;
+
+
+use base 'Getopt::Long::Descriptive::Usage';
+
+use base 'Class::Accessor::Grouped';
+
+use Class::C3;
+
+__PACKAGE__->mk_group_accessors('simple', 'synopsis', 'short_description');
+
+sub prog_name {
+ Getopt::Long::Descriptive::prog_name();
+}
+
+sub set_simple {
+ my ($self,$field, $value) = @_;
+ my $prog_name = prog_name();
+ $value =~ s/%c/$prog_name/g;
+ $self->next::method($field, $value);
+}
+
+
+=head2 pod
+
+This returns the usage formated as a pod document
+
+=cut
+
+
+sub pod {
+ my ($self) = @_;
+ return join qq{\n}, $self->pod_leader_text, $self->pod_option_text, $self->pod_authorlic_text;
+}
+
+sub pod_leader_text {
+ my ($self) = @_;
+
+ return qq{=head1 NAME\n\n}.prog_name()." - ".$self->short_description().qq{\n\n}.
+ qq{=head1 SYNOPSIS\n\n}.$self->leader_text().qq{\n}.$self->synopsis().qq{\n\n};
+
+}
+
+sub pod_authorlic_text {
+
+ return <<'EOA'
+=head1 AUTHORS
+
+See L<DBIx::Class/CONTRIBUTORS>
+
+=head1 LICENSE
+
+You may distribute this code under the same terms as Perl itself
+EOA
+}
+
+
+sub pod_option_text {
+ my ($self) = @_;
+ my @options = @{ $self->{options} || [] };
+ my $string = q{};
+ return $string unless @options;
+
+ $string .= "=head1 OPTIONS\n\n=over\n\n";
+
+ foreach my $opt (@options) {
+ my $spec = $opt->{spec};
+ my $desc = $opt->{desc};
+ if ($desc eq 'spacer') {
+ $string .= "=back\n\n=head2 $spec\n\n=cut\n\n=over\n\n";
+ next;
+ }
+
+ $spec = Getopt::Long::Descriptive->_strip_assignment($spec);
+ $string .= "=item " . join " or ", map { length > 1 ? "B<--$_>" : "B<-$_>" }
+ split /\|/, $spec;
+ $string .= "\n\n$desc\n\n=cut\n\n";
+
+ }
+ $string .= "=back\n\n";
+ return $string;
+}
+
+1;
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Admin.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -87,8 +87,8 @@
sub _build_schema {
my ($self) = @_;
- require Class::C3::Componentised;
- Class::C3::Componentised->ensure_class_loaded($self->schema_class);
+ 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} );
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/AbstractSearch.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/AbstractSearch.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/AbstractSearch.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -10,7 +10,7 @@
=head1 SYNOPSIS
-See DBIx::Class::CDBICompat for directions for use.
+See DBIx::Class::CDBICompat for usage directions.
=head1 DESCRIPTION
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/ColumnsAsHash.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -11,7 +11,7 @@
=head1 SYNOPSIS
-See DBIx::Class::CDBICompat for directions for use.
+See DBIx::Class::CDBICompat for usage directions.
=head1 DESCRIPTION
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Copy.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Copy.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Copy.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -12,7 +12,7 @@
=head1 SYNOPSIS
-See DBIx::Class::CDBICompat for directions for use.
+See DBIx::Class::CDBICompat for usage directions.
=head1 DESCRIPTION
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Iterator.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Iterator.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat/Iterator.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -10,7 +10,7 @@
=head1 SYNOPSIS
-See DBIx::Class::CDBICompat for directions for use.
+See DBIx::Class::CDBICompat for usage directions.
=head1 DESCRIPTION
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/CDBICompat.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -91,7 +91,7 @@
=head2 Choosing Features
-In fact, this class is just a receipe containing all the features emulated.
+In fact, this class is just a recipe containing all the features emulated.
If you like, you can choose which features to emulate by building your
own class and loading it like this:
@@ -145,7 +145,7 @@
=item Relationships
-Relationships between tables (has_a, has_many...) must be delcared after all tables in the relationship have been declared. Thus the usual CDBI idiom of declaring columns and relationships for each class together will not work. They must instead be done like so:
+Relationships between tables (has_a, has_many...) must be declared after all tables in the relationship have been declared. Thus the usual CDBI idiom of declaring columns and relationships for each class together will not work. They must instead be done like so:
package Foo;
use base qw(Class::DBI);
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn/File.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn/File.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn/File.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -176,7 +176,7 @@
=head2 _file_column_callback ($file,$ret,$target)
-method made to be overridden for callback purposes.
+Method made to be overridden for callback purposes.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/InflateColumn.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -26,7 +26,7 @@
It can be used, for example, to automatically convert to and from
L<DateTime> objects for your date and time fields. There's a
-conveniece component to actually do that though, try
+convenience component to actually do that though, try
L<DBIx::Class::InflateColumn::DateTime>.
It will handle all types of references except scalar references. It
@@ -114,7 +114,7 @@
Fetch a column value in its inflated state. This is directly
analogous to L<DBIx::Class::Row/get_column> in that it only fetches a
-column already retreived from the database, and then inflates it.
+column already retrieved from the database, and then inflates it.
Throws an exception if the column requested is not an inflated column.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Component.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Component.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Component.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -106,7 +106,7 @@
=head2 Experimental
-These components are under development, there interfaces may
+These components are under development, their interfaces may
change, they may not work, etc. So, use them if you want, but
be warned.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Cookbook.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Cookbook.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Cookbook.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -141,7 +141,7 @@
);
... and you'll get back a perfect L<DBIx::Class::ResultSet> (except, of course,
-that you cannot modify the rows it contains, ie. cannot call L</update>,
+that you cannot modify the rows it contains, e.g. cannot call L</update>,
L</delete>, ... on it).
Note that you cannot have bind parameters unless is_virtual is set to true.
@@ -201,7 +201,7 @@
# SELECT name name, LENGTH( name )
# FROM artist
-Note that the C<as> attribute B<has absolutely nothing to do> with the sql
+Note that the C<as> attribute B<has absolutely nothing to do> with the SQL
syntax C< SELECT foo AS bar > (see the documentation in
L<DBIx::Class::ResultSet/ATTRIBUTES>). You can control the C<AS> part of the
generated SQL via the C<-as> field attribute as follows:
@@ -329,7 +329,7 @@
artist_id => { 'IN' => $inside_rs->get_column('id')->as_query },
});
-The usual operators ( =, !=, IN, NOT IN, etc) are supported.
+The usual operators ( =, !=, IN, NOT IN, etc.) are supported.
B<NOTE>: You have to explicitly use '=' when doing an equality comparison.
The following will B<not> work:
@@ -411,7 +411,7 @@
Using SQL functions on the left hand side of a comparison is generally not a
good idea since it requires a scan of the entire table. (Unless your RDBMS
-supports indexes on expressions - including return values of functions -, and
+supports indexes on expressions - including return values of functions - and
you create an index on the return value of the function in question.) However,
it can be accomplished with C<DBIx::Class> when necessary.
@@ -771,7 +771,7 @@
package My::App::Schema;
- use base DBIx::Class::Schema;
+ use base 'DBIx::Class::Schema';
# load subclassed classes from My::App::Schema::Result/ResultSet
__PACKAGE__->load_namespaces;
@@ -791,7 +791,7 @@
use strict;
use warnings;
- use base My::Shared::Model::Result::Baz;
+ use base 'My::Shared::Model::Result::Baz';
# WARNING: Make sure you call table() again in your subclass,
# otherwise DBIx::Class::ResultSourceProxy::Table will not be called
@@ -814,7 +814,7 @@
for admin. We would like like to give the admin users
objects (L<DBIx::Class::Row>) the same methods as a regular user but
also special admin only methods. It doesn't make sense to create two
-seperate proxy-class files for this. We would be copying all the user
+separate proxy-class files for this. We would be copying all the user
methods into the Admin class. There is a cleaner way to accomplish
this.
@@ -1268,7 +1268,7 @@
my $schema = MySchema->connect("dbi:Pg:dbname=my_db");
# Start a transaction. Every database change from here on will only be
- # commited into the database if the eval block succeeds.
+ # committed into the database if the eval block succeeds.
eval {
$schema->txn_do(sub {
# SQL: BEGIN WORK;
@@ -1321,7 +1321,7 @@
};
if ($@) {
# There was an error while handling the $job. Rollback all changes
- # since the transaction started, including the already commited
+ # since the transaction started, including the already committed
# ('released') savepoints. There will be neither a new $job nor any
# $thing entry in the database.
@@ -1621,10 +1621,10 @@
Add the L<DBIx::Class::Schema::Versioned> schema component to your
Schema class. This will add a new table to your database called
C<dbix_class_schema_vesion> which will keep track of which version is installed
-and warn if the user trys to run a newer schema version than the
+and warn if the user tries to run a newer schema version than the
database thinks it has.
-Alternatively, you can send the conversion sql scripts to your
+Alternatively, you can send the conversion SQL scripts to your
customers as above.
=head2 Setting quoting for the generated SQL
@@ -1706,7 +1706,7 @@
}
);
-In conditions (eg. C<\%cond> in the L<DBIx::Class::ResultSet/search> family of
+In conditions (e.g. C<\%cond> in the L<DBIx::Class::ResultSet/search> family of
methods) you cannot directly use array references (since this is interpreted as
a list of values to be C<OR>ed), but you can use the following syntax to force
passing them as bind values:
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Example.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Example.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Example.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -58,7 +58,7 @@
title TEXT NOT NULL
);
-and create the sqlite database file:
+and create the SQLite database file:
sqlite3 example.db < example.sql
@@ -198,7 +198,7 @@
use strict;
my $schema = MyDatabase::Main->connect('dbi:SQLite:db/example.db');
- # for other DSNs, e.g. MySql, see the perldoc for the relevant dbd
+ # for other DSNs, e.g. MySQL, see the perldoc for the relevant dbd
# driver, e.g perldoc L<DBD::mysql>.
get_tracks_by_cd('Bad');
@@ -345,7 +345,7 @@
=head1 Notes
-A reference implentation of the database and scripts in this example
+A reference implementation of the database and scripts in this example
are available in the main distribution for DBIx::Class under the
directory F<t/examples/Schema>.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Intro.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Intro.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Intro.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -225,7 +225,7 @@
Note that L<DBIx::Class::Schema> does not cache connections for you. If you use
multiple connections, you need to do this manually.
-To execute some sql statements on every connect you can add them as an option in
+To execute some SQL statements on every connect you can add them as an option in
a special fifth argument to connect:
my $another_schema = My::Schema->connect(
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Joining.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Joining.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Joining.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -113,7 +113,7 @@
=head2 Whole related objects
-To fetch entire related objects, eg CDs and all Track data, use the
+To fetch entire related objects, e.g. CDs and all Track data, use the
'prefetch' attribute:
$schema->resultset('CD')->search(
@@ -129,7 +129,7 @@
SELECT cd.ID, cd.Title, cd.Year, tracks.id, tracks.Name, tracks.Artist FROM CD JOIN Tracks ON CD.ID = tracks.CDID WHERE cd.Title = 'Funky CD' ORDER BY 'tracks.id';
The syntax of 'prefetch' is the same as 'join' and implies the
-joining, so no need to use both together.
+joining, so there is no need to use both together.
=head2 Subset of related fields
@@ -232,7 +232,7 @@
To perform joins using relations of the tables you are joining to, use
a hashref to indicate the join depth. This can theoretically go as
-deep as you like (warning, contrived examples!):
+deep as you like (warning: contrived examples!):
join => { room => { table => 'leg' } }
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Reading.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Reading.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Reading.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -17,14 +17,14 @@
Methods should be documented in the files which also contain the code
for the method, or that file should be hidden from PAUSE completely,
in which case the methods are documented in the file which loads
-it. Methods may also be documented and refered to in files
+it. Methods may also be documented and referred to in files
representing the major objects or components on which they can be
called.
For example, L<DBIx::Class::Relationship> documents the methods
actually coded in the helper relationship classes like
DBIx::Class::Relationship::BelongsTo. The BelongsTo file itself is
-hidden from pause as it has no documentation. The accessors created by
+hidden from PAUSE as it has no documentation. The accessors created by
relationships should be mentioned in L<DBIx::Class::Row>, the major
object that they will be called on.
@@ -46,7 +46,7 @@
what the method returns.
The first item provides a list of all possible values for the
-arguments of the method in order, separated by C<, >, preceeded by the
+arguments of the method in order, separated by C<, >, preceded by the
text "Arguments: "
Example (for the belongs_to relationship):
@@ -145,10 +145,10 @@
=item *
The argument list is followed by some examples of how to use the
-method, using it's various types of arguments.
+method, using its various types of arguments.
The examples can also include ways to use the results if
-applicable. For instance if the documentation is for a relationship
+applicable. For instance, if the documentation is for a relationship
type, the examples can include how to call the resulting relation
accessor, how to use the relation name in a search and so on.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Troubleshooting.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Troubleshooting.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Manual/Troubleshooting.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -23,7 +23,7 @@
$schema->storage->debugfh(IO::File->new('/tmp/trace.out', 'w');
-Alternatively you can do this with the environment variable too:-
+Alternatively you can do this with the environment variable, too:-
export DBIC_TRACE="1=/tmp/trace.out"
@@ -51,9 +51,8 @@
There's likely a syntax error in the table class referred to elsewhere
in this error message. In particular make sure that the package
-declaration is correct, so for a schema C< MySchema > you need to
-specify a fully qualified namespace: C< package MySchema::MyTable; >
-for example.
+declaration is correct. For example, for a schema C< MySchema >
+you need to specify a fully qualified namespace: C< package MySchema::MyTable; >.
=head2 syntax error at or near "<something>" ...
@@ -103,7 +102,7 @@
=head2 column "foo DESC" does not exist ...
This can happen if you are still using the obsolete order hack, and also
-happen to turn on sql-quoting.
+happen to turn on SQL-quoting.
$rs->search( {}, { order_by => [ 'name DESC' ] } );
@@ -133,15 +132,15 @@
Fedora 8 - perl-5.8.8-41.fc8
RHEL5 - perl-5.8.8-15.el5_2.1
-The issue is due to perl doing an exhaustive search of blessed objects
+This issue is due to perl doing an exhaustive search of blessed objects
under certain circumstances. The problem shows up as performance
-degredation exponential to the number of L<DBIx::Class> row objects in
-memory, so can be unoticeable with certain data sets, but with huge
+degradation exponential to the number of L<DBIx::Class> row objects in
+memory, so can be unnoticeable with certain data sets, but with huge
performance impacts on other datasets.
-A pair of tests for susceptability to the issue, and performance effects
+A pair of tests for susceptibility to the issue and performance effects
of the bless/overload problem can be found in the L<DBIx::Class> test
-suite in the file C<t/99rh_perl_perf_bug.t>
+suite, in the C<t/99rh_perl_perf_bug.t> file.
Further information on this issue can be found in
L<https://bugzilla.redhat.com/show_bug.cgi?id=379791>,
@@ -150,7 +149,7 @@
=head2 Excessive Memory Allocation with TEXT/BLOB/etc. Columns and Large LongReadLen
-It has been observed, using L<DBD::ODBC>, that a creating a L<DBIx::Class::Row>
+It has been observed, using L<DBD::ODBC>, that creating a L<DBIx::Class::Row>
object which includes a column of data type TEXT/BLOB/etc. will allocate
LongReadLen bytes. This allocation does not leak, but if LongReadLen
is large in size, and many such row objects are created, e.g. as the
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Optional/Dependencies.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Optional/Dependencies.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Optional/Dependencies.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -33,7 +33,7 @@
req => {
%$moose_basic,
'namespace::clean' => '0.11',
- 'Hash::Merge' => '0.11',
+ 'Hash::Merge' => '0.12',
},
pod => {
title => 'Storage::Replicated',
@@ -74,28 +74,55 @@
},
},
- author => {
+
+ test_pod => {
req => {
- 'Test::Pod' => '1.26',
+ 'Test::Pod' => '1.41',
+ },
+ },
+
+ test_podcoverage => {
+ req => {
'Test::Pod::Coverage' => '1.08',
'Pod::Coverage' => '0.20',
+ },
+ },
+
+ test_notabs => {
+ req => {
#'Test::NoTabs' => '0.9',
+ },
+ },
+
+ test_eol => {
+ req => {
#'Test::EOL' => '0.6',
},
},
- core => {
+ test_cycle => {
req => {
- # t/52cycle.t
'Test::Memory::Cycle' => '0',
'Devel::Cycle' => '1.10',
+ },
+ },
+ test_dtrelated => {
+ req => {
# t/36datetime.t
# t/60core.t
'DateTime::Format::SQLite' => '0',
# t/96_is_deteministic_value.t
'DateTime::Format::Strptime'=> '0',
+
+ # t/inflate/datetime_mysql.t
+ # (doesn't need Mysql itself)
+ 'DateTime::Format::MySQL' => '0',
+
+ # t/inflate/datetime_pg.t
+ # (doesn't need PG itself)
+ 'DateTime::Format::Pg' => '0',
},
},
@@ -116,7 +143,6 @@
? (
'Sys::SigAction' => '0',
'DBD::Pg' => '2.009002',
- 'DateTime::Format::Pg' => '0',
) : ()
},
},
@@ -125,7 +151,6 @@
req => {
$ENV{DBICTEST_MYSQL_DSN}
? (
- 'DateTime::Format::MySQL' => '0',
'DBD::mysql' => '0',
) : ()
},
@@ -151,12 +176,22 @@
rdbms_asa => {
req => {
- grep $_, @ENV{qw/DBICTEST_SYBASE_ASA_DSN DBICTEST_SYBASE_ASA_ODBC_DSN/}
+ (scalar grep $_, @ENV{qw/DBICTEST_SYBASE_ASA_DSN DBICTEST_SYBASE_ASA_ODBC_DSN/})
? (
'DateTime::Format::Strptime' => 0,
) : ()
},
},
+
+ rdbms_db2 => {
+ req => {
+ $ENV{DBICTEST_DB2_DSN}
+ ? (
+ 'DBD::DB2' => 0,
+ ) : ()
+ },
+ },
+
};
@@ -246,11 +281,15 @@
}
}
+# This is to be called by the author onbly (automatically in Makefile.PL)
sub _gen_pod {
my $class = shift;
my $modfn = __PACKAGE__ . '.pm';
$modfn =~ s/\:\:/\//g;
+ require DBIx::Class;
+ my $distver = DBIx::Class->VERSION;
+
my @chunks = (
<<"EOC",
#########################################################################
@@ -263,7 +302,30 @@
#
EOC
'=head1 NAME',
- "$class - Optional module dependency specifications",
+ "$class - Optional module dependency specifications (for module authors)",
+ '=head1 SYNOPSIS (EXPERIMENTAL)',
+ <<EOS,
+B<THE USAGE SHOWN HERE IS EXPERIMENTAL>
+
+Somewhere in your build-file (e.g. L<Module::Install>'s Makefile.PL):
+
+ ...
+
+ configure_requires 'DBIx::Class' => '$distver';
+
+ require $class;
+
+ my \$deploy_deps = $class->req_list_for ('deploy');
+
+ for (keys %\$deploy_deps) {
+ requires \$_ => \$deploy_deps->{\$_};
+ }
+
+ ...
+
+Note that there are some caveats regarding C<configure_requires()>, more info
+can be found at L<Module::Install/configure_requires>
+EOS
'=head1 DESCRIPTION',
<<'EOD',
Some of the less-frequently used features of L<DBIx::Class> have external
@@ -272,7 +334,8 @@
in the base Makefile.PL. Instead an exception with a descriptive message is
thrown when a specific feature is missing one or several modules required for
its operation. This module is the central holding place for the current list
-of such dependencies.
+of such dependencies, for DBIx::Class core authors, and DBIx::Class extension
+authors alike.
EOD
'=head1 CURRENT REQUIREMENT GROUPS',
<<'EOD',
@@ -310,17 +373,9 @@
'=back',
<<EOD,
This method should be used by DBIx::Class extension authors, to determine the
-version of modules which a specific feature requires in the current version of
-DBIx::Class. For example if you write a module/extension that requires
-DBIx::Class and also requires the availability of
-L<DBIx::Class::Storage::DBI/deploy>, you can do the following in your
-C<Makefile.PL> or C<Build.PL>
-
- require $class;
- my \$dep_list = $class->req_list_for ('deploy');
-
-Which will give you a list of module/version pairs necessary for the particular
-feature to function with this version of DBIx::Class.
+version of modules a specific feature requires in the B<current> version of
+DBIx::Class. See the L<SYNOPSIS|/SYNOPSIS (EXPERIMENTAL)> for a real-world
+example.
EOD
'=head2 req_ok_for',
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Ordered.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Ordered.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Ordered.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -127,7 +127,7 @@
This method specifies a value of L</position_column> which B<would
never be assigned to a row> during normal operation. When
a row is moved, its position is set to this value temporarily, so
-that any unique constrainst can not be violated. This value defaults
+that any unique constraints can not be violated. This value defaults
to 0, which should work for all cases except when your positions do
indeed start from 0.
@@ -797,15 +797,15 @@
if (grep { $_ eq $position_column } ( map { @$_ } (values %{{ $rsrc->unique_constraints }} ) ) ) {
- my @pcols = $rsrc->primary_columns;
+ my @pcols = $rsrc->_pri_cols;
my $cursor = $shift_rs->search ({}, { order_by => { "-$ord", $position_column }, columns => \@pcols } )->cursor;
my $rs = $self->result_source->resultset;
- while (my @pks = $cursor->next ) {
-
+ my @all_pks = $cursor->all;
+ while (my $pks = shift @all_pks) {
my $cond;
for my $i (0.. $#pcols) {
- $cond->{$pcols[$i]} = $pks[$i];
+ $cond->{$pcols[$i]} = $pks->[$i];
}
$rs->search($cond)->update ({ $position_column => \ "$position_column $op 1" } );
@@ -921,7 +921,7 @@
triggering any of the positioning integrity code).
Some day you might get confronted by datasets that have ambiguous
-positioning data (i.e. duplicate position values within the same group,
+positioning data (e.g. duplicate position values within the same group,
in a table without unique constraints). When manually fixing such data
keep in mind that you can not invoke L<DBIx::Class::Row/update> like
you normally would, as it will get confused by the wrong data before
@@ -956,14 +956,14 @@
=head2 Multiple Moves
-Be careful when issueing move_* methods to multiple objects. If
+Be careful when issuing move_* methods to multiple objects. If
you've pre-loaded the objects then when you move one of the objects
the position of the other object will not reflect their new value
until you reload them from the database - see
L<DBIx::Class::Row/discard_changes>.
There are times when you will want to move objects as groups, such
-as changeing the parent of several objects at once - this directly
+as changing the parent of several objects at once - this directly
conflicts with this problem. One solution is for us to write a
ResultSet class that supports a parent() method, for example. Another
solution is to somehow automagically modify the objects that exist
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/PK.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/PK.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/PK.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -31,13 +31,27 @@
my ($self) = @_;
$self->throw_exception( "Can't call id() as a class method" )
unless ref $self;
- my @pk = $self->_ident_values;
- return (wantarray ? @pk : $pk[0]);
+ my @id_vals = $self->_ident_values;
+ return (wantarray ? @id_vals : $id_vals[0]);
}
sub _ident_values {
my ($self) = @_;
- return (map { $self->{_column_data}{$_} } $self->primary_columns);
+ my (@ids, @missing);
+
+ for ($self->_pri_cols) {
+ push @ids, $self->get_column($_);
+ push @missing, $_ if (! defined $ids[-1] and ! $self->has_column_loaded ($_) );
+ }
+
+ if (@missing && $self->in_storage) {
+ $self->throw_exception (
+ 'Unable to uniquely identify row object with missing PK columns: '
+ . join (', ', @missing )
+ );
+ }
+
+ return @ids;
}
=head2 ID
@@ -64,12 +78,11 @@
$self->throw_exception( "Can't call ID() as a class method" )
unless ref $self;
return undef unless $self->in_storage;
- return $self->_create_ID(map { $_ => $self->{_column_data}{$_} }
- $self->primary_columns);
+ return $self->_create_ID(%{$self->ident_condition});
}
sub _create_ID {
- my ($self,%vals) = @_;
+ my ($self, %vals) = @_;
return undef unless 0 == grep { !defined } values %vals;
return join '|', ref $self || $self, $self->result_source->name,
map { $_ . '=' . $vals{$_} } sort keys %vals;
@@ -87,9 +100,25 @@
sub ident_condition {
my ($self, $alias) = @_;
- my %cond;
+
+ my @pks = $self->_pri_cols;
+ my @vals = $self->_ident_values;
+
+ my (%cond, @undef);
my $prefix = defined $alias ? $alias.'.' : '';
- $cond{$prefix.$_} = $self->get_column($_) for $self->primary_columns;
+ for my $col (@pks) {
+ if (! defined ($cond{$prefix.$col} = shift @vals) ) {
+ push @undef, $col;
+ }
+ }
+
+ if (@undef && $self->in_storage) {
+ $self->throw_exception (
+ 'Unable to construct row object identity condition due to NULL PK columns: '
+ . join (', ', @undef)
+ );
+ }
+
return \%cond;
}
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Accessor.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Accessor.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Accessor.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -4,7 +4,6 @@
use strict;
use warnings;
use Sub::Name ();
-use Class::Inspector ();
our %_pod_inherit_config =
(
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Base.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Base.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/Base.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -200,9 +200,15 @@
my $query = ((@_ > 1) ? {@_} : shift);
my $source = $self->result_source;
- my $cond = $source->_resolve_condition(
- $rel_info->{cond}, $rel, $self
- );
+
+ # condition resolution may fail if an incomplete master-object prefetch
+ # is encountered
+ my $cond =
+ eval { $source->_resolve_condition( $rel_info->{cond}, $rel, $self ) }
+ ||
+ $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION
+ ;
+
if ($cond eq $DBIx::Class::ResultSource::UNRESOLVABLE_CONDITION) {
my $reverse = $source->reverse_relationship_info($rel);
foreach my $rev_rel (keys %$reverse) {
@@ -260,7 +266,7 @@
( $objects_rs ) = $rs->search_related_rs('relname', $cond, $attrs);
This method works exactly the same as search_related, except that
-it guarantees a restultset, even in list context.
+it guarantees a resultset, even in list context.
=cut
@@ -392,7 +398,7 @@
call set_from_related on the book.
This is called internally when you pass existing objects as values to
-L<DBIx::Class::ResultSet/create>, or pass an object to a belongs_to acessor.
+L<DBIx::Class::ResultSet/create>, or pass an object to a belongs_to accessor.
The columns are only set in the local copy of the object, call L</update> to
set them in the storage.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/BelongsTo.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/BelongsTo.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/BelongsTo.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -24,19 +24,14 @@
# no join condition or just a column name
if (!ref $cond) {
$class->ensure_class_loaded($f_class);
- my %f_primaries = map { $_ => 1 } eval { $f_class->primary_columns };
+ my %f_primaries = map { $_ => 1 } eval { $f_class->_pri_cols };
$class->throw_exception(
- "Can't infer join condition for ${rel} on ${class}; ".
- "unable to load ${f_class}: $@"
+ "Can't infer join condition for ${rel} on ${class}: $@"
) if $@;
my ($pri, $too_many) = keys %f_primaries;
$class->throw_exception(
"Can't infer join condition for ${rel} on ${class}; ".
- "${f_class} has no primary keys"
- ) unless defined $pri;
- $class->throw_exception(
- "Can't infer join condition for ${rel} on ${class}; ".
"${f_class} has multiple primary keys"
) if $too_many;
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasMany.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasMany.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasMany.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -14,7 +14,10 @@
unless (ref $cond) {
$class->ensure_class_loaded($f_class);
- my ($pri, $too_many) = $class->primary_columns;
+ my ($pri, $too_many) = eval { $class->_pri_cols };
+ $class->throw_exception(
+ "Can't infer join condition for ${rel} on ${class}: $@"
+ ) if $@;
$class->throw_exception(
"has_many can only infer join for a single primary key; ".
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasOne.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasOne.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship/HasOne.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -24,7 +24,7 @@
$class->ensure_class_loaded($f_class);
my $pri = $class->_get_primary_key;
-
+
$class->throw_exception(
"might_have/has_one needs a primary key to infer a join; ".
"${class} has none"
@@ -60,8 +60,12 @@
sub _get_primary_key {
my ( $class, $target_class ) = @_;
$target_class ||= $class;
- my ($pri, $too_many) = $target_class->primary_columns;
+ my ($pri, $too_many) = eval { $target_class->_pri_cols };
$class->throw_exception(
+ "Can't infer join condition on ${target_class}: $@"
+ ) if $@;
+
+ $class->throw_exception(
"might_have/has_one can only infer join for a single primary key; ".
"${class} has more"
) if $too_many;
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Relationship.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -111,7 +111,7 @@
you want to use the default value for it, but still want to set C<\%attrs>.
See L<DBIx::Class::Relationship::Base> for documentation on the
-attrubutes that are allowed in the C<\%attrs> argument.
+attributes that are allowed in the C<\%attrs> argument.
=head2 belongs_to
@@ -234,7 +234,7 @@
Creates a one-to-many relationship where the foreign class refers to
this class's primary key. This relationship refers to zero or more
-records in the foreign table (ie, a C<LEFT JOIN>). This relationship
+records in the foreign table (e.g. a C<LEFT JOIN>). This relationship
defaults to using the end of this classes namespace as the foreign key
in C<$related_class> to resolve the join, unless C<$their_fk_column>
specifies the foreign key column in C<$related_class> or C<cond>
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSet.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSet.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSet.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -141,7 +141,7 @@
=head1 OVERLOADING
If a resultset is used in a numeric context it returns the L</count>.
-However, if it is used in a booleand context it is always true. So if
+However, if it is used in a boolean context it is always true. So if
you want to check if a resultset has any results use C<if $rs != 0>.
C<if $rs> will always be true.
@@ -524,7 +524,7 @@
# in ::Relationship::Base::search_related (the row method), and furthermore
# the relationship is of the 'single' type. This means that the condition
# provided by the relationship (already attached to $self) is sufficient,
- # as there can be only one row in the databse that would satisfy the
+ # as there can be only one row in the database that would satisfy the
# relationship
}
else {
@@ -535,7 +535,7 @@
}
# Run the query
- my $rs = $self->search ($query, {result_class => $self->result_class, %$attrs});
+ my $rs = $self->search ($query, $attrs);
if (keys %{$rs->_resolved_attrs->{collapse}}) {
my $row = $rs->next;
carp "Query returned more than one row" if $rs->next;
@@ -639,7 +639,7 @@
=head2 search_related_rs
This method works exactly the same as search_related, except that
-it guarantees a restultset, even in list context.
+it guarantees a resultset, even in list context.
=cut
@@ -697,7 +697,7 @@
=item B<Note>
-As of 0.08100, this method enforces the assumption that the preceeding
+As of 0.08100, this method enforces the assumption that the preceding
query returns only one row. If more than one row is returned, you will receive
a warning:
@@ -1136,6 +1136,7 @@
if ($result_class) {
$self->ensure_class_loaded($result_class);
$self->_result_class($result_class);
+ $self->{attrs}{result_class} = $result_class if ref $self;
}
$self->_result_class;
}
@@ -1261,10 +1262,10 @@
# 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
if ( keys %{$attrs->{collapse}} ) {
- $sub_attrs->{group_by} = [ map { "$attrs->{alias}.$_" } ($rsrc->primary_columns) ]
+ $sub_attrs->{group_by} = [ map { "$attrs->{alias}.$_" } ($rsrc->_pri_cols) ]
}
- $sub_attrs->{select} = $rsrc->storage->_subq_count_select ($rsrc, $sub_attrs);
+ $sub_attrs->{select} = $rsrc->storage->_subq_count_select ($rsrc, $attrs);
# this is so that the query can be simplified e.g.
# * ordering can be thrown away in things like Top limit
@@ -1420,7 +1421,7 @@
my $attrs = $self->_resolved_attrs_copy;
delete $attrs->{$_} for qw/collapse select as/;
- $attrs->{columns} = [ map { "$attrs->{alias}.$_" } ($self->result_source->primary_columns) ];
+ $attrs->{columns} = [ map { "$attrs->{alias}.$_" } ($self->result_source->_pri_cols) ];
if ($needs_group_by_subq) {
# make sure no group_by was supplied, or if there is one - make sure it matches
@@ -1597,7 +1598,7 @@
],
},
{ artistid => 5, name => 'Angsty-Whiny Girl', cds => [
- { title => 'My parents sold me to a record company' ,year => 2005 },
+ { title => 'My parents sold me to a record company', year => 2005 },
{ title => 'Why Am I So Ugly?', year => 2006 },
{ title => 'I Got Surgery and am now Popular', year => 2007 }
],
@@ -1625,7 +1626,7 @@
[qw/artistid name/],
[100, 'A Formally Unknown Singer'],
[101, 'A singer that jumped the shark two albums ago'],
- [102, 'An actually cool singer.'],
+ [102, 'An actually cool singer'],
]);
Please note an important effect on your data when choosing between void and
@@ -2132,7 +2133,7 @@
B<keyed on the relationship name>. If the relationship is of type C<multi>
(L<DBIx::Class::Relationship/has_many>) - pass an arrayref of hashrefs.
The process will correctly identify columns holding foreign keys, and will
-transparrently populate them from the keys of the corresponding relation.
+transparently populate them from the keys of the corresponding relation.
This can be applied recursively, and will work correctly for a structure
with an arbitrary depth and width, as long as the relationships actually
exists and the correct column data has been supplied.
@@ -3329,7 +3330,7 @@
will fail miserably.
To get around this limitation, you can supply literal SQL to your
-C<select> attibute that contains the C<AS alias> text, eg:
+C<select> attribute that contains the C<AS alias> text, e.g.
select => [\'myfield AS alias']
@@ -3440,7 +3441,7 @@
C<prefetch> can be used with the following relationship types: C<belongs_to>,
C<has_one> (or if you're using C<add_relationship>, any relationship declared
with an accessor type of 'single' or 'filter'). A more complex example that
-prefetches an artists cds, the tracks on those cds, and the tags associted
+prefetches an artists cds, the tracks on those cds, and the tags associated
with that artist is given below (assuming many-to-many from artists to tags):
my $rs = $schema->resultset('Artist')->search(
@@ -3519,7 +3520,7 @@
=back
-Specifes the maximum number of rows for direct retrieval or the number of
+Specifies the maximum number of rows for direct retrieval or the number of
rows per page if the page attribute or method is used.
=head2 offset
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource/Table.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource/Table.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource/Table.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -16,7 +16,7 @@
=head1 DESCRIPTION
-Table object that inherits from L<DBIx::Class::ResultSource>
+Table object that inherits from L<DBIx::Class::ResultSource>.
=head1 METHODS
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSource.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -503,6 +503,16 @@
return @{shift->_primaries||[]};
}
+sub _pri_cols {
+ my $self = shift;
+ my @pcols = $self->primary_columns
+ or $self->throw_exception (sprintf(
+ 'Operation requires a primary key to be declared on %s via set_primary_key',
+ ref $self,
+ ));
+ return @pcols;
+}
+
=head2 add_unique_constraint
=over 4
@@ -1565,7 +1575,7 @@
__PACKAGE__->column_info_from_storage(1);
Enables the on-demand automatic loading of the above column
-metadata from storage as neccesary. This is *deprecated*, and
+metadata from storage as necessary. This is *deprecated*, and
should not be used. It will be removed before 1.0.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceHandle.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceHandle.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceHandle.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -87,7 +87,7 @@
=head2 STORABLE_thaw
Thaws frozen handle. Resets the internal schema reference to the package
-variable C<$thaw_schema>. The recomened way of setting this is to use
+variable C<$thaw_schema>. The recommended way of setting this is to use
C<< $schema->thaw($ice) >> which handles this for you.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceProxy.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceProxy.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/ResultSourceProxy.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -75,6 +75,10 @@
shift->result_source_instance->primary_columns(@_);
}
+sub _pri_cols {
+ shift->result_source_instance->_pri_cols(@_);
+}
+
sub add_unique_constraint {
shift->result_source_instance->add_unique_constraint(@_);
}
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Row.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Row.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Row.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -450,7 +450,7 @@
to C<update>, e.g. ( { %{ $href } } )
If the values passed or any of the column values set on the object
-contain scalar references, eg:
+contain scalar references, e.g.:
$row->last_modified(\'NOW()');
# OR
@@ -898,7 +898,7 @@
L<DBIx::Class::Relationship/has_many> key, and create the related
objects if necessary.
-Be aware that the input hashref might be edited in place, so dont rely
+Be aware that the input hashref might be edited in place, so don't rely
on it being the same after a call to C<set_inflated_columns>. If you
need to preserve the hashref, it is sufficient to pass a shallow copy
to C<set_inflated_columns>, e.g. ( { %{ $href } } )
@@ -952,7 +952,7 @@
the new object.
Relationships will be followed by the copy procedure B<only> if the
-relationship specifes a true value for its
+relationship specifies a true value for its
L<cascade_copy|DBIx::Class::Relationship::Base> attribute. C<cascade_copy>
is set by default on C<has_many> relationships and unset on all others.
@@ -975,7 +975,7 @@
$new->insert;
# Its possible we'll have 2 relations to the same Source. We need to make
- # sure we don't try to insert the same row twice esle we'll violate unique
+ # sure we don't try to insert the same row twice else we'll violate unique
# constraints
my $rels_copied = {};
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/SQLAHacks/OracleJoins.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/SQLAHacks/OracleJoins.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/SQLAHacks/OracleJoins.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -96,8 +96,7 @@
This module was originally written to support Oracle < 9i where ANSI joins
weren't supported at all, but became the module for Oracle >= 8 because
-Oracle's optimising of ANSI joins is horrible. (See:
-http://scsys.co.uk:8001/7495)
+Oracle's optimising of ANSI joins is horrible.
=head1 SYNOPSIS
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema/Versioned.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema/Versioned.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema/Versioned.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -258,7 +258,7 @@
=back
-Virtual method that should be overriden to create an upgrade file.
+Virtual method that should be overridden to create an upgrade file.
This is useful in the case of upgrading across multiple versions
to concatenate several files to create one upgrade file.
@@ -279,7 +279,7 @@
=back
-Virtual method that should be overriden to return an ordered list
+Virtual method that should be overridden to return an ordered list
of schema versions. This is then used to produce a set of steps to
upgrade through to achieve the required schema version.
@@ -303,7 +303,7 @@
then it is assumed you can do the upgrade as a single step). It
then iterates through the list of versions between the current db
version and the schema version applying one update at a time until
-all relvant updates are applied.
+all relevant updates are applied.
The individual update steps are performed by using
L</upgrade_single_step>, which will apply the update and also
@@ -544,7 +544,7 @@
compatibility between the old versions table (SchemaVersions) and the new one
(dbix_class_schema_versions).
-To avoid the checks on connect, set the env var DBIC_NO_VERSION_CHECK or alternatively you can set the ignore_version attr in the forth argument like so:
+To avoid the checks on connect, set the environment var DBIC_NO_VERSION_CHECK or alternatively you can set the ignore_version attr in the forth argument like so:
my $schema = MyApp::Schema->connect(
$dsn,
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Schema.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -82,7 +82,7 @@
With no arguments, this method uses L<Module::Find> to load all your
Result classes from a sub-namespace F<Result> under your Schema class'
-namespace. Eg. With a Schema of I<MyDB::Schema> all files in
+namespace, i.e. with a Schema of I<MyDB::Schema> all files in
I<MyDB::Schema::Result> are assumed to be Result classes.
It also finds all ResultSet classes in the namespace F<ResultSet> and
@@ -748,7 +748,7 @@
L<DBIx::Class::ResultSet/create>, and a arrayref of the resulting row
objects is returned.
-i.e.,
+e.g.
$schema->populate('Artist', [
[ qw/artistid name/ ],
@@ -851,7 +851,7 @@
It also attaches a corresponding L<DBIx::Class::ResultSource> object to the
new $schema object. If C<$additional_base_class> is given, the new composed
-classes will inherit from first the corresponding classe from the current
+classes will inherit from first the corresponding class from the current
schema then the base class.
For example, for a schema with My::Schema::CD and My::Schema::Artist classes,
@@ -1155,7 +1155,7 @@
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
+reference to any schema, so are rather useless.
=cut
@@ -1167,8 +1167,8 @@
=head2 freeze
-This doesn't actualy do anything more than call L<Storable/freeze>, it is just
-provided here for symetry.
+This doesn't actually do anything more than call L<Storable/freeze>, it is just
+provided here for symmetry.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/StartupCheck.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/StartupCheck.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/StartupCheck.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -17,7 +17,7 @@
triggers, incorrectly flagging those versions of perl to be buggy. A
more comprehensive check has been moved into the test suite in
C<t/99rh_perl_perf_bug.t> and further information about the bug has been
-put in L<DBIx::Class::Manual::Troubleshooting>
+put in L<DBIx::Class::Manual::Troubleshooting>.
Other checks may be added from time to time.
Deleted: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AmbiguousGlob.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -1,47 +0,0 @@
-package DBIx::Class::Storage::DBI::AmbiguousGlob;
-
-use strict;
-use warnings;
-
-use base 'DBIx::Class::Storage::DBI';
-use mro 'c3';
-
-=head1 NAME
-
-DBIx::Class::Storage::DBI::AmbiguousGlob - Storage component for RDBMS choking on count(*)
-
-=head1 DESCRIPTION
-
-Some servers choke on things like:
-
- COUNT(*) FROM (SELECT tab1.col, tab2.col FROM tab1 JOIN tab2 ... )
-
-claiming that col is a duplicate column (it loses the table specifiers by
-the time it gets to the *). Thus for any subquery count we select only the
-primary keys of the main table in the inner query. This hopefully still
-hits the indexes and keeps the server happy.
-
-At this point the only overriden method is C<_subq_count_select()>
-
-=cut
-
-sub _subq_count_select {
- my ($self, $source, $rs_attrs) = @_;
-
- return $rs_attrs->{group_by} if $rs_attrs->{group_by};
-
- my @pcols = map { join '.', $rs_attrs->{alias}, $_ } ($source->primary_columns);
- return @pcols ? \@pcols : [ 1 ];
-}
-
-=head1 AUTHORS
-
-See L<DBIx::Class/CONTRIBUTORS>
-
-=head1 LICENSE
-
-You may distribute this code under the same terms as Perl itself.
-
-=cut
-
-1;
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AutoCast.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AutoCast.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/AutoCast.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -23,7 +23,7 @@
throw implicit type conversion errors.
As long as a column L<data_type|DBIx::Class::ResultSource/add_columns> is
-defined, and it resolves to a base RDBMS native type via L</_native_data_type> as
+defined and resolves to a base RDBMS native type via L</_native_data_type> as
defined in your Storage driver, the placeholder for this column will be
converted to:
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MSSQL.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MSSQL.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MSSQL.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use base qw/DBIx::Class::Storage::DBI::AmbiguousGlob DBIx::Class::Storage::DBI/;
+use base qw/DBIx::Class::Storage::DBI/;
use mro 'c3';
use List::Util();
@@ -341,7 +341,7 @@
Thus compromise between usability and perfection is the MSSQL-specific
L<resultset attribute|DBIx::Class::ResultSet/ATTRIBUTES> C<unsafe_subselect_ok>.
It is deliberately not possible to set this on the Storage level, as the user
-should inspect (and preferrably regression-test) the return of every such
+should inspect (and preferably regression-test) the return of every such
ResultSet individually. The example above would work if written like:
$rs->search ({}, {
@@ -354,7 +354,7 @@
If it is possible to rewrite the search() in a way that will avoid the need
for this flag - you are urged to do so. If DBIC internals insist that an
ordered subselect is necessary for an operation, and you believe there is a
-differnt/better way to get the same result - please file a bugreport.
+different/better way to get the same result - please file a bugreport.
=head1 AUTHOR
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MultiColumnIn.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MultiColumnIn.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/MultiColumnIn.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -17,7 +17,7 @@
The storage class for any such RDBMS should inherit from this class, in order
to dramatically speed up update/delete operations on joined multipk resultsets.
-At this point the only overriden method is C<_multipk_update_delete()>
+At this point the only overridden method is C<_multipk_update_delete()>
=cut
@@ -26,7 +26,7 @@
my ($rs, $op, $values) = @_;
my $rsrc = $rs->result_source;
- my @pcols = $rsrc->primary_columns;
+ my @pcols = $rsrc->_pri_cols;
my $attrs = $rs->_resolved_attrs;
# naive check - this is an internal method after all, we should know what we are doing
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/ODBC/ACCESS.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -79,7 +79,7 @@
=head1 IMPLEMENTATION NOTES
-MS Access supports the @@IDENTITY function for retriving the id of the latest inserted row.
+MS Access supports the @@IDENTITY function for retrieving the id of the latest inserted row.
@@IDENTITY is global to the connection, so to support the possibility of getting the last inserted
id for different tables, the insert() function stores the inserted id on a per table basis.
last_insert_id() then just returns the stored value.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Oracle/WhereJoins.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Oracle/WhereJoins.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Oracle/WhereJoins.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -23,8 +23,7 @@
This module was originally written to support Oracle < 9i where ANSI joins
weren't supported at all, but became the module for Oracle >= 8 because
-Oracle's optimising of ANSI joins is horrible. (See:
-http://scsys.co.uk:8001/7495)
+Oracle's optimising of ANSI joins is horrible.
=head1 SYNOPSIS
@@ -44,7 +43,7 @@
It should properly support left joins, and right joins. Full outer joins are
not possible due to the fact that Oracle requires the entire query be written
to union the results of a left and right join, and by the time this module is
-called to create the where query and table definition part of the sql query,
+called to create the where query and table definition part of the SQL query,
it's already too late.
=head1 METHODS
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/First.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/First.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/First.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -19,7 +19,7 @@
database's (L<DBIx::Class::Storage::DBI::Replicated::Replicant>), defines a
method by which query load can be spread out across each replicant in the pool.
-This Balancer just get's whatever is the first replicant in the pool
+This Balancer just gets whichever is the first replicant in the pool.
=head1 ATTRIBUTES
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Balancer.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -110,7 +110,7 @@
This method should be defined in the class which consumes this role.
Given a pool object, return the next replicant that will serve queries. The
-default behavior is to grap the first replicant it finds but you can write
+default behavior is to grab the first replicant it finds but you can write
your own subclasses of L<DBIx::Class::Storage::DBI::Replicated::Balancer> to
support other balance systems.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Introduction.pod
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Introduction.pod 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Introduction.pod 2010-02-21 14:31:08 UTC (rev 8792)
@@ -9,8 +9,8 @@
This is an introductory document for L<DBIx::Class::Storage::Replication>.
This document is not an overview of what replication is or why you should be
-using it. It is not a document explaing how to setup MySQL native replication
-either. Copious external resources are avialable for both. This document
+using it. It is not a document explaining how to setup MySQL native replication
+either. Copious external resources are available for both. This document
presumes you have the basics down.
=head1 DESCRIPTION
@@ -33,7 +33,7 @@
For an easy way to start playing with MySQL native replication, see:
L<MySQL::Sandbox>.
-If you are using this with a L<Catalyst> based appplication, you may also wish
+If you are using this with a L<Catalyst> based application, you may also want
to see more recent updates to L<Catalyst::Model::DBIC::Schema>, which has
support for replication configuration options as well.
@@ -41,15 +41,15 @@
By default, when you start L<DBIx::Class>, your Schema (L<DBIx::Class::Schema>)
is assigned a storage_type, which when fully connected will reflect your
-underlying storage engine as defined by your choosen database driver. For
+underlying storage engine as defined by your chosen database driver. For
example, if you connect to a MySQL database, your storage_type will be
L<DBIx::Class::Storage::DBI::mysql> Your storage type class will contain
database specific code to help smooth over the differences between databases
and let L<DBIx::Class> do its thing.
If you want to use replication, you will override this setting so that the
-replicated storage engine will 'wrap' your underlying storages and present to
-the end programmer a unified interface. This wrapper storage class will
+replicated storage engine will 'wrap' your underlying storages and present
+a unified interface to the end programmer. This wrapper storage class will
delegate method calls to either a master database or one or more replicated
databases based on if they are read only (by default sent to the replicants)
or write (reserved for the master). Additionally, the Replicated storage
@@ -72,8 +72,8 @@
storage itself (L<DBIx::Class::Storage::DBI::Replicated>). A replicated storage
takes a pool of replicants (L<DBIx::Class::Storage::DBI::Replicated::Pool>)
and a software balancer (L<DBIx::Class::Storage::DBI::Replicated::Pool>). The
-balancer does the job of splitting up all the read traffic amongst each
-replicant in the Pool. Currently there are two types of balancers, a Random one
+balancer does the job of splitting up all the read traffic amongst the
+replicants in the Pool. Currently there are two types of balancers, a Random one
which chooses a Replicant in the Pool using a naive randomizer algorithm, and a
First replicant, which just uses the first one in the Pool (and obviously is
only of value when you have a single replicant).
@@ -132,7 +132,7 @@
balancers have the 'auto_validate_every' option. This is the number of seconds
we allow to pass between validation checks on a load balanced replicant. So
the higher the number, the more possibility that your reads to the replicant
-may be inconsistant with what's on the master. Setting this number too low
+may be inconsistent with what's on the master. Setting this number too low
will result in increased database loads, so choose a number with care. Our
experience is that setting the number around 5 seconds results in a good
performance / integrity balance.
@@ -145,14 +145,14 @@
This object (L<DBIx::Class::Storage::DBI::Replicated::Pool>) manages all the
declared replicants. 'maximum_lag' is the number of seconds a replicant is
allowed to lag behind the master before being temporarily removed from the pool.
-Keep in mind that the Balancer option 'auto_validate_every' determins how often
+Keep in mind that the Balancer option 'auto_validate_every' determines how often
a replicant is tested against this condition, so the true possible lag can be
higher than the number you set. The default is zero.
No matter how low you set the maximum_lag or the auto_validate_every settings,
there is always the chance that your replicants will lag a bit behind the
master for the supported replication system built into MySQL. You can ensure
-reliabily reads by using a transaction, which will force both read and write
+reliable reads by using a transaction, which will force both read and write
activity to the master, however this will increase the load on your master
database.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -23,7 +23,7 @@
=head1 DESCRIPTION
In a replicated storage type, there is at least one replicant to handle the
-read only traffic. The Pool class manages this replicant, or list of
+read-only traffic. The Pool class manages this replicant, or list of
replicants, and gives some methods for querying information about their status.
=head1 ATTRIBUTES
@@ -53,7 +53,7 @@
This is an integer representing a time since the last time the replicants were
validated. It's nothing fancy, just an integer provided via the perl L<time|perlfunc/time>
-builtin.
+built-in.
=cut
@@ -87,7 +87,7 @@
=head2 replicants
A hashref of replicant, with the key being the dsn and the value returning the
-actual replicant storage. For example if the $dsn element is something like:
+actual replicant storage. For example, if the $dsn element is something like:
"dbi:SQLite:dbname=dbfile"
@@ -117,7 +117,7 @@
=item delete_replicant ($key)
-removes the replicant under $key from the pool
+Removes the replicant under $key from the pool
=back
@@ -268,7 +268,7 @@
connect. For the master database this is desirable, but since replicants are
allowed to fail, this behavior is not desirable. This method wraps the call
to ensure_connected in an eval in order to catch any generated errors. That
-way a slave can go completely offline (ie, the box itself can die) without
+way a slave can go completely offline (e.g. the box itself can die) without
bringing down your entire pool of databases.
=cut
@@ -365,7 +365,7 @@
inactive, and thus removed from the replication pool.
This tests L<all_replicants>, since a replicant that has been previous marked
-as inactive can be reactived should it start to pass the validation tests again.
+as inactive can be reactivated should it start to pass the validation tests again.
See L<DBIx::Class::Storage::DBI> for more about checking if a replicating
connection is not following a master or is lagging.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated/Replicant.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -33,14 +33,14 @@
=head2 active
This is a boolean which allows you to programmatically activate or deactivate a
-replicant from the pool. This way to you do stuff like disallow a replicant
-when it get's too far behind the master, if it stops replicating, etc.
+replicant from the pool. This way you can do stuff like disallow a replicant
+when it gets too far behind the master, if it stops replicating, etc.
This attribute DOES NOT reflect a replicant's internal status, i.e. if it is
properly replicating from a master and has not fallen too many seconds behind a
reliability threshold. For that, use L</is_replicating> and L</lag_behind_master>.
Since the implementation of those functions database specific (and not all DBIC
-supported DB's support replication) you should refer your database specific
+supported DBs support replication) you should refer your database-specific
storage driver for more information.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Replicated.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -14,7 +14,7 @@
use DBIx::Class::Storage::DBI::Replicated::Types qw/BalancerClassNamePart DBICSchema DBICStorageDBI/;
use MooseX::Types::Moose qw/ClassName HashRef Object/;
use Scalar::Util 'reftype';
-use Hash::Merge 'merge';
+use Hash::Merge;
use List::Util qw/min max/;
use namespace::clean -except => 'meta';
@@ -26,7 +26,7 @@
=head1 SYNOPSIS
The Following example shows how to change an existing $schema to a replicated
-storage type, add some replicated (readonly) databases, and perform reporting
+storage type, add some replicated (read-only) databases, and perform reporting
tasks.
You should set the 'storage_type attribute to a replicated type. You should
@@ -75,7 +75,7 @@
Warning: This class is marked BETA. This has been running a production
website using MySQL native replication as its backend and we have some decent
test coverage but the code hasn't yet been stressed by a variety of databases.
-Individual DB's may have quirks we are not aware of. Please use this in first
+Individual DBs may have quirks we are not aware of. Please use this in first
development and pass along your experiences/bug fixes.
This class implements replicated data store for DBI. Currently you can define
@@ -89,12 +89,12 @@
to all existing storages. This way our storage class is a drop in replacement
for L<DBIx::Class::Storage::DBI>.
-Read traffic is spread across the replicants (slaves) occuring to a user
+Read traffic is spread across the replicants (slaves) occurring to a user
selected algorithm. The default algorithm is random weighted.
=head1 NOTES
-The consistancy betweeen master and replicants is database specific. The Pool
+The consistency between master and replicants is database specific. The Pool
gives you a method to validate its replicants, removing and replacing them
when they fail/pass predefined criteria. Please make careful use of the ways
to force a query to run against Master when needed.
@@ -373,8 +373,8 @@
=head2 around: connect_info
-Preserve master's C<connect_info> options (for merging with replicants.)
-Also set any Replicated related options from connect_info, such as
+Preserves master's C<connect_info> options (for merging with replicants.)
+Also sets any Replicated-related options from connect_info, such as
C<pool_type>, C<pool_args>, C<balancer_type> and C<balancer_args>.
=cut
@@ -384,10 +384,12 @@
my $wantarray = wantarray;
+ my $merge = Hash::Merge->new('LEFT_PRECEDENT');
+
my %opts;
for my $arg (@$info) {
next unless (reftype($arg)||'') eq 'HASH';
- %opts = %{ merge($arg, \%opts) };
+ %opts = %{ $merge->merge($arg, \%opts) };
}
delete $opts{dsn};
@@ -396,7 +398,7 @@
if $opts{pool_type};
$self->pool_args(
- merge((delete $opts{pool_args} || {}), $self->pool_args)
+ $merge->merge((delete $opts{pool_args} || {}), $self->pool_args)
);
$self->pool($self->_build_pool)
@@ -408,7 +410,7 @@
if $opts{balancer_type};
$self->balancer_args(
- merge((delete $opts{balancer_args} || {}), $self->balancer_args)
+ $merge->merge((delete $opts{balancer_args} || {}), $self->balancer_args)
);
$self->balancer($self->_build_balancer)
@@ -553,7 +555,8 @@
$self->throw_exception('too many hashrefs in connect_info')
if @hashes > 2;
- my %opts = %{ merge(reverse @hashes) };
+ my $merge = Hash::Merge->new('LEFT_PRECEDENT');
+ my %opts = %{ $merge->merge(reverse @hashes) };
# delete them
splice @$r, $i+1, ($#{$r} - $i), ();
@@ -566,7 +569,7 @@
delete $master_opts{dbh_maker};
# merge with master
- %opts = %{ merge(\%opts, \%master_opts) };
+ %opts = %{ $merge->merge(\%opts, \%master_opts) };
# update
$r->[$i] = \%opts;
@@ -594,7 +597,7 @@
=head2 execute_reliably ($coderef, ?@args)
Given a coderef, saves the current state of the L</read_handler>, forces it to
-use reliable storage (ie sets it to the master), executes a coderef and then
+use reliable storage (e.g. sets it to the master), executes a coderef and then
restores the original state.
Example:
@@ -674,7 +677,7 @@
=head2 set_balanced_storage
Sets the current $schema to be use the </balancer> for all reads, while all
-writea are sent to the master only
+writes are sent to the master only
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Role/QueryCounter.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Role/QueryCounter.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Role/QueryCounter.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -19,7 +19,7 @@
This package defines the following attributes.
-head2 _query_count
+=head2 _query_count
Is the attribute holding the current query count. It defines a public reader
called 'query_count' which you can use to access the total number of queries
@@ -42,7 +42,7 @@
=head2 _query_start
-override on the method so that we count the queries.
+Override on the method so that we count the queries.
=cut
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/SQLAnywhere.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -25,7 +25,7 @@
/opt/sqlanywhere11/sdk/perl
-Recommended L<DBIx::Class::Storage::DBI/connect_info> settings:
+Recommended L<connect_info|DBIx::Class::Storage::DBI/connect_info> settings:
on_connect_call => 'datetime_setup'
@@ -96,8 +96,8 @@
on_connect_call => 'datetime_setup'
-In L<DBIx::Class::Storage::DBI/connect_info> to set the date and timestamp
-formats (as temporary options for the session) for use with
+In L<connect_info|DBIx::Class::Storage::DBI/connect_info> to set the date and
+timestamp formats (as temporary options for the session) for use with
L<DBIx::Class::InflateColumn::DateTime>.
The C<TIMESTAMP> data type supports up to 6 digits after the decimal point for
@@ -141,8 +141,8 @@
=head1 MAXIMUM CURSORS
-A L<DBIx::Class>> application can use a lot of cursors, due to the usage of
-L<DBI/prepare_cached>.
+A L<DBIx::Class> application can use a lot of cursors, due to the usage of
+L<prepare_cached|DBI/prepare_cached>.
The default cursor maximum is C<50>, which can be a bit too low. This limit can
be turned off (or increased) by the DBA by executing:
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE/NoBindVars.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -68,8 +68,8 @@
=head1 DESCRIPTION
-If you're using this driver than your version of Sybase, or the libraries you
-use to connect to it, do not support placeholders.
+If you're using this driver then your version of Sybase or the libraries you
+use to connect to it do not support placeholders.
You can also enable this driver explicitly using:
@@ -81,7 +81,7 @@
$sth->execute >> for details on the pros and cons of using placeholders.
One advantage of not using placeholders is that C<select @@identity> will work
-for obtainging the last insert id of an C<IDENTITY> column, instead of having to
+for obtaining the last insert id of an C<IDENTITY> column, instead of having to
do C<select max(col)> in a transaction as the base Sybase driver does.
When using this driver, bind variables will be interpolated (properly quoted of
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/Sybase/ASE.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -728,11 +728,10 @@
sub _update_blobs {
my ($self, $source, $blob_cols, $where) = @_;
- my (@primary_cols) = $source->primary_columns;
+ my @primary_cols = eval { $source->_pri_cols };
+ $self->throw_exception("Cannot update TEXT/IMAGE column(s): $@")
+ if $@;
- $self->throw_exception('Cannot update TEXT/IMAGE column(s) without a primary key')
- unless @primary_cols;
-
# check if we're updating a single row by PK
my $pk_cols_in_where = 0;
for my $col (@primary_cols) {
@@ -763,11 +762,10 @@
my $table = $source->name;
my %row = %$row;
- my (@primary_cols) = $source->primary_columns;
+ my @primary_cols = eval { $source->_pri_cols} ;
+ $self->throw_exception("Cannot update TEXT/IMAGE column(s): $@")
+ if $@;
- $self->throw_exception('Cannot update TEXT/IMAGE column(s) without a primary key')
- unless @primary_cols;
-
$self->throw_exception('Cannot update TEXT/IMAGE column(s) without primary key values')
if ((grep { defined $row{$_} } @primary_cols) != @primary_cols);
@@ -977,7 +975,7 @@
definitions in your Result classes, and are mapped to a Sybase type (if it isn't
already) using a mapping based on L<SQL::Translator>.
-In other configurations, placeholers will work just as they do with the Sybase
+In other configurations, placeholders will work just as they do with the Sybase
Open Client libraries.
Inserts or updates of TEXT/IMAGE columns will B<NOT> work with FreeTDS.
@@ -998,8 +996,8 @@
=head1 TRANSACTIONS
-Due to limitations of the TDS protocol, L<DBD::Sybase>, or both; you cannot
-begin a transaction while there are active cursors; nor can you use multiple
+Due to limitations of the TDS protocol, L<DBD::Sybase>, or both, you cannot
+begin a transaction while there are active cursors, nor can you use multiple
active cursors within a transaction. An active cursor is, for example, a
L<ResultSet|DBIx::Class::ResultSet> that has been executed using C<next> or
C<first> but has not been exhausted or L<reset|DBIx::Class::ResultSet/reset>.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/mysql.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/mysql.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI/mysql.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -5,7 +5,6 @@
use base qw/
DBIx::Class::Storage::DBI::MultiColumnIn
- DBIx::Class::Storage::DBI::AmbiguousGlob
DBIx::Class::Storage::DBI
/;
use mro 'c3';
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBI.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -191,7 +191,7 @@
In addition to the standard L<DBI|DBI/ATTRIBUTES_COMMON_TO_ALL_HANDLES>
L<connection|DBI/Database_Handle_Attributes> attributes, DBIx::Class recognizes
the following connection options. These options can be mixed in with your other
-L<DBI> connection attributes, or placed in a seperate hashref
+L<DBI> connection attributes, or placed in a separate hashref
(C<\%extra_attributes>) as shown above.
Every time C<connect_info> is invoked, any previous settings for
@@ -343,7 +343,7 @@
=item name_sep
This only needs to be used in conjunction with C<quote_char>, and is used to
-specify the charecter that seperates elements (schemas, tables, columns) from
+specify the character that separates elements (schemas, tables, columns) from
each other. In most cases this is simply a C<.>.
The consequences of not supplying this value is that L<SQL::Abstract>
@@ -779,8 +779,8 @@
=back
-Verifies that the the current database handle is active and ready to execute
-an SQL statement (i.e. the connection did not get stale, server is still
+Verifies that the current database handle is active and ready to execute
+an SQL statement (e.g. the connection did not get stale, server is still
answering, etc.) This method is used internally by L</dbh>.
=cut
@@ -1602,15 +1602,7 @@
my $rsrc = $rs->result_source;
# quick check if we got a sane rs on our hands
- my @pcols = $rsrc->primary_columns;
- unless (@pcols) {
- $self->throw_exception (
- sprintf (
- "You must declare primary key(s) on source '%s' (via set_primary_key) in order to update or delete complex resultsets",
- $rsrc->source_name || $rsrc->from
- )
- );
- }
+ my @pcols = $rsrc->_pri_cols;
my $sel = $rs->_resolved_attrs->{select};
$sel = [ $sel ] unless ref $sel eq 'ARRAY';
@@ -1663,7 +1655,7 @@
my ($rs, $op, $values) = @_;
my $rsrc = $rs->result_source;
- my @pcols = $rsrc->primary_columns;
+ my @pcols = $rsrc->_pri_cols;
my $guard = $self->txn_scope_guard;
@@ -1897,8 +1889,34 @@
#
sub _subq_count_select {
my ($self, $source, $rs_attrs) = @_;
- return $rs_attrs->{group_by} if $rs_attrs->{group_by};
+ if (my $groupby = $rs_attrs->{group_by}) {
+
+ my $avail_columns = $self->_resolve_column_info ($rs_attrs->{from});
+
+ my $sel_index;
+ for my $sel (@{$rs_attrs->{select}}) {
+ if (ref $sel eq 'HASH' and $sel->{-as}) {
+ $sel_index->{$sel->{-as}} = $sel;
+ }
+ }
+
+ my @selection;
+ for my $g_part (@$groupby) {
+ if (ref $g_part or $avail_columns->{$g_part}) {
+ push @selection, $g_part;
+ }
+ elsif ($sel_index->{$g_part}) {
+ push @selection, $sel_index->{$g_part};
+ }
+ else {
+ $self->throw_exception ("group_by criteria '$g_part' not contained within current resultset source(s)");
+ }
+ }
+
+ return \@selection;
+ }
+
my @pcols = map { join '.', $rs_attrs->{alias}, $_ } ($source->primary_columns);
return @pcols ? \@pcols : [ 1 ];
}
@@ -2443,7 +2461,7 @@
}
$self->_query_end($line);
};
- my @statements = $self->deployment_statements($schema, $type, undef, $dir, { %{ $sqltargs || {} }, no_comments => 1 } );
+ my @statements = $schema->deployment_statements($type, undef, $dir, { %{ $sqltargs || {} }, no_comments => 1 } );
if (@statements > 1) {
foreach my $statement (@statements) {
$deploy->( $statement );
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBIHacks.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBIHacks.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/DBIHacks.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -97,7 +97,7 @@
}
# construct the inner $from for the subquery
- # we need to prune first, because this will determine if we need a group_bu below
+ # we need to prune first, because this will determine if we need a group_by below
my $inner_from = $self->_prune_unused_joins ($from, $inner_select, $where, $inner_attrs);
# if a multi-type join was needed in the subquery - add a group_by to simulate the
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/TxnScopeGuard.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/TxnScopeGuard.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage/TxnScopeGuard.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -89,7 +89,7 @@
=head2 commit
Commit the transaction, and stop guarding the scope. If this method is not
-called and this object goes out of scope (i.e. an exception is thrown) then
+called and this object goes out of scope (e.g. an exception is thrown) then
the transaction is rolled back, via L<DBIx::Class::Storage/txn_rollback>
=cut
@@ -102,7 +102,7 @@
Ash Berlin, 2008.
-Insipred by L<Scope::Guard> by chocolateboy.
+Inspired by L<Scope::Guard> by chocolateboy.
This module is free software. It may be used, redistributed and/or modified
under the same terms as Perl itself.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class/Storage.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -353,7 +353,7 @@
=head2 debugfh
Set or retrieve the filehandle used for trace/debug output. This should be
-an IO::Handle compatible ojbect (only the C<print> method is used. Initially
+an IO::Handle compatible object (only the C<print> method is used. Initially
set to be STDERR - although see information on the
L<DBIC_TRACE> environment variable.
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/DBIx/Class.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -27,7 +27,7 @@
# Always remember to do all digits for the version even if they're 0
# i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
# brain damage and presumably various other packaging systems too
-$VERSION = '0.08118_01';
+$VERSION = '0.08119_1';
$VERSION = eval $VERSION; # numify for warning-free dev releases
@@ -56,14 +56,21 @@
The community can be found via:
- Mailing list: http://lists.scsys.co.uk/mailman/listinfo/dbix-class/
+=over
- SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
+=item * IRC: L<irc.perl.org#dbix-class (click for instant chatroom login)
+|http://mibbit.com/chat/#dbix-class@irc.perl.org>
- SVNWeb: http://dev.catalyst.perl.org/svnweb/bast/browse/DBIx-Class/
+=item * Mailing list: L<http://lists.scsys.co.uk/mailman/listinfo/dbix-class>
- IRC: irc.perl.org#dbix-class
+=item * RT Bug Tracker: L<https://rt.cpan.org/Dist/Display.html?Queue=DBIx-Class>
+=item * SVNWeb: L<http://dev.catalyst.perl.org/svnweb/bast/browse/DBIx-Class/0.08>
+
+=item * SVN: L<http://dev.catalyst.perl.org/repos/bast/DBIx-Class/0.08>
+
+=back
+
=head1 SYNOPSIS
Create a schema class called MyDB/Schema.pm:
@@ -303,6 +310,8 @@
norbi: Norbert Buchmuller <norbi at nix.hu>
+nuba: Nuba Princigalli <nuba at cpan.org>
+
Numa: Dan Sully <daniel at cpan.org>
ovid: Curtis "Ovid" Poe <ovid at cpan.org>
@@ -371,7 +380,7 @@
=head1 COPYRIGHT
-Copyright (c) 2005 - 2009 the DBIx::Class L</AUTHOR> and L</CONTRIBUTORS>
+Copyright (c) 2005 - 2010 the DBIx::Class L</AUTHOR> and L</CONTRIBUTORS>
as listed above.
=head1 LICENSE
Modified: DBIx-Class/0.08/branches/oracle_quotes/lib/SQL/Translator/Parser/DBIx/Class.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/lib/SQL/Translator/Parser/DBIx/Class.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/lib/SQL/Translator/Parser/DBIx/Class.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -33,7 +33,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]);
+ Scalar::Util::weaken ($_[1]) if ref ($_[1]);
my ($tr, $data) = @_;
my $args = $tr->parser_args;
Modified: DBIx-Class/0.08/branches/oracle_quotes/script/dbicadmin
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/script/dbicadmin 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/script/dbicadmin 2010-02-21 14:31:08 UTC (rev 8792)
@@ -5,31 +5,48 @@
BEGIN {
use DBIx::Class;
- die ( "The following modules are required for the dbicadmin utility\n"
+ die ( 'The following modules are required for the dbicadmin utility: '
. DBIx::Class::Optional::Dependencies->req_missing_for ('admin_script')
+ . "\n"
) unless DBIx::Class::Optional::Dependencies->req_ok_for ('admin_script');
}
-use Getopt::Long::Descriptive;
+use DBIx::Class::Admin::Descriptive;
+#use Getopt::Long::Descriptive;
use DBIx::Class::Admin;
+my $short_description = "utility for administrating DBIx::Class schemata";
+my $synopsis_text =qq{
+ deploy a schema to a database
+ %c --schema=MyApp::Schema \
+ --connect='["dbi:SQLite:my.db", "", ""]' \
+ --deploy
+
+ update an existing record
+ %c --schema=MyApp::Schema --class=Employee \
+ --connect='["dbi:SQLite:my.db", "", ""]' \
+ --op=update --set='{ "name": "New_Employee" }'
+}
+;
+
my ($opts, $usage) = describe_options(
- "%c: %o",
+ "%c: %o",
(
['Actions'],
["action" => hidden => { one_of => [
['create|c' => 'Create version diffs needs preversion',],
- ['upgrade|u' => 'Upgrade the database to the current schema '],
- ['install|i' => 'Install the schema to the database',],
+ ['upgrade|U' => 'Upgrade the database to the current schema '],
+ ['install|I' => 'Install the schema version tables to an existing database',],
['deploy|d' => 'Deploy the schema to the database',],
['select|s' => 'Select data from the schema', ],
['insert|i' => 'Insert data into the schema', ],
['update|u' => 'Update data in the schema', ],
['delete|D' => 'Delete data from the schema',],
['op:s' => 'compatiblity option all of the above can be suppied as --op=<action>'],
- ['help|h' => 'display this help'],
+ ['help|h' => 'display this help', { implies => { schema_class => 'main' } } ],
+ ['pod' => 'Output this usage as pod', { implies => { schema_class => 'main' } } ],
], required=> 1 }],
- ['Options'],
+ ['Arguments'],
['schema-class|schema|C:s' => 'The class of the schema to load', { required => 1 } ],
['resultset|resultset_class|class|r:s' => 'The resultset to operate on for data manipulation' ],
['config-stanza|S:s' => 'Where in the config to find the connection_info, supply in form MyApp::Model::DB',],
@@ -41,7 +58,6 @@
['version|v:i' => 'Supply a version install'],
['preversion|p:s' => 'The previous version to diff against',],
['set:s' => 'JSON data used to perform data operations' ],
- ['lib|I:s' => 'Additonal library path to search in'],
['attrs:s' => 'JSON string to be used for the second argument for search'],
['where:s' => 'JSON string to be used for the where clause of search'],
['force' => 'Be forceful with some operations'],
@@ -52,6 +68,17 @@
die "please only use one of --config or --connect-info\n" if ($opts->{config} and $opts->{connect_info});
+if($opts->{pod}) {
+ $usage->synopsis($synopsis_text);
+ $usage->short_description($short_description);
+ print $usage->pod();
+ exit 0;
+}
+
+if($opts->{help}) {
+ $usage->die();
+}
+
# option compatability mangle
if($opts->{connect}) {
$opts->{connect_info} = delete $opts->{connect};
@@ -84,12 +111,29 @@
}
}
-=head1 AUTHOR
-See L<DBIx::Class/CONTRIBUTORS>.
+#__END__
+#
+#=begin pod_begin
+#
+#BEGIN MARKER FOR DYNAMIC POD
+#
+#=end pod_begin
+#
+#=begin pod_end
+#
+#END MARKER FOR DYNAMIC POD
+#
+#=end pod_end
+#
+#=head1 AUTHOR
+#
+#See L<DBIx::Class/CONTRIBUTORS>.
+#
+#=head1 LICENSE
+#
+#You may distribute this code under the same terms as Perl itself
+#
+#=cut
-=head1 LICENSE
-
-You may distribute this code under the same terms as Perl itself
-
-=cut
+# vim: et ft=perl
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/02pod.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/02pod.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/02pod.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -5,23 +5,17 @@
use lib qw(t/lib);
use DBICTest;
-my @MODULES = (
- 'Test::Pod 1.26',
-);
-
# Don't run tests for installs
unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
plan( skip_all => "Author tests not required for installation" );
}
-# Load the testing modules
-foreach my $MODULE ( @MODULES ) {
- eval "use $MODULE";
- if ( $@ ) {
- $ENV{RELEASE_TESTING}
- ? die( "Failed to load required release-testing module $MODULE" )
- : plan( skip_all => "$MODULE not available for testing" );
- }
+require DBIx::Class;
+unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_pod') ) {
+ my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_pod');
+ $ENV{RELEASE_TESTING} || DBICTest::AuthorCheck->is_author
+ ? die ("Failed to load release-testing module requirements: $missing")
+ : plan skip_all => "Test needs: $missing"
}
-all_pod_files_ok();
+Test::Pod::all_pod_files_ok();
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/03podcoverage.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/03podcoverage.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/03podcoverage.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -6,24 +6,17 @@
use lib qw(t/lib);
use DBICTest;
-my @MODULES = (
- 'Test::Pod::Coverage 1.08',
- 'Pod::Coverage 0.20',
-);
-
# Don't run tests for installs
unless ( DBICTest::AuthorCheck->is_author || $ENV{AUTOMATED_TESTING} || $ENV{RELEASE_TESTING} ) {
plan( skip_all => "Author tests not required for installation" );
}
-# Load the testing modules
-foreach my $MODULE ( @MODULES ) {
- eval "use $MODULE";
- if ( $@ ) {
- $ENV{RELEASE_TESTING}
- ? die( "Failed to load required release-testing module $MODULE" )
- : plan( skip_all => "$MODULE not available for testing" );
- }
+require DBIx::Class;
+unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_podcoverage') ) {
+ my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('test_podcoverage');
+ $ENV{RELEASE_TESTING} || DBICTest::AuthorCheck->is_author
+ ? die ("Failed to load release-testing module requirements: $missing")
+ : plan skip_all => "Test needs: $missing"
}
# Since this is about checking documentation, a little documentation
@@ -93,7 +86,7 @@
/]
},
- 'DBIx::Class::Admin::Types' => { skip => 1 },
+ 'DBIx::Class::Admin::*' => { skip => 1 },
'DBIx::Class::ClassResolver::PassThrough' => { skip => 1 },
'DBIx::Class::Componentised' => { skip => 1 },
'DBIx::Class::Relationship::*' => { skip => 1 },
@@ -148,7 +141,7 @@
if exists($ex->{ignore});
# run the test with the potentially modified parm set
- pod_coverage_ok($module, $parms, "$module POD coverage");
+ Test::Pod::Coverage::pod_coverage_ok($module, $parms, "$module POD coverage");
}
}
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/52cycle.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/52cycle.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/52cycle.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -5,10 +5,9 @@
use lib qw(t/lib);
BEGIN {
- eval { require Test::Memory::Cycle; require Devel::Cycle };
- if ($@ or Devel::Cycle->VERSION < 1.10) {
- plan skip_all => "leak test needs Test::Memory::Cycle and Devel::Cycle >= 1.10";
- };
+ require DBIx::Class;
+ plan skip_all => 'Test needs: ' . DBIx::Class::Optional::Dependencies->req_missing_for ('test_cycle')
+ unless ( DBIx::Class::Optional::Dependencies->req_ok_for ('test_cycle') );
}
use DBICTest;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/69update.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/69update.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/69update.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -7,11 +7,6 @@
my $schema = DBICTest->init_schema();
-BEGIN {
- eval "use DBD::SQLite";
- plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 6);
-}
-
my $art = $schema->resultset("Artist")->find(1);
isa_ok $art => 'DBICTest::Artist';
@@ -20,10 +15,10 @@
ok($art->name($name) eq $name, 'update');
-{
+{
my @changed_keys = $art->is_changed;
is( scalar (@changed_keys), 0, 'field changed but same value' );
-}
+}
$art->discard_changes;
@@ -34,3 +29,5 @@
my $art_100 = $schema->resultset("Artist")->find(100);
$art_100->artistid(101);
ok($art_100->update(), 'update allows pk mutation via column accessor');
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/75limit.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/75limit.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/75limit.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -7,11 +7,6 @@
my $schema = DBICTest->init_schema();
-BEGIN {
- eval "use DBD::SQLite";
- plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 10);
-}
-
# test LIMIT
my $it = $schema->resultset("CD")->search( {},
{ rows => 3,
@@ -77,3 +72,4 @@
);
is( $it->count, 1, "complex abstract count ok" );
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/76joins.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/76joins.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/76joins.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -10,13 +10,6 @@
my $orig_debug = $schema->storage->debug;
-BEGIN {
- eval "use DBD::SQLite";
- plan $@
- ? ( skip_all => 'needs DBD::SQLite for testing' )
- : ( tests => 33 );
-}
-
# test the abstract join => SQL generator
my $sa = new DBIx::Class::SQLAHacks;
@@ -240,3 +233,5 @@
is(cd_count(), 5, '5 rows in table cd');
is(tk_count(), 3, '3 rows in table twokeys');
}
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/86sqlt.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/86sqlt.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/86sqlt.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -12,6 +12,14 @@
unless DBIx::Class::Optional::Dependencies->req_ok_for ('deploy')
}
+my $custom_deployment_statements_called = 0;
+
+sub DBICTest::Schema::deployment_statements {
+ $custom_deployment_statements_called = 1;
+ my $self = shift;
+ return $self->next::method(@_);
+}
+
my $schema = DBICTest->init_schema (no_deploy => 1);
@@ -44,28 +52,35 @@
-# replace the sqlt calback with a custom version ading an index
-$schema->source('Track')->sqlt_deploy_callback(sub {
- my ($self, $sqlt_table) = @_;
+{
+ my $deploy_hook_called = 0;
- is (
- $sqlt_table->schema->translator->producer_type,
- join ('::', 'SQL::Translator::Producer', $schema->storage->sqlt_type),
- 'Production type passed to translator object',
- );
+ # replace the sqlt calback with a custom version ading an index
+ $schema->source('Track')->sqlt_deploy_callback(sub {
+ my ($self, $sqlt_table) = @_;
- if ($schema->storage->sqlt_type eq 'SQLite' ) {
- $sqlt_table->add_index( name => 'track_title', fields => ['title'] )
- or die $sqlt_table->error;
- }
+ $deploy_hook_called = 1;
- $self->default_sqlt_deploy_hook($sqlt_table);
-});
+ is (
+ $sqlt_table->schema->translator->producer_type,
+ join ('::', 'SQL::Translator::Producer', $schema->storage->sqlt_type),
+ 'Production type passed to translator object',
+ );
-$schema->deploy; # do not remove, this fires the is() test in the callback above
+ if ($schema->storage->sqlt_type eq 'SQLite' ) {
+ $sqlt_table->add_index( name => 'track_title', fields => ['title'] )
+ or die $sqlt_table->error;
+ }
+ $self->default_sqlt_deploy_hook($sqlt_table);
+ });
+ $schema->deploy; # do not remove, this fires the is() test in the callback above
+ ok($deploy_hook_called, 'deploy hook got called');
+ ok($custom_deployment_statements_called, '->deploy used the schemas deploy_statements method');
+}
+
my $translator = SQL::Translator->new(
parser_args => {
'DBIx::Schema' => $schema,
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/99dbic_sqlt_parser.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/99dbic_sqlt_parser.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/99dbic_sqlt_parser.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -18,13 +18,18 @@
# Test for SQLT-related leaks
{
my $s = DBICTest::Schema->clone;
- create_schema ({ schema => $s });
+ my $sqlt_schema = create_schema ({ schema => $s });
Scalar::Util::weaken ($s);
ok (!$s, 'Schema not leaked');
+
+ isa_ok ($sqlt_schema, 'SQL::Translator::Schema', 'SQLT schema object produced');
}
+# make sure classname-style works
+lives_ok { isa_ok (create_schema ({ schema => 'DBICTest::Schema' }), 'SQL::Translator::Schema', 'SQLT schema object produced') };
+
my $schema = DBICTest->init_schema();
# Dummy was yanked out by the sqlt hook test
# CustomSql tests the horrific/deprecated ->name(\$sql) hack
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/admin/02ddl.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/admin/02ddl.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/admin/02ddl.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -19,7 +19,7 @@
use Path::Class;
-use ok 'DBIx::Class::Admin';
+use_ok 'DBIx::Class::Admin';
my $sql_dir = dir(qw/t var/);
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/admin/03data.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/admin/03data.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/admin/03data.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -4,7 +4,6 @@
use Test::More;
use Test::Exception;
-use Test::Deep;
BEGIN {
require DBIx::Class;
@@ -15,7 +14,7 @@
use lib 't/lib';
use DBICTest;
-use ok 'DBIx::Class::Admin';
+use_ok 'DBIx::Class::Admin';
{ # test data maniplulation functions
@@ -54,7 +53,7 @@
];
my $data;
lives_ok { $data = $admin->select('Employee')} 'can retrive data from database';
- cmp_deeply($data, $expected_data, 'DB matches whats expected');
+ is_deeply($data, $expected_data, 'DB matches whats expected');
$admin->delete('Employee', {name=>'Trout'});
my $del_rs = $employees->search({name => 'Trout'});
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/bind/attribute.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/bind/attribute.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/bind/attribute.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -9,13 +9,6 @@
my $schema = DBICTest->init_schema;
-BEGIN {
- eval "use DBD::SQLite";
- plan $@
- ? ( skip_all => 'needs DBD::SQLite for testing' )
- : ( tests => 13 );
-}
-
my $where_bind = {
where => \'name like ?',
bind => [ 'Cat%' ],
@@ -122,3 +115,5 @@
bind => [ 'Spoon%' ] });
is ( $rs->count, 1, '...cookbook + chained search with extra bind' );
}
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/count/distinct.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/count/distinct.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/count/distinct.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -74,7 +74,7 @@
$rs = $schema->resultset('Tag')->search({ tag => 'Blue' }, { '+select' => { max => 'tagid' }, distinct => 1 });
is($get_count->($rs), 4, 'Count with +select aggreggate');
- $rs = $schema->resultset('Tag')->search({}, { select => 'length(me.tag)', distinct => 1 });
+ $rs = $schema->resultset('Tag')->search({}, { select => [\'length(me.tag)'], distinct => 1 });
is($get_count->($rs), 3, 'Count by distinct function result as select literal');
}
Added: DBIx-Class/0.08/branches/oracle_quotes/t/count/group_by_func.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/count/group_by_func.t (rev 0)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/count/group_by_func.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -0,0 +1,36 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+use lib qw(t/lib);
+
+use DBICTest;
+
+my $schema = DBICTest->init_schema();
+
+my $rs = $schema->resultset ('CD')->search ({}, {
+ select => [
+ { substr => [ 'title', 1, 1 ], -as => 'initial' },
+ { count => '*' },
+ ],
+ as => [qw/title_initial cnt/],
+ group_by => ['initial'],
+ order_by => { -desc => 'initial' },
+ result_class => 'DBIx::Class::ResultClass::HashRefInflator',
+});
+
+is_deeply (
+ [$rs->all],
+ [
+ { title_initial => 'S', cnt => '1' },
+ { title_initial => 'G', cnt => '1' },
+ { title_initial => 'F', cnt => '1' },
+ { title_initial => 'C', cnt => '2' },
+ ],
+ 'Correct result',
+);
+
+is ($rs->count, 4, 'Correct count');
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/inflate/hri.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/inflate/hri.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/inflate/hri.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -26,6 +26,9 @@
my $cd1 = $rs->find ({cdid => 1});
is_deeply ( $cd1, $datahashref1, 'first/find return the same thing');
+
+ my $cd2 = $rs->search({ cdid => 1 })->single;
+ is_deeply ( $cd2, $datahashref1, 'first/search+single return the same thing');
}
sub check_cols_of {
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/lib/DBICTest/AuthorCheck.pm
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/lib/DBICTest/AuthorCheck.pm 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/lib/DBICTest/AuthorCheck.pm 2010-02-21 14:31:08 UTC (rev 8792)
@@ -27,26 +27,37 @@
my $root = _find_co_root()
or return;
+ my $optdeps = file('lib/DBIx/Class/Optional/Dependencies.pm');
+
# not using file->stat as it invokes File::stat which in turn breaks stat(_)
- my ($mf_pl_mtime, $mf_mtime) = ( map
+ my ($mf_pl_mtime, $mf_mtime, $optdeps_mtime) = ( map
{ (stat ($root->file ($_)) )[9] }
- qw/Makefile.PL Makefile/
+ (qw|Makefile.PL Makefile|, $optdeps)
);
return unless $mf_pl_mtime; # something went wrong during co_root detection ?
- if (
- not -d $root->subdir ('inc')
- or
- not $mf_mtime
- or
- $mf_mtime < $mf_pl_mtime
- ) {
- print STDERR <<'EOE';
+ my @fail_reasons;
+ if(not -d $root->subdir ('inc')) {
+ push @fail_reasons, "Missing ./inc directory";
+ }
+ if (not $mf_mtime) {
+ push @fail_reasons, "Missing ./Makefile";
+ }
+ elsif($mf_mtime < $mf_pl_mtime) {
+ push @fail_reasons, "./Makefile.PL is newer than ./Makefile";
+ }
+ if ($mf_mtime < $optdeps_mtime) {
+ push @fail_reasons, "./$optdeps is newer than ./Makefile";
+ }
+ if (@fail_reasons) {
+ print STDERR <<'EOE';
+
+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
======================== FATAL ERROR ===========================
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -68,9 +79,15 @@
The DBIC team
+Reasons you received this message:
EOE
+ foreach my $r (@fail_reasons) {
+ print STDERR " * $r\n";
+ }
+ print STDERR "\n\n\n";
+
exit 1;
}
}
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -6,14 +6,7 @@
use lib qw(t/lib);
use DBIC::SqlMakerTest;
-BEGIN {
- eval "use DBD::SQLite";
- plan $@
- ? ( skip_all => 'needs DBD::SQLite for testing' )
- : ( tests => 7 );
-}
-
use_ok('DBICTest');
use_ok('DBIC::DebugObj');
my $schema = DBICTest->init_schema();
@@ -72,3 +65,5 @@
$schema->storage->sql_maker->name_sep('.');
is($schema->storage->sql_maker->update('group', \%data), 'UPDATE `group` SET `name` = ?, `order` = ?', 'quoted table names for UPDATE');
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes_newstyle.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes_newstyle.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/sqlahacks/quotes/quotes_newstyle.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -6,13 +6,6 @@
use lib qw(t/lib);
use DBIC::SqlMakerTest;
-BEGIN {
- eval "use DBD::SQLite";
- plan $@
- ? ( skip_all => 'needs DBD::SQLite for testing' )
- : ( tests => 7 );
-}
-
use_ok('DBICTest');
use_ok('DBIC::DebugObj');
@@ -89,3 +82,5 @@
);
is($schema->storage->sql_maker->update('group', \%data), 'UPDATE `group` SET `name` = ?, `order` = ?', 'quoted table names for UPDATE');
+
+done_testing;
Modified: DBIx-Class/0.08/branches/oracle_quotes/t/storage/error.t
===================================================================
--- DBIx-Class/0.08/branches/oracle_quotes/t/storage/error.t 2010-02-21 14:14:58 UTC (rev 8791)
+++ DBIx-Class/0.08/branches/oracle_quotes/t/storage/error.t 2010-02-21 14:31:08 UTC (rev 8792)
@@ -1,29 +1,20 @@
-use Class::C3;
use strict;
-use Test::More;
use warnings;
-BEGIN {
- eval "use DBD::SQLite";
- plan $@
- ? ( skip_all => 'needs DBD::SQLite for testing' )
- : ( tests => 4 );
-}
+use Test::More;
+use Test::Warn;
+use Test::Exception;
use lib qw(t/lib);
-
use_ok( 'DBICTest' );
use_ok( 'DBICTest::Schema' );
+
my $schema = DBICTest->init_schema;
-{
- my $warnings;
- local $SIG{__WARN__} = sub { $warnings .= $_[0] };
- eval {
- $schema->resultset('CD')
- ->create({ title => 'vacation in antarctica' })
- };
- like $@, qr/NULL/; # as opposed to some other error
- unlike( $warnings, qr/uninitialized value/, "No warning from Storage" );
-}
+warnings_are ( sub {
+ throws_ok (sub {
+ $schema->resultset('CD')->create({ title => 'vacation in antarctica' });
+ }, qr/NULL/); # as opposed to some other error
+}, [], 'No warnings besides exception' );
+done_testing;
More information about the Bast-commits
mailing list