Showing 2 changed files with 12 additions and 17 deletions
+12
lib/DBIx/Custom.pm
... ...
@@ -1583,7 +1583,9 @@ sub _where_clause_and_param {
1583 1583
 
1584 1584
         if (ref $where eq 'HASH') {
1585 1585
             my $clause = ['and'];
1586
+            my $column_join = '';
1586 1587
             for my $column (keys %$where) {
1588
+                my $column_join .= $column_join;
1587 1589
                 my $table;
1588 1590
                 my $c;
1589 1591
                 if ($column =~ /(?:(.*?)\.)?(.*)/) {
... ...
@@ -1598,6 +1600,16 @@ sub _where_clause_and_param {
1598 1600
                   if defined $table_quote;
1599 1601
                 push @$clause, "$column_quote = :$column";
1600 1602
             }
1603
+
1604
+            # Check unsafety column
1605
+            my $safety = $self->safety_character;
1606
+            unless ($column_join =~ /^[$safety\.]+$/) {
1607
+                for my $column (keys %$where) {
1608
+                    croak qq{"$column" is not safety column name } . _subname
1609
+                      unless $column =~ /^[$safety\.]+$/;
1610
+                }
1611
+            }
1612
+            
1601 1613
             $obj = $self->where(clause => $clause, param => $where);
1602 1614
         }
1603 1615
         elsif (ref $where eq 'DBIx::Custom::Where') { $obj = $where }
-17
lib/DBIx/Custom/Where.pm
... ...
@@ -28,14 +28,6 @@ sub new {
28 28
 sub to_string {
29 29
     my $self = shift;
30 30
     
31
-    # Check if column name is safety character;
32
-    my $safety = $self->dbi->safety_character;
33
-    if (ref $self->param eq 'HASH') {
34
-        for my $column (keys %{$self->param}) {
35
-            croak qq{"$column" is not safety column name (} . _subname . ")"
36
-              unless $column =~ /^[$safety\.]+$/;
37
-        }
38
-    }
39 31
     # Clause
40 32
     my $clause = $self->clause;
41 33
     $clause = ['and', $clause] unless ref $clause eq 'ARRAY';
... ...
@@ -50,15 +42,6 @@ sub to_string {
50 42
     $self->{_tag_parse} = $self->dbi->tag_parse;
51 43
     $self->_parse($clause, $where, $count, 'and');
52 44
 
53
-        
54
-    # Check safety
55
-    unless (join('', keys %$count) =~ /^[$self->{_safety_character}\.]+$/) {
56
-        for my $column (keys %$count) {
57
-            croak qq{"$column" is not safety column name (} . _subname . ")"
58
-              unless $column =~ /^[$self->{_safety_character}\.]+$/;
59
-        }
60
-    }
61
-
62 45
     # Stringify
63 46
     unshift @$where, 'where' if @$where;
64 47
     return join(' ', @$where);