... | ... |
@@ -225,7 +225,14 @@ sub execute { |
225 | 225 |
# Execute |
226 | 226 |
my $sth = $query->sth; |
227 | 227 |
my $ret_val = eval{$sth->execute(@$bind_values)}; |
228 |
- croak($@) if $@; |
|
228 |
+ if ($@) { |
|
229 |
+ require Data::Dumper; |
|
230 |
+ my $sql = $query->{sql} || ''; |
|
231 |
+ my $params_dump = Data::Dumper->Dump([$params], ['*params']); |
|
232 |
+ |
|
233 |
+ my $message = "<Created SQL>\n$sql\n<Your parameters>$params_dump"; |
|
234 |
+ croak("$@$message"); |
|
235 |
+ } |
|
229 | 236 |
|
230 | 237 |
# Return resultset if select statement is executed |
231 | 238 |
if ($sth->{NUM_OF_FIELDS}) { |
... | ... |
@@ -25,7 +25,7 @@ our $CREATE_TABLE = { |
25 | 25 |
}; |
26 | 26 |
|
27 | 27 |
our $SELECT_TMPL = { |
28 |
- 0 => 'select key1, key2 from table1;' |
|
28 |
+ 0 => 'select * from table1;' |
|
29 | 29 |
}; |
30 | 30 |
|
31 | 31 |
my $dbi; |
... | ... |
@@ -227,11 +227,71 @@ $dbi->do("delete from table1"); |
227 | 227 |
$insert_tmpl = 'insert into table1 {insert key1 key2 key3 key4 key5}'; |
228 | 228 |
$dbi->execute($insert_tmpl, {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}); |
229 | 229 |
|
230 |
-$select_tmpl = 'select * from table1'; |
|
231 |
-$result = $dbi->execute($select_tmpl); |
|
230 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
232 | 231 |
$rows = $result->fetch_all_hash; |
233 | 232 |
is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test insert tag"); |
234 | 233 |
|
234 |
+$dbi->do("delete from table1"); |
|
235 |
+$dbi->execute($insert_tmpl, {'#insert' => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}); |
|
236 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
237 |
+$rows = $result->fetch_all_hash; |
|
238 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test insert tag #insert"); |
|
239 |
+ |
|
240 |
+ |
|
241 |
+$dbi->do("delete from table1"); |
|
242 |
+$insert_tmpl = 'insert into table1 {insert table1.key1 table1.key2 table1.key3 table1.key4 table1.key5}'; |
|
243 |
+$dbi->execute($insert_tmpl, {table1 => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}); |
|
244 |
+ |
|
245 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
246 |
+$rows = $result->fetch_all_hash; |
|
247 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test insert tag with table name"); |
|
248 |
+ |
|
249 |
+$dbi->do("delete from table1"); |
|
250 |
+$dbi->execute($insert_tmpl, {'#insert' => {table1 => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}}); |
|
251 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
252 |
+$rows = $result->fetch_all_hash; |
|
253 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test insert tag #insert with table name"); |
|
254 |
+ |
|
255 |
+ |
|
256 |
+ |
|
257 |
+ |
|
258 |
+$dbi->do("delete from table1"); |
|
259 |
+$insert_tmpl = "insert into table1 {insert key1 key2 key3 key4 key5}"; |
|
260 |
+$dbi->execute($insert_tmpl, {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}); |
|
261 |
+$dbi->execute($insert_tmpl, {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}); |
|
262 |
+ |
|
263 |
+$update_tmpl = 'update table1 {update key1 key2 key3 key4} where {= key5}'; |
|
264 |
+$dbi->execute($update_tmpl, {key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5}); |
|
265 |
+ |
|
266 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
267 |
+$rows = $result->fetch_all_hash; |
|
268 |
+is_deeply($rows, [{key1 => 1, key2 => 1, key3 => 1, key4 => 1, key5 => 5}, |
|
269 |
+ {key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}], "$test update tag"); |
|
270 |
+ |
|
271 |
+__END__ |
|
272 |
+ |
|
273 |
+$dbi->do("delete from table1"); |
|
274 |
+$dbi->execute($update_tmpl, {'#update' => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}); |
|
275 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
276 |
+$rows = $result->fetch_all_hash; |
|
277 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test update tag #update"); |
|
278 |
+ |
|
279 |
+ |
|
280 |
+$dbi->do("delete from table1"); |
|
281 |
+$update_tmpl = 'update table1 {update table1.key1 table1.key2 table1.key3 table1.key4 table1.key5}'; |
|
282 |
+$dbi->execute($update_tmpl, {table1 => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}); |
|
283 |
+ |
|
284 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
285 |
+$rows = $result->fetch_all_hash; |
|
286 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test update tag with table name"); |
|
287 |
+ |
|
288 |
+$dbi->do("delete from table1"); |
|
289 |
+$dbi->execute($update_tmpl, {'#update' => {table1 => {key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}}}); |
|
290 |
+$result = $dbi->execute($SELECT_TMPL->{0}); |
|
291 |
+$rows = $result->fetch_all_hash; |
|
292 |
+is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}], "$test update tag #update with table name"); |
|
293 |
+ |
|
294 |
+ |
|
235 | 295 |
|
236 | 296 |
__END__ |
237 | 297 |
|