of interest to Class::DBI::SQLite /Class::DBI::Loader users

[prev] [thread] [next] [Date index for 2004/05/16]

From: crazyinsomniac
Subject: of interest to Class::DBI::SQLite /Class::DBI::Loader users
Date: 12:15 on 16 May 2004
http://rt.cpan.org/NoAuth/Bug.html?ShowHeaders=6315&id=6315
SQL::Parser no longer needed (patch included)  

SQL::Parser/SQL::Dialects::AnyData do not play well with SQLite sql
( see http://rt.cpan.org/NoAuth/Bug.html?ShowHeaders=6308&id=6308 )
but IT DOESN'T MATTER because since

   'DBD::SQLite' => 0.29,

PRAGMA table_info(?) returns a "pk" field, which tells you if it's a primary key
(either a 0 or a 1).

PS - Just call me PodMaster

 (untitled) 330b  
      --- SQLite.pm	Mon Mar 15 03:57:19 2004
+++ SQLite.pm.new	Sun May 16 04:47:17 2004
@@ -2,11 +2,10 @@
 
 use strict;
 use vars qw($VERSION);
-$VERSION = 0.04;
+$VERSION = 0.041;
 
 require Class::DBI;
 use base qw(Class::DBI);
-use
SQL::Statement;
 
 sub _auto_increment_value {
     my $self = shift;
@@ -22,34
+21,13 @@
 SQL
     $sth->execute($table);
     my @columns;
+    my $primary;
while (my $row = $sth->fetchrow_hashref) {
-	push @columns,$row->{name};
+    	push
@columns,$row->{name};
+        $primary = $row->{name} if $row->{pk};
     }
$sth->finish;
 
-    # find primary key. so complex ;-(
-    $sth = $class-
>db_Main->prepare(<<'SQL');
-SELECT sql FROM sqlite_master WHERE tbl_name = ?
-SQL
-    $sth->execute($table);
-    my($sql) = $sth->fetchrow_array;
-    $sth-
>finish;
-
-    my $parser = SQL::Parser->new('AnyData', { RaiseError => 1});
-
$parser->feature("valid_data_types","TIMESTAMP",1);
-    $parser->parse($sql);
-
my $structure = $parser->structure;
-    my $primary;
-    foreach my $key (keys
%{$structure->{column_defs}}) {
-	my $def = $structure->{column_defs}->{$key};
-
next unless $def->{constraints};
-	foreach my $constraint(@{$def->{constraints}}) {
-	    if (uc($constraint) eq 'PRIMARY KEY') {
-		$primary = $key;
-		last;
-	    }
-	}
-    }
     $class->table($table);
     $class->columns(All => @columns);
$class->columns(Primary => $primary);
 

of interest to Class::DBI::SQLite /Class::DBI::Loader users
crazyinsomniac 12:15 on 16 May 2004

Generated at 11:34 on 01 Dec 2004 by mariachi v0.52