| ... | ... |
@@ -3193,6 +3193,159 @@ is_deeply($rows, [{key1 => 1, key2 => 11, key3 => 3, key4 => 4, key5 => 5},
|
| 3193 | 3193 |
{key1 => 6, key2 => 7, key3 => 8, key4 => 9, key5 => 10}],
|
| 3194 | 3194 |
"basic"); |
| 3195 | 3195 |
|
| 3196 |
+test 'join'; |
|
| 3197 |
+$dbi = DBIx::Custom->connect; |
|
| 3198 |
+eval { $dbi->execute('drop table table1') };
|
|
| 3199 |
+$dbi->execute($create_table1); |
|
| 3200 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 3201 |
+$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
|
|
| 3202 |
+eval { $dbi->execute('drop table table2') };
|
|
| 3203 |
+$dbi->execute($create_table2); |
|
| 3204 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 3205 |
+eval { $dbi->execute('drop table table3') };
|
|
| 3206 |
+$dbi->execute('create table table3 (key3 int, key4 int);');
|
|
| 3207 |
+$dbi->insert(table => 'table3', param => {key3 => 5, key4 => 4});
|
|
| 3208 |
+$rows = $dbi->select( |
|
| 3209 |
+ table => 'table1', |
|
| 3210 |
+ column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3', |
|
| 3211 |
+ where => {'table1.key2' => 2},
|
|
| 3212 |
+ join => ['left outer join table2 on table1.key1 = table2.key1'] |
|
| 3213 |
+)->all; |
|
| 3214 |
+is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}]);
|
|
| 3215 |
+ |
|
| 3216 |
+$rows = $dbi->select( |
|
| 3217 |
+ table => 'table1', |
|
| 3218 |
+ where => {'key1' => 1},
|
|
| 3219 |
+ join => ['left outer join table2 on table1.key1 = table2.key1'] |
|
| 3220 |
+)->all; |
|
| 3221 |
+is_deeply($rows, [{key1 => 1, key2 => 2}]);
|
|
| 3222 |
+ |
|
| 3223 |
+eval {
|
|
| 3224 |
+ $rows = $dbi->select( |
|
| 3225 |
+ table => 'table1', |
|
| 3226 |
+ column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3', |
|
| 3227 |
+ where => {'table1.key2' => 2},
|
|
| 3228 |
+ join => {'table1.key1' => 'table2.key1'}
|
|
| 3229 |
+ ); |
|
| 3230 |
+}; |
|
| 3231 |
+like ($@, qr/array/); |
|
| 3232 |
+ |
|
| 3233 |
+$rows = $dbi->select( |
|
| 3234 |
+ table => 'table1', |
|
| 3235 |
+ where => {'key1' => 1},
|
|
| 3236 |
+ join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 3237 |
+ 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 3238 |
+)->all; |
|
| 3239 |
+is_deeply($rows, [{key1 => 1, key2 => 2}]);
|
|
| 3240 |
+ |
|
| 3241 |
+$rows = $dbi->select( |
|
| 3242 |
+ column => 'table3.key4 as table3__key4', |
|
| 3243 |
+ table => 'table1', |
|
| 3244 |
+ where => {'table1.key1' => 1},
|
|
| 3245 |
+ join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 3246 |
+ 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 3247 |
+)->all; |
|
| 3248 |
+is_deeply($rows, [{table3__key4 => 4}]);
|
|
| 3249 |
+ |
|
| 3250 |
+$rows = $dbi->select( |
|
| 3251 |
+ column => 'table1.key1 as table1__key1', |
|
| 3252 |
+ table => 'table1', |
|
| 3253 |
+ where => {'table3.key4' => 4},
|
|
| 3254 |
+ join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 3255 |
+ 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 3256 |
+)->all; |
|
| 3257 |
+is_deeply($rows, [{table1__key1 => 1}]);
|
|
| 3258 |
+ |
|
| 3259 |
+$dbi = DBIx::Custom->connect; |
|
| 3260 |
+eval { $dbi->execute('drop table table1') };
|
|
| 3261 |
+$dbi->execute($create_table1); |
|
| 3262 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 3263 |
+eval { $dbi->execute('drop table table2') };
|
|
| 3264 |
+$dbi->execute($create_table2); |
|
| 3265 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 3266 |
+$rows = $dbi->select( |
|
| 3267 |
+ table => 'table1', |
|
| 3268 |
+ column => "${q}table1$p.${q}key1$p as ${q}table1_key1$p, ${q}table2$p.${q}key1$p as ${q}table2_key1$p, ${q}key2$p, ${q}key3$p",
|
|
| 3269 |
+ where => {'table1.key2' => 2},
|
|
| 3270 |
+ join => ["left outer join ${q}table2$p on ${q}table1$p.${q}key1$p = ${q}table2$p.${q}key1$p"],
|
|
| 3271 |
+)->all; |
|
| 3272 |
+is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}],
|
|
| 3273 |
+ 'quote'); |
|
| 3274 |
+ |
|
| 3275 |
+ |
|
| 3276 |
+$dbi = DBIx::Custom->connect; |
|
| 3277 |
+eval { $dbi->execute('drop table table1') };
|
|
| 3278 |
+$dbi->execute($create_table1); |
|
| 3279 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 3280 |
+$sql = <<"EOS"; |
|
| 3281 |
+left outer join ( |
|
| 3282 |
+ select * from table1 as t1 |
|
| 3283 |
+ where t1.key2 = ( |
|
| 3284 |
+ select max(t2.key2) from table1 as t2 |
|
| 3285 |
+ where t1.key1 = t2.key1 |
|
| 3286 |
+ ) |
|
| 3287 |
+) as latest_table1 on table1.key1 = latest_table1.key1 |
|
| 3288 |
+EOS |
|
| 3289 |
+$join = [$sql]; |
|
| 3290 |
+$rows = $dbi->select( |
|
| 3291 |
+ table => 'table1', |
|
| 3292 |
+ column => 'latest_table1.key1 as latest_table1__key1', |
|
| 3293 |
+ join => $join |
|
| 3294 |
+)->all; |
|
| 3295 |
+is_deeply($rows, [{latest_table1__key1 => 1}]);
|
|
| 3296 |
+ |
|
| 3297 |
+$dbi = DBIx::Custom->connect; |
|
| 3298 |
+eval { $dbi->execute('drop table table1') };
|
|
| 3299 |
+eval { $dbi->execute('drop table table2') };
|
|
| 3300 |
+$dbi->execute($create_table1); |
|
| 3301 |
+$dbi->execute($create_table2); |
|
| 3302 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 3303 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
|
|
| 3304 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 3305 |
+$result = $dbi->select( |
|
| 3306 |
+ table => 'table1', |
|
| 3307 |
+ join => [ |
|
| 3308 |
+ "left outer join table2 on table2.key2 = '4' and table1.key1 = table2.key1" |
|
| 3309 |
+ ] |
|
| 3310 |
+); |
|
| 3311 |
+is_deeply($result->all, [{key1 => 1, key2 => 2}]);
|
|
| 3312 |
+$result = $dbi->select( |
|
| 3313 |
+ table => 'table1', |
|
| 3314 |
+ column => [{table2 => ['key3']}],
|
|
| 3315 |
+ join => [ |
|
| 3316 |
+ "left outer join table2 on table2.key3 = '4' and table1.key1 = table2.key1" |
|
| 3317 |
+ ] |
|
| 3318 |
+); |
|
| 3319 |
+is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 3320 |
+$result = $dbi->select( |
|
| 3321 |
+ table => 'table1', |
|
| 3322 |
+ column => [{table2 => ['key3']}],
|
|
| 3323 |
+ join => [ |
|
| 3324 |
+ "left outer join table2 on table1.key1 = table2.key1 and table2.key3 = '4'" |
|
| 3325 |
+ ] |
|
| 3326 |
+); |
|
| 3327 |
+is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 3328 |
+ |
|
| 3329 |
+$dbi = DBIx::Custom->connect; |
|
| 3330 |
+eval { $dbi->execute('drop table table1') };
|
|
| 3331 |
+eval { $dbi->execute('drop table table2') };
|
|
| 3332 |
+$dbi->execute($create_table1); |
|
| 3333 |
+$dbi->execute($create_table2); |
|
| 3334 |
+$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 3335 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
|
|
| 3336 |
+$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 3337 |
+$result = $dbi->select( |
|
| 3338 |
+ table => 'table1', |
|
| 3339 |
+ column => [{table2 => ['key3']}],
|
|
| 3340 |
+ join => [ |
|
| 3341 |
+ {
|
|
| 3342 |
+ clause => "left outer join table2 on table2.key3 = '4' and table1.key1 = table2.key1", |
|
| 3343 |
+ table => ['table1', 'table2'] |
|
| 3344 |
+ } |
|
| 3345 |
+ ] |
|
| 3346 |
+); |
|
| 3347 |
+is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 3348 |
+ |
|
| 3196 | 3349 |
|
| 3197 | 3350 |
|
| 3198 | 3351 |
|
| ... | ... |
@@ -211,195 +211,6 @@ $dbi->execute("insert into table1 (key1) values (:table2.key1)", {'table2.key1'
|
| 211 | 211 |
$result = $dbi->select(table => 'table1'); |
| 212 | 212 |
is($result->one->{key1}, 'A');
|
| 213 | 213 |
|
| 214 |
- |
|
| 215 |
-test 'join'; |
|
| 216 |
-$dbi = DBIx::Custom->connect; |
|
| 217 |
-eval { $dbi->execute('drop table table1') };
|
|
| 218 |
-$dbi->execute($create_table1); |
|
| 219 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 220 |
-$dbi->insert(table => 'table1', param => {key1 => 3, key2 => 4});
|
|
| 221 |
-$dbi->execute($create_table2); |
|
| 222 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 223 |
-$dbi->execute('create table table3 (key3 int, key4 int);');
|
|
| 224 |
-$dbi->insert(table => 'table3', param => {key3 => 5, key4 => 4});
|
|
| 225 |
-$rows = $dbi->select( |
|
| 226 |
- table => 'table1', |
|
| 227 |
- column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3', |
|
| 228 |
- where => {'table1.key2' => 2},
|
|
| 229 |
- join => ['left outer join table2 on table1.key1 = table2.key1'] |
|
| 230 |
-)->all; |
|
| 231 |
-is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}]);
|
|
| 232 |
- |
|
| 233 |
-$rows = $dbi->select( |
|
| 234 |
- table => 'table1', |
|
| 235 |
- where => {'key1' => 1},
|
|
| 236 |
- join => ['left outer join table2 on table1.key1 = table2.key1'] |
|
| 237 |
-)->all; |
|
| 238 |
-is_deeply($rows, [{key1 => 1, key2 => 2}]);
|
|
| 239 |
- |
|
| 240 |
-eval {
|
|
| 241 |
- $rows = $dbi->select( |
|
| 242 |
- table => 'table1', |
|
| 243 |
- column => 'table1.key1 as table1_key1, table2.key1 as table2_key1, key2, key3', |
|
| 244 |
- where => {'table1.key2' => 2},
|
|
| 245 |
- join => {'table1.key1' => 'table2.key1'}
|
|
| 246 |
- ); |
|
| 247 |
-}; |
|
| 248 |
-like ($@, qr/array/); |
|
| 249 |
- |
|
| 250 |
-$rows = $dbi->select( |
|
| 251 |
- table => 'table1', |
|
| 252 |
- where => {'key1' => 1},
|
|
| 253 |
- join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 254 |
- 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 255 |
-)->all; |
|
| 256 |
-is_deeply($rows, [{key1 => 1, key2 => 2}]);
|
|
| 257 |
- |
|
| 258 |
-$rows = $dbi->select( |
|
| 259 |
- column => 'table3.key4 as table3__key4', |
|
| 260 |
- table => 'table1', |
|
| 261 |
- where => {'table1.key1' => 1},
|
|
| 262 |
- join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 263 |
- 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 264 |
-)->all; |
|
| 265 |
-is_deeply($rows, [{table3__key4 => 4}]);
|
|
| 266 |
- |
|
| 267 |
-$rows = $dbi->select( |
|
| 268 |
- column => 'table1.key1 as table1__key1', |
|
| 269 |
- table => 'table1', |
|
| 270 |
- where => {'table3.key4' => 4},
|
|
| 271 |
- join => ['left outer join table2 on table1.key1 = table2.key1', |
|
| 272 |
- 'left outer join table3 on table2.key3 = table3.key3'] |
|
| 273 |
-)->all; |
|
| 274 |
-is_deeply($rows, [{table1__key1 => 1}]);
|
|
| 275 |
- |
|
| 276 |
-$dbi = DBIx::Custom->connect; |
|
| 277 |
-$dbi->quote('"');
|
|
| 278 |
-eval { $dbi->execute('drop table table1') };
|
|
| 279 |
-$dbi->execute($create_table1); |
|
| 280 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 281 |
-$dbi->execute($create_table2); |
|
| 282 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 283 |
-$rows = $dbi->select( |
|
| 284 |
- table => 'table1', |
|
| 285 |
- column => '"table1"."key1" as "table1_key1", "table2"."key1" as "table2_key1", "key2", "key3"', |
|
| 286 |
- where => {'table1.key2' => 2},
|
|
| 287 |
- join => ['left outer join "table2" on "table1"."key1" = "table2"."key1"'], |
|
| 288 |
-)->all; |
|
| 289 |
-is_deeply($rows, [{table1_key1 => 1, table2_key1 => 1, key2 => 2, key3 => 5}],
|
|
| 290 |
- 'quote'); |
|
| 291 |
- |
|
| 292 |
- |
|
| 293 |
-$dbi = DBIx::Custom->connect; |
|
| 294 |
-eval { $dbi->execute('drop table table1') };
|
|
| 295 |
-$dbi->execute($create_table1); |
|
| 296 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 297 |
-$sql = <<"EOS"; |
|
| 298 |
-left outer join ( |
|
| 299 |
- select * from table1 as t1 |
|
| 300 |
- where t1.key2 = ( |
|
| 301 |
- select max(t2.key2) from table1 as t2 |
|
| 302 |
- where t1.key1 = t2.key1 |
|
| 303 |
- ) |
|
| 304 |
-) as latest_table1 on table1.key1 = latest_table1.key1 |
|
| 305 |
-EOS |
|
| 306 |
-$join = [$sql]; |
|
| 307 |
-$rows = $dbi->select( |
|
| 308 |
- table => 'table1', |
|
| 309 |
- column => 'latest_table1.key1 as latest_table1__key1', |
|
| 310 |
- join => $join |
|
| 311 |
-)->all; |
|
| 312 |
-is_deeply($rows, [{latest_table1__key1 => 1}]);
|
|
| 313 |
- |
|
| 314 |
-$dbi = DBIx::Custom->connect; |
|
| 315 |
-eval { $dbi->execute('drop table table1') };
|
|
| 316 |
-eval { $dbi->execute('drop table table2') };
|
|
| 317 |
-$dbi->execute($create_table1); |
|
| 318 |
-$dbi->execute($create_table2); |
|
| 319 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 320 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
|
|
| 321 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 322 |
-$result = $dbi->select( |
|
| 323 |
- table => 'table1', |
|
| 324 |
- join => [ |
|
| 325 |
- "left outer join table2 on table2.key2 = '4' and table1.key1 = table2.key1" |
|
| 326 |
- ] |
|
| 327 |
-); |
|
| 328 |
-is_deeply($result->all, [{key1 => 1, key2 => 2}]);
|
|
| 329 |
-$result = $dbi->select( |
|
| 330 |
- table => 'table1', |
|
| 331 |
- column => [{table2 => ['key3']}],
|
|
| 332 |
- join => [ |
|
| 333 |
- "left outer join table2 on table2.key3 = '4' and table1.key1 = table2.key1" |
|
| 334 |
- ] |
|
| 335 |
-); |
|
| 336 |
-is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 337 |
-$result = $dbi->select( |
|
| 338 |
- table => 'table1', |
|
| 339 |
- column => [{table2 => ['key3']}],
|
|
| 340 |
- join => [ |
|
| 341 |
- "left outer join table2 on table1.key1 = table2.key1 and table2.key3 = '4'" |
|
| 342 |
- ] |
|
| 343 |
-); |
|
| 344 |
-is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 345 |
- |
|
| 346 |
-$dbi = DBIx::Custom->connect; |
|
| 347 |
-eval { $dbi->execute('drop table table1') };
|
|
| 348 |
-eval { $dbi->execute('drop table table2') };
|
|
| 349 |
-$dbi->execute($create_table1); |
|
| 350 |
-$dbi->execute($create_table2); |
|
| 351 |
-$dbi->insert(table => 'table1', param => {key1 => 1, key2 => 2});
|
|
| 352 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 4});
|
|
| 353 |
-$dbi->insert(table => 'table2', param => {key1 => 1, key3 => 5});
|
|
| 354 |
-$result = $dbi->select( |
|
| 355 |
- table => 'table1', |
|
| 356 |
- column => [{table2 => ['key3']}],
|
|
| 357 |
- join => [ |
|
| 358 |
- {
|
|
| 359 |
- clause => "left outer join table2 on table2.key3 = '4' and table1.key1 = table2.key1", |
|
| 360 |
- table => ['table1', 'table2'] |
|
| 361 |
- } |
|
| 362 |
- ] |
|
| 363 |
-); |
|
| 364 |
-is_deeply($result->all, [{'table2.key3' => 4}]);
|
|
| 365 |
- |
|
| 366 |
- |
|
| 367 |
- |
|
| 368 |
- |
|
| 369 |
-test 'type option'; # DEPRECATED! |
|
| 370 |
-$dbi = DBIx::Custom->connect( |
|
| 371 |
- data_source => 'dbi:SQLite:dbname=:memory:', |
|
| 372 |
- dbi_option => {
|
|
| 373 |
- $DBD::SQLite::VERSION > 1.26 ? (sqlite_unicode => 1) : (unicode => 1) |
|
| 374 |
- } |
|
| 375 |
-); |
|
| 376 |
-$binary = pack("I3", 1, 2, 3);
|
|
| 377 |
-eval { $dbi->execute('drop table table1') };
|
|
| 378 |
-$dbi->execute('create table table1(key1, key2)');
|
|
| 379 |
-$dbi->insert(table => 'table1', param => {key1 => $binary, key2 => 'あ'}, type => [key1 => DBI::SQL_BLOB]);
|
|
| 380 |
-$result = $dbi->select(table => 'table1'); |
|
| 381 |
-$row = $result->one; |
|
| 382 |
-is_deeply($row, {key1 => $binary, key2 => 'あ'}, "basic");
|
|
| 383 |
-$result = $dbi->execute('select length(key1) as key1_length from table1');
|
|
| 384 |
-$row = $result->one; |
|
| 385 |
-is($row->{key1_length}, length $binary);
|
|
| 386 |
- |
|
| 387 |
-test 'type_rule from'; |
|
| 388 |
-$dbi = DBIx::Custom->connect; |
|
| 389 |
-$dbi->type_rule( |
|
| 390 |
- from1 => {
|
|
| 391 |
- date => sub { uc $_[0] }
|
|
| 392 |
- } |
|
| 393 |
-); |
|
| 394 |
-$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
|
| 395 |
-$dbi->insert({key1 => 'a'}, table => 'table1');
|
|
| 396 |
-$result = $dbi->select(table => 'table1'); |
|
| 397 |
-is($result->fetch_first->[0], 'A'); |
|
| 398 |
- |
|
| 399 |
-$result = $dbi->select(table => 'table1'); |
|
| 400 |
-is($result->one->{key1}, 'A');
|
|
| 401 |
- |
|
| 402 |
- |
|
| 403 | 214 |
test 'type_rule into'; |
| 404 | 215 |
$dbi = DBIx::Custom->connect; |
| 405 | 216 |
$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
| ... | ... |
@@ -954,6 +765,43 @@ eval {$result->fetch_hash_multi};
|
| 954 | 765 |
like($@, qr/Row count must be specified/, "Not specified row count"); |
| 955 | 766 |
|
| 956 | 767 |
|
| 768 |
+test 'type option'; # DEPRECATED! |
|
| 769 |
+$dbi = DBIx::Custom->connect( |
|
| 770 |
+ data_source => 'dbi:SQLite:dbname=:memory:', |
|
| 771 |
+ dbi_option => {
|
|
| 772 |
+ $DBD::SQLite::VERSION > 1.26 ? (sqlite_unicode => 1) : (unicode => 1) |
|
| 773 |
+ } |
|
| 774 |
+); |
|
| 775 |
+$binary = pack("I3", 1, 2, 3);
|
|
| 776 |
+eval { $dbi->execute('drop table table1') };
|
|
| 777 |
+$dbi->execute('create table table1(key1, key2)');
|
|
| 778 |
+$dbi->insert(table => 'table1', param => {key1 => $binary, key2 => 'あ'}, type => [key1 => DBI::SQL_BLOB]);
|
|
| 779 |
+$result = $dbi->select(table => 'table1'); |
|
| 780 |
+$row = $result->one; |
|
| 781 |
+is_deeply($row, {key1 => $binary, key2 => 'あ'}, "basic");
|
|
| 782 |
+$result = $dbi->execute('select length(key1) as key1_length from table1');
|
|
| 783 |
+$row = $result->one; |
|
| 784 |
+is($row->{key1_length}, length $binary);
|
|
| 785 |
+ |
|
| 786 |
+test 'type_rule from'; |
|
| 787 |
+$dbi = DBIx::Custom->connect; |
|
| 788 |
+$dbi->type_rule( |
|
| 789 |
+ from1 => {
|
|
| 790 |
+ date => sub { uc $_[0] }
|
|
| 791 |
+ } |
|
| 792 |
+); |
|
| 793 |
+$dbi->execute("create table table1 (key1 Date, key2 datetime)");
|
|
| 794 |
+$dbi->insert({key1 => 'a'}, table => 'table1');
|
|
| 795 |
+$result = $dbi->select(table => 'table1'); |
|
| 796 |
+is($result->fetch_first->[0], 'A'); |
|
| 797 |
+ |
|
| 798 |
+$result = $dbi->select(table => 'table1'); |
|
| 799 |
+is($result->one->{key1}, 'A');
|
|
| 800 |
+ |
|
| 801 |
+ |
|
| 802 |
+ |
|
| 803 |
+ |
|
| 804 |
+ |
|
| 957 | 805 |
# DEPRECATED! test |
| 958 | 806 |
test 'filter __ expression'; |
| 959 | 807 |
$dbi = DBIx::Custom->connect; |