Changeset 22663
- Timestamp:
- 11/04/08 11:23:11 (5 years ago)
- Location:
- lang/perl/Filter-SQL/trunk
- Files:
-
- 3 modified
-
Changes (modified) (1 diff)
-
lib/Filter/SQL.pm (modified) (6 diffs)
-
t/01-simple.t (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Filter-SQL/trunk/Changes
r21488 r22663 1 1 Revision history for Perl extension Filter::SQL. 2 3 0.10 Tue Nov 04 11:00:00 2008 4 - implement ``SELECT AS HASH'' directive 2 5 3 6 0.09 Fri Oct 17 15:55:00 2008 -
lang/perl/Filter-SQL/trunk/lib/Filter/SQL.pm
r21488 r22663 16 16 $EXPORT_TAGS{all} = [ uniq map { @$_ } values %EXPORT_TAGS ]; 17 17 our @EXPORT_OK = @{$EXPORT_TAGS{all}}; 18 our $VERSION = '0. 09';18 our $VERSION = '0.10'; 19 19 20 20 FILTER_ONLY 21 21 code => sub { 22 s{(EXEC\s+(?:\S+)|SELECT \s+ROW|SELECT|INSERT|UPDATE|DELETE|REPLACE)([^;]*);}{'Filter::SQL->' . Filter::SQL::to_func($1) . quote_vars($2) . ")"}egm;22 s{(EXEC\s+(?:\S+)|SELECT(?:\s+ROW|)(?:\s+AS\s+HASH|)|INSERT|UPDATE|DELETE|REPLACE)\s+([^;]*);}{'Filter::SQL->' . Filter::SQL::to_func($1) . quote_vars($2) . ")"}egm; 23 23 # print STDERR $_; $_; 24 24 }; … … 29 29 if ($op =~ /^EXEC\s+/) { 30 30 return "sql_prepare_exec('$' "; 31 } elsif ($op =~ /^SELECT\s+ROW/) { 32 return "sql_selectrow('SELECT "; 33 } elsif ($op eq 'SELECT') { 34 return "sql_selectall('SELECT "; 31 } elsif ($op =~ /^SELECT(\s+ROW|)(\s+AS\s+HASH|)/) { 32 my $as_hash = $2 ? '1' : 'undef'; 33 if ($1) { 34 return "sql_selectrow($as_hash, 'SELECT "; 35 } else { 36 return "sql_selectall($as_hash, 'SELECT "; 37 } 35 38 } else { 36 39 return "sql_prepare_exec('$op "; … … 124 127 125 128 sub sql_selectall { 126 my ($klass, $ sql, @params) = @_;129 my ($klass, $as_hash, $sql, @params) = @_; 127 130 my $pe = Filter::SQL->dbh->{PrintError}; 128 131 local Filter::SQL->dbh->{PrintError} = undef; 129 my $rows = Filter::SQL->dbh->selectall_arrayref($sql, {}, @params); 132 my $rows = Filter::SQL->dbh->selectall_arrayref( 133 $sql, 134 $as_hash ? { Slice => {} } : {}, 135 @params, 136 ); 130 137 unless ($rows) { 131 138 carp Filter::SQL->dbh->errstr if $pe; … … 136 143 137 144 sub sql_selectrow { 138 my ($klass, $ sql, @params) = @_;145 my ($klass, $as_hash, $sql, @params) = @_; 139 146 my $pe = Filter::SQL->dbh->{PrintError}; 140 147 local Filter::SQL->dbh->{PrintError} = undef; 141 my $rows = Filter::SQL->dbh->selectall_arrayref($sql, {}, @params); 148 my $rows = Filter::SQL->dbh->selectall_arrayref( 149 $sql, 150 $as_hash ? { Slice => {} } : {}, 151 @params, 152 ); 142 153 unless ($rows) { 143 154 carp Filter::SQL->dbh->errstr if $pe; 144 155 return; 145 156 } 157 return @$rows ? %{$rows->[0]} : () 158 if $as_hash; 146 159 @$rows ? wantarray ? @{$rows->[0]} : $rows->[0][0] : (); 147 160 } … … 174 187 $v = 12345; 175 188 INSERT INTO t (v) VALUES ($v);; 176 189 177 190 foreach my $row (SELECT * FROM t;) { 178 191 print "v: $row[0]\n"; … … 181 194 if (SELECT ROW COUNT(*) FROM t; == 1) { 182 195 print "1 row in table\n"; 196 } 197 198 foreach my $row (SELECT AS HASH * FROM t;) { 199 print "---\n"; 200 foreach my $name (sort keys %$row) { 201 print "$name: $row->{$name}\n"; 202 } 183 203 } 184 204 -
lang/perl/Filter-SQL/trunk/t/01-simple.t
r21488 r22663 10 10 plan skip_all => 'Set FILTER_SQL_DBI to run these tests'; 11 11 } else { 12 plan tests => 3 2;12 plan tests => 35; 13 13 } 14 14 }; … … 40 40 [], 41 41 ); 42 is_deeply( 43 { SELECT ROW AS HASH * FROM filter_sql_t; }, 44 {}, 45 ); 42 46 43 47 is_deeply( … … 60 64 ); 61 65 66 is_deeply( 67 { SELECT ROW AS HASH * FROM filter_sql_t; }, 68 { v => 0 }, 69 ); 70 62 71 my $sth = EXEC SELECT v FROM filter_sql_t;; 63 72 ok($sth); … … 70 79 [ SELECT * FROM filter_sql_t; ], 71 80 [ [ 0 ], [ 1 ], [ 2 ], ], 81 ); 82 is_deeply( 83 [ SELECT AS HASH * FROM filter_sql_t; ], 84 [ { v => 0 }, { v => 1 }, { v => 2 }, ], 72 85 ); 73 86 is(SELECT ROW COUNT(*) FROM filter_sql_t;, 3);
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)