Fix behavoiur of * in names
Ash Berlin [Sun, 29 Mar 2009 17:31:39 +0000 (18:31 +0100)]
lib/SQL/Abstract/AST/v1.pm
t/001_basic.t
t/003_quote.t

index 821245c..34d340e 100644 (file)
@@ -130,12 +130,18 @@ class SQL::Abstract::AST::v1 extends SQL::Abstract {
     my $post;
     $post = pop @names if $names[-1] eq '*';
 
-    my $ret = 
-      $quote->[0] . 
-      join( $join, @names ) . 
-      $quote->[-1];
+    my $ret;
+    $ret = $quote->[0] . 
+           join( $join, @names ) . 
+           $quote->[-1]
+      if @names;
+
+    $ret = $ret 
+         ? $ret . $sep . $post
+         : $post
+      if defined $post;
+
 
-    $ret .= $sep . $post if defined $post;
     return $ret;
   }
 
index 849a982..6eea38a 100644 (file)
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9;
+use Test::More tests => 10;
 use Test::Differences;
 
 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
@@ -13,6 +13,10 @@ my $sqla = SQL::Abstract->create(1);
 is $sqla->dispatch( { -type => 'name', args => [qw/me id/] }), "me.id",
   "Simple name generator";
 
+is $sqla->dispatch( { -type => 'name', args => ['*'] } ),
+   "*",
+   "* name generator";
+
 is $sqla->dispatch( { -type => 'name', args => [qw/me */]}),
    "me.*",
    "Simple name generator";
index 61df9dc..6f26fb6 100644 (file)
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
  
-use Test::More tests => 2;
+use Test::More tests => 5;
 use Test::Exception;
  
 use_ok('SQL::Abstract') or BAIL_OUT( "$@" );
@@ -11,3 +11,18 @@ my $sqla = SQL::Abstract->create(1);
 lives_ok {
   $sqla->quote_chars('[]');
 } "coercion of quote_chars from Str works";
+
+
+is $sqla->dispatch( { -type => 'name', args => [qw/me id/] }), 
+   "[me].[id]",
+   "me.id";
+
+
+is $sqla->dispatch( { -type => 'name', args => [qw/me */] }), 
+   "[me].*",
+   "me.*";
+
+
+is $sqla->dispatch( { -type => 'name', args => [qw/*/] }), 
+   "*",
+   "*";