Showing 3 changed files with 165 additions and 169 deletions
+161 -161
t/common.t
... ...
@@ -13,6 +13,9 @@ plan skip_all => $ENV{DBIX_CUSTOM_SKIP_MESSAGE} || 'common.t is always skipped'
13 13
 
14 14
 plan 'no_plan';
15 15
 
16
+$SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /DEPRECATED/};
17
+sub test { print "# $_[0]\n" }
18
+
16 19
 # Constant
17 20
 my $table1 = $dbi->table1;
18 21
 my $table2 = $dbi->table2;
... ...
@@ -230,8 +233,164 @@ require MyDBI1;
230 233
     }
231 234
 }
232 235
 
233
-$SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /DEPRECATED/};
234
-sub test { print "# $_[0]\n" }
236
+test 'join';
237
+$dbi = DBIx::Custom->connect;
238
+eval { $dbi->execute("drop table $table1") };
239
+$dbi->execute($create_table1);
240
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
241
+$dbi->insert(table => $table1, param => {$key1 => 3, $key2 => 4});
242
+eval { $dbi->execute("drop table $table2") };
243
+$dbi->execute($create_table2);
244
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
245
+eval { $dbi->execute("drop table $table3") };
246
+$dbi->execute("create table $table3 ($key3 int, $key4 int)");
247
+$dbi->insert(table => $table3, param => {$key3 => 5, $key4 => 4});
248
+$rows = $dbi->select(
249
+    table => $table1,
250
+    column => "$table1.$key1 as ${table1}_$key1, $table2.$key1 as ${table2}_$key1, $key2, $key3",
251
+    where   => {"$table1.$key2" => 2},
252
+    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1"]
253
+)->all;
254
+is_deeply($rows, [{"${table1}_$key1" => 1, "${table2}_$key1" => 1, $key2 => 2, $key3 => 5}]);
255
+
256
+$rows = $dbi->select(
257
+    table => $table1,
258
+    where   => {$key1 => 1},
259
+    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1"]
260
+)->all;
261
+is_deeply($rows, [{$key1 => 1, $key2 => 2}]);
262
+
263
+eval {
264
+    $rows = $dbi->select(
265
+        table => $table1,
266
+        column => "$table1.$key1 as ${table1}_$key1, $table2.$key1 as ${table2}_$key1, $key2, $key3",
267
+        where   => {"$table1.$key2" => 2},
268
+        join  => {"$table1.$key1" => "$table2.$key1"}
269
+    );
270
+};
271
+like ($@, qr/array/);
272
+
273
+$rows = $dbi->select(
274
+    table => $table1,
275
+    where   => {$key1 => 1},
276
+    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
277
+              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
278
+)->all;
279
+is_deeply($rows, [{$key1 => 1, $key2 => 2}]);
280
+
281
+$rows = $dbi->select(
282
+    column => "$table3.$key4 as ${table3}__$key4",
283
+    table => $table1,
284
+    where   => {"$table1.$key1" => 1},
285
+    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
286
+              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
287
+)->all;
288
+is_deeply($rows, [{"${table3}__$key4" => 4}]);
289
+
290
+$rows = $dbi->select(
291
+    column => "$table1.$key1 as ${table1}__$key1",
292
+    table => $table1,
293
+    where   => {"$table3.$key4" => 4},
294
+    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
295
+              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
296
+)->all;
297
+is_deeply($rows, [{"${table1}__$key1" => 1}]);
298
+
299
+$dbi = DBIx::Custom->connect;
300
+eval { $dbi->execute("drop table $table1") };
301
+$dbi->execute($create_table1);
302
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
303
+eval { $dbi->execute("drop table $table2") };
304
+$dbi->execute($create_table2);
305
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
306
+$rows = $dbi->select(
307
+    table => $table1,
308
+    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",
309
+    where   => {"$table1.$key2" => 2},
310
+    join  => ["left outer join ${q}$table2$p on ${q}$table1$p.${q}$key1$p = ${q}$table2$p.${q}$key1$p"],
311
+)->all;
312
+is_deeply($rows, [{"${table1}_$key1" => 1, "${table2}_$key1" => 1, $key2 => 2, $key3 => 5}],
313
+          'quote');
314
+
315
+
316
+$dbi = DBIx::Custom->connect;
317
+eval { $dbi->execute("drop table $table1") };
318
+$dbi->execute($create_table1);
319
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
320
+$sql = <<"EOS";
321
+left outer join (
322
+  select * from $table1 t1
323
+  where t1.$key2 = (
324
+    select max(t2.$key2) from $table1 t2
325
+    where t1.$key1 = t2.$key1
326
+  )
327
+) $table3 on $table1.$key1 = $table3.$key1
328
+EOS
329
+$join = [$sql];
330
+$rows = $dbi->select(
331
+    table => $table1,
332
+    column => "$table3.$key1 as ${table3}__$key1",
333
+    join  => $join
334
+)->all;
335
+$DB::single = 1;
336
+is_deeply($rows, [{"${table3}__$key1" => 1}]);
337
+
338
+$dbi = DBIx::Custom->connect;
339
+eval { $dbi->execute("drop table $table1") };
340
+eval { $dbi->execute("drop table $table2") };
341
+$dbi->execute($create_table1);
342
+$dbi->execute($create_table2);
343
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
344
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 4});
345
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
346
+$result = $dbi->select(
347
+    table => $table1,
348
+    join => [
349
+        "left outer join $table2 on $table2.$key2 = '4' and $table1.$key1 = $table2.$key1"
350
+    ]
351
+);
352
+is_deeply($result->all, [{$key1 => 1, $key2 => 2}]);
353
+$result = $dbi->select(
354
+    table => $table1,
355
+    column => [{$table2 => [$key3]}],
356
+    join => [
357
+        "left outer join $table2 on $table2.$key3 = '4' and $table1.$key1 = $table2.$key1"
358
+    ]
359
+);
360
+is_deeply($result->all, [{"$table2.$key3" => 4}]);
361
+$result = $dbi->select(
362
+    table => $table1,
363
+    column => [{$table2 => [$key3]}],
364
+    join => [
365
+        "left outer join $table2 on $table1.$key1 = $table2.$key1 and $table2.$key3 = '4'"
366
+    ]
367
+);
368
+is_deeply($result->all, [{"$table2.$key3" => 4}]);
369
+
370
+$dbi = DBIx::Custom->connect;
371
+eval { $dbi->execute("drop table $table1") };
372
+eval { $dbi->execute("drop table $table2") };
373
+$dbi->execute($create_table1);
374
+$dbi->execute($create_table2);
375
+$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
376
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 4});
377
+$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
378
+$result = $dbi->select(
379
+    table => $table1,
380
+    column => [{$table2 => [$key3]}],
381
+    join => [
382
+        {
383
+            clause => "left outer join $table2 on $table2.$key3 = '4' and $table1.$key1 = $table2.$key1",
384
+            table => [$table1, $table2]
385
+        }
386
+    ]
387
+);
388
+is_deeply($result->all, [{"$table2.$key3" => 4}]);
389
+
390
+test 'columns';
391
+$DB::single = 1;
392
+$dbi = MyDBI1->connect;
393
+$model = $dbi->model($table1);
235 394
 
