Merge 'trunk' into 'DBIx-Class-current'
Matt S Trout [Mon, 20 Mar 2006 03:34:28 +0000 (03:34 +0000)]
Changes
lib/DBIx/Class/Schema.pm
lib/DBIx/Class/Storage/DBI.pm
t/lib/sqlite.sql
t/run/04db.tl

diff --git a/Changes b/Changes
index 9ccebd1..398f881 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,9 @@
 Revision history for DBIx::Class
 
+0.05999_05
+        - Fixup to columns_info_for when database returns type(size)
+        - Made do_txn respect void context (on the off-chance somebody cares)
+
 0.05999_04
         - Fix for delete on full-table resultsets
         - Removed caching on count() and added _count for pager()
index 21ae980..7df9d5f 100644 (file)
@@ -451,10 +451,16 @@ sub txn_do {
   eval {
     # Need to differentiate between scalar/list context to allow for returning
     # a list in scalar context to get the size of the list
+
     if ($wantarray) {
+      # list context
       @return_values = $coderef->(@args);
-    } else {
+    } elsif (defined $wantarray) {
+      # scalar context
       $return_value = $coderef->(@args);
+    } else {
+      # void context
+      $coderef->(@args);
     }
     $self->txn_commit;
   };
index 3a7d978..ded90f5 100644 (file)
@@ -535,10 +535,11 @@ sub columns_info_for {
             $sth->execute();
             while ( my $info = $sth->fetchrow_hashref() ){
                 my %column_info;
-                $column_info{data_type} = $info->{TYPE_NAME};
-                $column_info{size} = $info->{COLUMN_SIZE};
-                $column_info{is_nullable} = $info->{NULLABLE} ? 1 : 0;
+                $column_info{data_type}     = $info->{TYPE_NAME};
+                $column_info{size}          = $info->{COLUMN_SIZE};
+                $column_info{is_nullable}   = $info->{NULLABLE} ? 1 : 0;
                 $column_info{default_value} = $info->{COLUMN_DEF};
+
                 $result{$info->{COLUMN_NAME}} = \%column_info;
             }
         };
@@ -562,6 +563,12 @@ sub columns_info_for {
         $column_info{data_type} = $type_name ? $type_name : $type_num;
         $column_info{size} = $sth->{PRECISION}->[$i];
         $column_info{is_nullable} = $sth->{NULLABLE}->[$i] ? 1 : 0;
+
+        if ($column_info{data_type} =~ m/^(.*?)\((.*?)\)$/) {
+            $column_info{data_type} = $1;
+            $column_info{size}      = $2;
+        }
+
         $result{$columns[$i]} = \%column_info;
     }
 
index 7dde18e..e7646c4 100644 (file)
@@ -1,10 +1,18 @@
 -- 
 -- Created by SQL::Translator::Producer::SQLite
--- Created on Fri Feb 24 15:13:57 2006
+-- Created on Sun Mar 19 19:16:50 2006
 -- 
 BEGIN TRANSACTION;
 
 --
+-- Table: serialized
+--
+CREATE TABLE serialized (
+  id INTEGER PRIMARY KEY NOT NULL,
+  serialized text NOT NULL
+);
+
+--
 -- Table: twokeys
 --
 CREATE TABLE twokeys (
@@ -14,6 +22,14 @@ CREATE TABLE twokeys (
 );
 
 --
+-- Table: liner_notes
+--
+CREATE TABLE liner_notes (
+  liner_id INTEGER PRIMARY KEY NOT NULL,
+  notes varchar(100) NOT NULL
+);
+
+--
 -- Table: cd_to_producer
 --
 CREATE TABLE cd_to_producer (
@@ -23,14 +39,6 @@ CREATE TABLE cd_to_producer (
 );
 
 --
--- Table: liner_notes
---
-CREATE TABLE liner_notes (
-  liner_id INTEGER PRIMARY KEY NOT NULL,
-  notes varchar NOT NULL
-);
-
---
 -- Table: artist
 --
 CREATE TABLE artist (
@@ -65,8 +73,8 @@ CREATE TABLE fourkeys (
 CREATE TABLE cd (
   cdid INTEGER PRIMARY KEY NOT NULL,
   artist integer NOT NULL,
-  title varchar NOT NULL,
-  year varchar NOT NULL
+  title varchar(100) NOT NULL,
+  year varchar(100) NOT NULL
 );
 
 --
@@ -94,7 +102,7 @@ CREATE TABLE track (
   trackid INTEGER PRIMARY KEY NOT NULL,
   cd integer NOT NULL,
   position integer NOT NULL,
-  title varchar NOT NULL
+  title varchar(100) NOT NULL
 );
 
 --
@@ -102,16 +110,7 @@ CREATE TABLE track (
 --
 CREATE TABLE producer (
   producerid INTEGER PRIMARY KEY NOT NULL,
-  name varchar NOT NULL
-);
-
---
--- Table: treelike
---
-CREATE TABLE treelike (
-  id INTEGER PRIMARY KEY NOT NULL,
-  parent integer NOT NULL,
-  name varchar NOT NULL
+  name varchar(100) NOT NULL
 );
 
 --
@@ -120,7 +119,7 @@ CREATE TABLE treelike (
 CREATE TABLE tags (
   tagid INTEGER PRIMARY KEY NOT NULL,
   cd integer NOT NULL,
-  tag varchar NOT NULL
+  tag varchar(100) NOT NULL
 );
 
 --
@@ -128,15 +127,16 @@ CREATE TABLE tags (
 --
 CREATE TABLE self_ref (
   id INTEGER PRIMARY KEY NOT NULL,
-  name varchar NOT NULL
+  name varchar(100) NOT NULL
 );
 
 --
--- Table: serialized
+-- Table: treelike
 --
-CREATE TABLE serialized (
-    id INTEGER PRIMARY KEY NOT NULL,
-    serialized text NOT NULL
+CREATE TABLE treelike (
+  id INTEGER PRIMARY KEY NOT NULL,
+  parent integer NOT NULL,
+  name varchar(100) NOT NULL
 );
 
 COMMIT;
index 2c91ed8..6292fef 100644 (file)
@@ -38,7 +38,7 @@ my $test_type_info = {
     'name' => {
         'data_type' => 'varchar',
         'is_nullable' => 0,
-        'size' => undef,
+        'size' => 100,
     },
     'position' => {
         'data_type' => 'INTEGER',