[Bast-commits] r7552 - in
DBIx-Class/0.08/branches/pg_unqualified_schema: .
lib/DBIx/Class/Storage/DBI
ribasushi at dev.catalyst.perl.org
ribasushi at dev.catalyst.perl.org
Fri Sep 4 09:56:00 GMT 2009
Author: ribasushi
Date: 2009-09-04 09:56:00 +0000 (Fri, 04 Sep 2009)
New Revision: 7552
Modified:
DBIx-Class/0.08/branches/pg_unqualified_schema/Makefile.PL
DBIx-Class/0.08/branches/pg_unqualified_schema/lib/DBIx/Class/Storage/DBI/Pg.pm
Log:
Rewrite selector using sqla
Modified: DBIx-Class/0.08/branches/pg_unqualified_schema/Makefile.PL
===================================================================
--- DBIx-Class/0.08/branches/pg_unqualified_schema/Makefile.PL 2009-09-04 09:26:12 UTC (rev 7551)
+++ DBIx-Class/0.08/branches/pg_unqualified_schema/Makefile.PL 2009-09-04 09:56:00 UTC (rev 7552)
@@ -40,7 +40,7 @@
requires 'Module::Find' => '0.06';
requires 'Path::Class' => '0.16';
requires 'Scope::Guard' => '0.03';
-requires 'SQL::Abstract' => '1.56';
+requires 'SQL::Abstract' => '1.57';
requires 'SQL::Abstract::Limit' => '0.13';
requires 'Sub::Name' => '0.04';
Modified: DBIx-Class/0.08/branches/pg_unqualified_schema/lib/DBIx/Class/Storage/DBI/Pg.pm
===================================================================
--- DBIx-Class/0.08/branches/pg_unqualified_schema/lib/DBIx/Class/Storage/DBI/Pg.pm 2009-09-04 09:26:12 UTC (rev 7551)
+++ DBIx-Class/0.08/branches/pg_unqualified_schema/lib/DBIx/Class/Storage/DBI/Pg.pm 2009-09-04 09:56:00 UTC (rev 7552)
@@ -60,18 +60,21 @@
sub _dbh_get_autoinc_seq {
my ($self, $dbh, $schema, $table, $col) = @_;
+ my $sqlmaker = $self->sql_maker;
+ local $sqlmaker->{bindtype} = 'normal';
- my @where = ( 'c.relname = ?', 'a.attname = ?' );
- my @bind = ($table, $col);
- if( defined $schema && length $schema ) {
- push @where, 'n.nspname = ?';
- push @bind, $schema;
- } else {
- push @where, 'pg_catalog.pg_table_is_visible(c.oid)';
- }
- my $where = join ' AND ', @where;
+ my ($where, @bind) = $self->sql_maker->where ({
+ 'a.attnum' => {'>', 0},
+ 'c.relname' => $table,
+ 'a.attname' => $col,
+ -not_bool => 'a.attisdropped',
+ (defined $schema && length $schema)
+ ? ( 'n.nspname' => $schema )
+ : ( -bool => \'pg_catalog.pg_table_is_visible(c.oid)' )
+ });
my ($seq_expr) = $dbh->selectrow_array(<<EOS,undef, at bind);
+
SELECT
(SELECT pg_catalog.pg_get_expr(d.adbin, d.adrelid)
FROM pg_catalog.pg_attrdef d
@@ -79,13 +82,14 @@
FROM pg_catalog.pg_class c
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
JOIN pg_catalog.pg_attribute a ON a.attrelid = c.oid
-WHERE
- $where
- AND a.attnum > 0 AND NOT a.attisdropped
+$where
+
EOS
- $seq_expr =~ /^nextval\(+'([^']+)'::(?:text|regclass)\)/i
- or $self->throw_exception("could not parse sequence expression '$seq_expr'");
+ unless (defined $seq_expr && $seq_expr =~ /^nextval\(+'([^']+)'::(?:text|regclass)\)/i ){
+ $seq_expr = '' unless defined $seq_expr;
+ $self->throw_exception("could not parse sequence expression: '$seq_expr'");
+ }
return $1;
}
More information about the Bast-commits
mailing list