236 395
 # Create table
237 396
 $dbi = DBIx::Custom->connect;
... ...
@@ -1966,12 +2125,6 @@ eval {
1966 2125
 };
1967 2126
 like($@, qr/must be/);
1968 2127
 
1969
-test 'columns';
1970
-$DB::single = 1;
1971
-$dbi = MyDBI1->connect;
1972
-$model = $dbi->model($table1);
1973
-
1974
-
1975 2128
 test 'model delete_at';
1976 2129
 $dbi = MyDBI6->connect;
1977 2130
 eval { $dbi->execute("drop table $table1") };
... ...
@@ -3164,159 +3317,6 @@ is_deeply($rows, [{$key1 => 1, $key2 => 11, $key3 => 3, $key4 => 4, $key5 => 5},
3164 3317
                   {$key1 => 6, $key2 => 7,  $key3 => 8, $key4 => 9, $key5 => 10}],
3165 3318
                   "basic");
3166 3319
 
3167
-test 'join';
3168
-$dbi = DBIx::Custom->connect;
3169
-eval { $dbi->execute("drop table $table1") };
3170
-$dbi->execute($create_table1);
3171
-$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
3172
-$dbi->insert(table => $table1, param => {$key1 => 3, $key2 => 4});
3173
-eval { $dbi->execute("drop table $table2") };
3174
-$dbi->execute($create_table2);
3175
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
3176
-eval { $dbi->execute("drop table $table3") };
3177
-$dbi->execute("create table $table3 ($key3 int, $key4 int)");
3178
-$dbi->insert(table => $table3, param => {$key3 => 5, $key4 => 4});
3179
-$rows = $dbi->select(
3180
-    table => $table1,
3181
-    column => "$table1.$key1 as ${table1}_$key1, $table2.$key1 as ${table2}_$key1, $key2, $key3",
3182
-    where   => {"$table1.$key2" => 2},
3183
-    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1"]
3184
-)->all;
3185
-is_deeply($rows, [{"${table1}_$key1" => 1, "${table2}_$key1" => 1, $key2 => 2, $key3 => 5}]);
3186
-
3187
-$rows = $dbi->select(
3188
-    table => $table1,
3189
-    where   => {$key1 => 1},
3190
-    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1"]
3191
-)->all;
3192
-is_deeply($rows, [{$key1 => 1, $key2 => 2}]);
3193
-
3194
-eval {
3195
-    $rows = $dbi->select(
3196
-        table => $table1,
3197
-        column => "$table1.$key1 as ${table1}_$key1, $table2.$key1 as ${table2}_$key1, $key2, $key3",
3198
-        where   => {"$table1.$key2" => 2},
3199
-        join  => {"$table1.$key1" => "$table2.$key1"}
3200
-    );
3201
-};
3202
-like ($@, qr/array/);
3203
-
3204
-$rows = $dbi->select(
3205
-    table => $table1,
3206
-    where   => {$key1 => 1},
3207
-    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
3208
-              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
3209
-)->all;
3210
-is_deeply($rows, [{$key1 => 1, $key2 => 2}]);
3211
-
3212
-$rows = $dbi->select(
3213
-    column => "$table3.$key4 as ${table3}__$key4",
3214
-    table => $table1,
3215
-    where   => {"$table1.$key1" => 1},
3216
-    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
3217
-              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
3218
-)->all;
3219
-is_deeply($rows, [{"${table3}__$key4" => 4}]);
3220
-
3221
-$rows = $dbi->select(
3222
-    column => "$table1.$key1 as ${table1}__$key1",
3223
-    table => $table1,
3224
-    where   => {"$table3.$key4" => 4},
3225
-    join  => ["left outer join $table2 on $table1.$key1 = $table2.$key1",
3226
-              "left outer join $table3 on $table2.$key3 = $table3.$key3"]
3227
-)->all;
3228
-is_deeply($rows, [{"${table1}__$key1" => 1}]);
3229
-
3230
-$dbi = DBIx::Custom->connect;
3231
-eval { $dbi->execute("drop table $table1") };
3232
-$dbi->execute($create_table1);
3233
-$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
3234
-eval { $dbi->execute("drop table $table2") };
3235
-$dbi->execute($create_table2);
3236
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
3237
-$rows = $dbi->select(
3238
-    table => $table1,
3239
-    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",
3240
-    where   => {"$table1.$key2" => 2},
3241
-    join  => ["left outer join ${q}$table2$p on ${q}$table1$p.${q}$key1$p = ${q}$table2$p.${q}$key1$p"],
3242
-)->all;
3243
-is_deeply($rows, [{"${table1}_$key1" => 1, "${table2}_$key1" => 1, $key2 => 2, $key3 => 5}],
3244
-          'quote');
3245
-
3246
-
3247
-$dbi = DBIx::Custom->connect;
3248
-eval { $dbi->execute("drop table $table1") };
3249
-$dbi->execute($create_table1);
3250
-$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
3251
-$sql = <<"EOS";
3252
-left outer join (
3253
-  select * from $table1 t1
3254
-  where t1.$key2 = (
3255
-    select max(t2.$key2) from $table1 t2
3256
-    where t1.$key1 = t2.$key1
3257
-  )
3258
-) latest_$table1 on $table1.$key1 = latest_$table1.$key1
3259
-EOS
3260
-$join = [$sql];
3261
-$rows = $dbi->select(
3262
-    table => $table1,
3263
-    column => "latest_$table1.$key1 as latest_${table1}__$key1",
3264
-    join  => $join
3265
-)->all;
3266
-is_deeply($rows, [{"latest_${table1}__$key1" => 1}]);
3267
-
3268
-$dbi = DBIx::Custom->connect;
3269
-eval { $dbi->execute("drop table $table1") };
3270
-eval { $dbi->execute("drop table $table2") };
3271
-$dbi->execute($create_table1);
3272
-$dbi->execute($create_table2);
3273
-$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
3274
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 4});
3275
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
3276
-$result = $dbi->select(
3277
-    table => $table1,
3278
-    join => [
3279
-        "left outer join $table2 on $table2.$key2 = '4' and $table1.$key1 = $table2.$key1"
3280
-    ]
3281
-);
3282
-is_deeply($result->all, [{$key1 => 1, $key2 => 2}]);
3283
-$result = $dbi->select(
3284
-    table => $table1,
3285
-    column => [{$table2 => [$key3]}],
3286
-    join => [
3287
-        "left outer join $table2 on $table2.$key3 = '4' and $table1.$key1 = $table2.$key1"
3288
-    ]
3289
-);
3290
-is_deeply($result->all, [{"$table2.$key3" => 4}]);
3291
-$result = $dbi->select(
3292
-    table => $table1,
3293
-    column => [{$table2 => [$key3]}],
3294
-    join => [
3295
-        "left outer join $table2 on $table1.$key1 = $table2.$key1 and $table2.$key3 = '4'"
3296
-    ]
3297
-);
3298
-is_deeply($result->all, [{"$table2.$key3" => 4}]);
3299
-
3300
-$dbi = DBIx::Custom->connect;
3301
-eval { $dbi->execute("drop table $table1") };
3302
-eval { $dbi->execute("drop table $table2") };
3303
-$dbi->execute($create_table1);
3304
-$dbi->execute($create_table2);
3305
-$dbi->insert(table => $table1, param => {$key1 => 1, $key2 => 2});
3306
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 4});
3307
-$dbi->insert(table => $table2, param => {$key1 => 1, $key3 => 5});
3308
-$result = $dbi->select(
3309
-    table => $table1,
3310
-    column => [{$table2 => [$key3]}],
3311
-    join => [
3312
-        {
3313
-            clause => "left outer join $table2 on $table2.$key3 = '4' and $table1.$key1 = $table2.$key1",
3314
-            table => [$table1, $table2]
3315
-        }
3316
-    ]
3317
-);
3318
-is_deeply($result->all, [{"$table2.$key3" => 4}]);
3319
-
3320 3320
 test 'Model class';
3321 3321
 $dbi = MyDBI1->connect;
3322 3322
 eval { $dbi->execute("drop table $table1") };
+2 -4
t/common/MyDBI1.pm
... ...
@@ -10,10 +10,8 @@ sub connect {
10 10
     
11 11
     $self->include_model(
12 12
         MyModel1 => [
13
-            'table1',
14
-            'table2',
15
-            'TABLE1',
16
-            'TABLE2'
13
+            $self->table1,
14
+            $self->table2
17 15
         ]
18 16
     );
19 17
 }
+2 -4
t/common_uc/MyDBI1.pm
... ...
@@ -10,10 +10,8 @@ sub connect {
10 10
     
11 11
     $self->include_model(
12 12
         MyModel1 => [
13
-            'table1',
14
-            'table2',
15
-            'TABLE1',
16
-            'TABLE2'
13
+            $self->table1,
14
+            $self->table2
17 15
         ]
18 16
     );
19 17
 }