From: Arthur Axel 'fREW' Schmidt Date: Sat, 2 Apr 2011 15:02:01 +0000 (-0500) Subject: significantly decrease duplication in tests X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=8ff2414a9fcc0cab3f9d57761e70bd4d4aae20f8;p=dbsrgits%2FDBIx-Class.git significantly decrease duplication in tests --- diff --git a/t/sqlmaker/op_dt.t b/t/sqlmaker/op_dt.t index fc3909d..9d85043 100644 --- a/t/sqlmaker/op_dt.t +++ b/t/sqlmaker/op_dt.t @@ -191,38 +191,22 @@ my $date2 = $date->clone->set_day(16); my @tests = ( { + msg => '-dt_now works', search => { 'me.created_on' => { -dt => $date } }, - sqlite => { - select => 'me.starts_at, me.created_on, me.skip_inflation', - where => 'me.created_on = ?', - bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]], - hri => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')], - }, + select_sql => 'me.starts_at, me.created_on, me.skip_inflation', + where => 'me.created_on = ?', + bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]], + hri => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')], + sqlite => { }, mssql => { - select => 'me.starts_at, me.created_on, me.skip_inflation', - where => 'me.created_on = ?', bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12.000' ]], hri => [hri_thing('2010-12-12', '2010-12-14 12:12:12.000', '2019-12-12 12:12:12.000')], }, - mysql => { - select => 'me.starts_at, me.created_on, me.skip_inflation', - where => 'me.created_on = ?', - bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]], - hri => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')], - }, - postgres => { - select => 'me.starts_at, me.created_on, me.skip_inflation', - where => 'me.created_on = ?', - bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]], - hri => [hri_thing('2010-12-12', '2010-12-14 12:12:12', '2019-12-12 12:12:12')], - }, + mysql => { }, + postgres => { }, oracle => { - select => 'me.starts_at, me.created_on, me.skip_inflation', - where => 'me.created_on = ?', - bind => [[{ dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12' ]], hri => [hri_thing('2010-12-12 00:00:00', '2010-12-14 12:12:12.000000', '2019-12-12 12:12:12.000000')], }, - msg => '-dt_now works', }, { @@ -230,35 +214,23 @@ my @tests = ( search => { 'me.id' => 1 }, select => [ [ -dt_year => { -ident => 'me.created_on' } ] ], as => [ 'year' ], + where => "me.id = ?", + bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], + hri => [{ year => 2010 }], mssql => { select => "DATEPART(year, me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, mysql => { select => "EXTRACT(YEAR FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, sqlite => { select => "STRFTIME('%Y', me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, postgres => { select => "date_part('year', me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, oracle => { select => "EXTRACT(year FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, }, @@ -267,35 +239,24 @@ my @tests = ( search => { 'me.id' => 1 }, select => [ [ -dt_year => $date ] ], as => [ 'year' ], + where => "me.id = ?", + hri => [{ year => 2010 }], + bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], mssql => { select => "DATEPART(year, ?)", - where => "me.id = ?", bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12.000' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, mysql => { select => "EXTRACT(YEAR FROM ?)", - where => "me.id = ?", - bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, sqlite => { select => "STRFTIME('%Y', ?)", - where => "me.id = ?", - bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, postgres => { select => "date_part('year', ?)", - where => "me.id = ?", - bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, oracle => { select => "EXTRACT(year FROM ?)", - where => "me.id = ?", - bind => [[{ sqlt_datatype => 'timestamp' } => '2010-12-14 12:12:12' ], [{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010 }], }, }, @@ -304,365 +265,250 @@ my @tests = ( search => { 'me.id' => 1 }, select => [ [ -dt_get => [[qw(year month)], { -ident => 'me.created_on' }] ] ], as => [ qw(year month) ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ year => 2010, month => 12 }], mssql => { select => "DATEPART(year, me.created_on), DATEPART(month, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ year => 2010, month => 12 }], }, mysql => { select => "EXTRACT(YEAR FROM me.created_on), EXTRACT(MONTH FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ year => 2010, month => 12 }], }, sqlite => { select => "STRFTIME('%Y', me.created_on), STRFTIME('%m', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ year => 2010, month => 12 }], }, postgres => { select => "date_part('year', me.created_on), date_part('month', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ year => 2010, month => 12 }], }, oracle => { select => "EXTRACT(year FROM me.created_on), EXTRACT(month FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ year => 2010, month => 12 }], }, }, { msg => '-dt_month works', search => { 'me.id' => 1 }, - select => [ [ -dt_month => { -ident => 'me.created_on' } ] ], - as => [ 'month' ], + select => [ [ -dt_month => { -ident => 'me.created_on' } ] ], + as => [ 'month' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ month => 12 }], sqlite => { select => "STRFTIME('%m', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ month => 12 }], }, mssql => { select => "DATEPART(month, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ month => 12 }], }, mysql => { select => "EXTRACT(MONTH FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ month => 12 }], }, postgres => { select => "date_part('month', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ month => 12 }], }, oracle => { select => "EXTRACT(month FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ month => 12 }], }, }, { msg => '-dt_day works', search => { 'me.id' => 1 }, - select => [ [ -dt_day => { -ident => 'me.created_on' } ] ], - as => [ 'day' ], + select => [ [ -dt_day => { -ident => 'me.created_on' } ] ], + as => [ 'day' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ day => 14 }], sqlite => { select => "STRFTIME('%d', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ day => 14 }], }, mssql => { select => "DATEPART(day, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ day => 14 }], }, mysql => { select => "EXTRACT(DAY FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ day => 14 }], }, postgres => { select => "date_part('day', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ day => 14 }], }, oracle => { select => "EXTRACT(day FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ day => 14 }], }, }, { msg => '-dt_hour works', search => { 'me.id' => 1 }, - select => [ [ -dt_hour => { -ident => 'me.created_on' } ] ], - as => [ 'hour' ], + select => [ [ -dt_hour => { -ident => 'me.created_on' } ] ], + as => [ 'hour' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ hour => 12 }], sqlite => { select => "STRFTIME('%H', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ hour => 12 }], }, mssql => { select => "DATEPART(hour, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ hour => 12 }], }, mysql => { select => "EXTRACT(HOUR FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ hour => 12 }], }, postgres => { select => "date_part('hour', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ hour => 12 }], }, oracle => { select => "EXTRACT(hour FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ hour => 12 }], }, }, { msg => '-dt_minute works', search => { 'me.id' => 1 }, - select => [ [ -dt_minute => { -ident => 'me.created_on' } ] ], - as => [ 'minute' ], + select => [ [ -dt_minute => { -ident => 'me.created_on' } ] ], + as => [ 'minute' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ minute => 12 }], sqlite => { select => "STRFTIME('%M', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ minute => 12 }], }, mssql => { select => "DATEPART(minute, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ minute => 12 }], }, mysql => { select => "EXTRACT(MINUTE FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ minute => 12 }], }, postgres => { select => "date_part('minute', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ minute => 12 }], }, oracle => { select => "EXTRACT(minute FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ minute => 12 }], }, }, { msg => '-dt_second works', search => { 'me.id' => 1 }, - select => [ [ -dt_second => { -ident => 'me.created_on' } ] ], - as => [ 'second' ], + select => [ [ -dt_second => { -ident => 'me.created_on' } ] ], + as => [ 'second' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], + hri => [{ second => 12 }], sqlite => { select => "STRFTIME('%S', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ second => 12 }], }, mssql => { select => "DATEPART(second, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ second => 12 }], }, mysql => { select => "EXTRACT(SECOND FROM me.created_on)", - where => "me.id = ?", - bind => [[{ dbic_colname => 'me.id', sqlt_datatype => 'integer' } => 1 ]], - hri => [{ second => 12 }], }, postgres => { select => "date_part('second', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ second => 12 }], }, oracle => { select => "EXTRACT(second FROM me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 1 ]], - hri => [{ second => 12 }], }, }, { msg => '-dt_diff (second) works', search => { 'me.id' => 2 }, - select => [ [ -dt_diff => [second => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ], - as => [ 'sec_diff' ], + select => [ [ -dt_diff => [second => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ], + as => [ 'sec_diff' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ sec_diff => 2*24*60*60 }], sqlite => { select => "(STRFTIME('%s', me.created_on) - STRFTIME('%s', me.skip_inflation))", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ sec_diff => 2*24*60*60 }], }, mssql => { select => "DATEDIFF(second, me.skip_inflation, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ sec_diff => 2*24*60*60 }], }, mysql => { select => "TIMESTAMPDIFF(SECOND, me.skip_inflation, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ sec_diff => 2*24*60*60 }], }, postgres => { select => "date_part('EPOCH', me.created_on) - date_part('EPOCH', me.skip_inflation)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ sec_diff => 2*24*60*60 }], }, oracle => { select => "TRUNC(MONTHS_BETWEEN(me.created_on, me.skip_inflation) * 31 * 24 * 60 * 60)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ sec_diff => 2*24*60*60 }], }, }, { msg => '-dt_diff (day) works', search => { 'me.id' => 2 }, - select => [ [ -dt_diff => [day => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ], - as => [ 'day_diff' ], + select => [ [ -dt_diff => [day => { -ident => 'me.created_on' }, \'me.skip_inflation' ] ] ], + as => [ 'day_diff' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ day_diff => 2 }], sqlite => { select => "(JULIANDAY(me.created_on) - JULIANDAY(me.skip_inflation))", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ day_diff => 2 }], }, mssql => { select => "DATEDIFF(dayofyear, me.skip_inflation, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ day_diff => 2 }], }, mysql => { select => "TIMESTAMPDIFF(DAY, me.skip_inflation, me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ day_diff => 2 }], }, postgres => { select => "date_part('DAY', me.created_on) - date_part('DAY', me.skip_inflation)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ day_diff => 2 }], }, oracle => { select => "TRUNC(MONTHS_BETWEEN(me.created_on, me.skip_inflation) * 31)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ day_diff => 2 }], }, }, { - msg => '-dt_diff (year) works', + msg => '-dt_diff (year) works', search => { 'me.id' => 2 }, - select => [ [ -dt_diff => [year => \'me.starts_at', { -ident => 'me.created_on' } ] ] ], - as => [ 'year' ], + select => [ [ -dt_diff => [year => \'me.starts_at', { -ident => 'me.created_on' } ] ] ], + as => [ 'year' ], + where => "me.id = ?", + bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ year => -1 }], sqlite => { exception_like => qr/date diff not supported for part "year" with database "SQLite"/, }, mssql => { select => "DATEDIFF(year, me.created_on, me.starts_at)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ year => -1 }], }, mysql => { select => "TIMESTAMPDIFF(YEAR, me.created_on, me.starts_at)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ year => -1 }], }, postgres => { select => "date_part('YEAR', me.starts_at) - date_part('YEAR', me.created_on)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ year => -1 }], }, oracle => { select => "TRUNC(MONTHS_BETWEEN(me.starts_at, me.created_on) / 12)", - where => "me.id = ?", - bind => [[{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ year => -1 }], }, }, { msg => '-dt_add (year) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [year => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [year => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2014-12-14 12:12:12' }], sqlite => { select => "(datetime(me.created_on, ? || ' years'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2014-12-14 12:12:12' }], }, mssql => { select => "(DATEADD(year, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2014-12-14 12:12:12.000' }], }, mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? YEAR)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2014-12-14 12:12:12' }], }, postgres => { select => "(me.created_on + ? * interval '1 YEAR')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2014-12-14 12:12:12' }], - }, oracle => { select => "(me.created_on + NUMTOYMINTERVAL(?, 'year'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2014-12-14 12:12:12.000000000' }], }, }, @@ -670,37 +516,28 @@ my @tests = ( { msg => '-dt_add (month) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [month => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [month => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2012-03-14 12:12:12' }], sqlite => { select => "(datetime(me.created_on, ? || ' months'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2012-03-14 12:12:12' }], }, mssql => { select => "(DATEADD(month, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2012-03-14 12:12:12.000' }], }, postgres => { select => "(me.created_on + ? * interval '1 MONTH')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2012-03-14 12:12:12' }], }, mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? MONTH)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2012-03-14 12:12:12' }], }, oracle => { select => "(me.created_on + NUMTOYMINTERVAL(?, 'month'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2012-03-14 12:12:12.000000000' }], }, }, @@ -708,37 +545,27 @@ my @tests = ( { msg => '-dt_add (day) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [day => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [day => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2011-12-17 12:12:12' }], sqlite => { select => "(datetime(me.created_on, ? || ' days'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-17 12:12:12' }], }, mssql => { select => "(DATEADD(dayofyear, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-17 12:12:12.000' }], }, postgres => { select => "(me.created_on + ? * interval '1 DAY')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-17 12:12:12' }], }, - mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? DAY)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-17 12:12:12' }], }, oracle => { select => "(me.created_on + NUMTODSINTERVAL(?, 'day'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-17 12:12:12.000000000' }], }, }, @@ -746,36 +573,27 @@ my @tests = ( { msg => '-dt_add (hour) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [hour => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [hour => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2011-12-14 15:12:12' }], sqlite => { select => "(datetime(me.created_on, ? || ' hours'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 15:12:12' }], }, mssql => { select => "(DATEADD(hour, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 15:12:12.000' }], }, postgres => { select => "(me.created_on + ? * interval '1 HOUR')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 15:12:12' }], }, mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? HOUR)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 15:12:12' }], }, oracle => { select => "(me.created_on + NUMTODSINTERVAL(?, 'hour'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 15:12:12.000000000' }], }, }, @@ -783,36 +601,27 @@ my @tests = ( { msg => '-dt_add (minute) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [minute => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [minute => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2011-12-14 12:15:12' }], sqlite => { select => "(datetime(me.created_on, ? || ' minutes'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:15:12' }], }, mssql => { select => "(DATEADD(minute, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 12:15:12.000' }], }, postgres => { select => "(me.created_on + ? * interval '1 MINUTE')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:15:12' }], }, mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? MINUTE)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:15:12' }], }, oracle => { select => "(me.created_on + NUMTODSINTERVAL(?, 'minute'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 12:15:12.000000000' }], }, }, @@ -820,36 +629,27 @@ my @tests = ( { msg => '-dt_add (second) works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [second => 3, { -ident => 'me.created_on' } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [second => 3, { -ident => 'me.created_on' } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], + hri => [{ date => '2011-12-14 12:12:15' }], sqlite => { select => "(datetime(me.created_on, ? || ' seconds'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:12:15' }], }, mssql => { select => "(DATEADD(second, CAST(? AS INTEGER), me.created_on))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 12:12:15.000' }], }, postgres => { select => "(me.created_on + ? * interval '1 SECOND')", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:12:15' }], }, mysql => { select => "DATE_ADD(me.created_on, INTERVAL ? SECOND)", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-14 12:12:15' }], }, oracle => { select => "(me.created_on + NUMTODSINTERVAL(?, 'second'))", - where => "me.id = ?", - bind => [[unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], hri => [{ date => '2011-12-14 12:12:15.000000000' }], }, }, @@ -857,185 +657,108 @@ my @tests = ( { msg => 'nested -dt_add works', search => { 'me.id' => 2 }, - select => [ [ -dt_add => [second => 3, { -dt_add => [ day => 1, { -ident => 'me.created_on' } ] } ] ] ], - as => [ 'date' ], + select => [ [ -dt_add => [second => 3, { -dt_add => [ day => 1, { -ident => 'me.created_on' } ] } ] ] ], + as => [ 'date' ], + where => "me.id = ?", + hri => [{ date => '2011-12-15 12:12:15' }], + bind => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]], sqlite => { select => "(datetime((datetime(me.created_on, ? || ' days')), ? || ' seconds'))", - where => "me.id = ?", - bind => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]], - hri => [{ date => '2011-12-15 12:12:15' }], }, mssql => { select => "(DATEADD(second, CAST(? AS INTEGER), (DATEADD(dayofyear, CAST(? AS INTEGER), me.created_on))))", - where => "me.id = ?", bind => [[{sqlt_datatype => 'integer'}, 3 ], [{sqlt_datatype => 'integer'}, 1], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]], hri => [{ date => '2011-12-15 12:12:15.000' }], }, postgres => { select => "((me.created_on + ? * interval '1 DAY') + ? * interval '1 SECOND')", - where => "me.id = ?", - bind => [[unknown_col, 1], [unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-15 12:12:15' }], }, mysql => { select => "DATE_ADD(DATE_ADD(me.created_on, INTERVAL ? DAY), INTERVAL ? SECOND)", - where => "me.id = ?", - bind => [[unknown_col, 1], [unknown_col, 3], [{dbic_colname => 'me.id', sqlt_datatype => 'integer'} => 2 ]], - hri => [{ date => '2011-12-15 12:12:15' }], }, oracle => { select => "((me.created_on + NUMTODSINTERVAL(?, 'day')) + NUMTODSINTERVAL(?, 'second'))", - where => "me.id = ?", - bind => [[unknown_col, 1], [unknown_col, 3 ], [{dbic_colname => 'me.id', sqlt_datatype => 'integer' }, 2]], hri => [{ date => '2011-12-15 12:12:15.000000000' }], }, }, { - msg => '-dt_before works', - search => { 'me.created_on' => { -dt_before => '2011-12-14 12:12:12' } }, + msg => '-dt_before works', + search => { 'me.created_on' => { -dt_before => '2011-12-14 12:12:12' } }, select => [ [ -ident => 'me.created_on' ] ], as => [ 'date' ], - sqlite => { - select => "me.created_on", - where => "me.created_on < ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }], - }, - postgres => { - select => "me.created_on", - where => "me.created_on < ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }], - }, - mysql => { - select => "me.created_on", - where => "me.created_on < ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }], - }, - mssql => { - select => "me.created_on", - where => "me.created_on < ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }], - }, - oracle => { - select => "me.created_on", - where => "me.created_on < ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }], + select_sql => "me.created_on", + where => "me.created_on < ?", + bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], + hri => [{ date => '2010-12-14 12:12:12' }], + sqlite => { }, + postgres => { }, + mysql => { }, + mssql => { + hri => [{ date => '2010-12-14 12:12:12.000' }], + }, + oracle => { + hri => [{ date => '2010-12-14 12:12:12.000000' }], }, }, { - msg => '-dt_on_or_before works', - search => { 'me.created_on' => { -dt_on_or_before => '2011-12-14 12:12:12' } }, + msg => '-dt_on_or_before works', + search => { 'me.created_on' => { -dt_on_or_before => '2011-12-14 12:12:12' } }, select => [ [ -ident => 'me.created_on' ] ], as => [ 'date' ], - sqlite => { - select => "me.created_on", - where => "me.created_on <= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - postgres => { - select => "me.created_on", - where => "me.created_on <= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - mysql => { - select => "me.created_on", - where => "me.created_on <= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - mssql => { - select => "me.created_on", - where => "me.created_on <= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - oracle => { - select => "me.created_on", - where => "me.created_on <= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], + select_sql => "me.created_on", + where => "me.created_on <= ?", + bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2011-12-14 12:12:12']], + hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], + sqlite => { }, + postgres => { }, + mysql => { }, + mssql => { + hri => [{ date => '2010-12-14 12:12:12.000' }, { date => '2011-12-14 12:12:12.000' }], + }, + oracle => { + hri => [{ date => '2010-12-14 12:12:12.000000' }, { date => '2011-12-14 12:12:12.000000' }], }, }, { - msg => '-dt_after works', - search => { 'me.created_on' => { -dt_after => '2010-12-14 12:12:12' } }, + msg => '-dt_after works', + search => { 'me.created_on' => { -dt_after => '2010-12-14 12:12:12' } }, select => [ [ -ident => 'me.created_on' ] ], as => [ 'date' ], - sqlite => { - select => "me.created_on", - where => "me.created_on > ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2011-12-14 12:12:12' }], - }, - postgres => { - select => "me.created_on", - where => "me.created_on > ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2011-12-14 12:12:12' }], - }, - mysql => { - select => "me.created_on", - where => "me.created_on > ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2011-12-14 12:12:12' }], - }, - mssql => { - select => "me.created_on", - where => "me.created_on > ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2011-12-14 12:12:12' }], - }, - oracle => { - select => "me.created_on", - where => "me.created_on > ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2011-12-14 12:12:12' }], + select_sql => "me.created_on", + where => "me.created_on > ?", + bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], + hri => [{ date => '2011-12-14 12:12:12' }], + sqlite => { }, + postgres => { }, + mysql => { }, + mssql => { + hri => [{ date => '2011-12-14 12:12:12.000' }], + }, + oracle => { + hri => [{ date => '2011-12-14 12:12:12.000000' }], }, }, { - msg => '-dt_on_or_after works', - search => { 'me.created_on' => { -dt_on_or_after => '2010-12-14 12:12:12' } }, + msg => '-dt_on_or_after works', + search => { 'me.created_on' => { -dt_on_or_after => '2010-12-14 12:12:12' } }, select => [ [ -ident => 'me.created_on' ] ], as => [ 'date' ], - sqlite => { - select => "me.created_on", - where => "me.created_on >= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - postgres => { - select => "me.created_on", - where => "me.created_on >= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - mysql => { - select => "me.created_on", - where => "me.created_on >= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - mssql => { - select => "me.created_on", - where => "me.created_on >= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], - }, - oracle => { - select => "me.created_on", - where => "me.created_on >= ?", - bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], - hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], + select_sql => "me.created_on", + where => "me.created_on >= ?", + bind => [[{dbic_colname => 'me.created_on', sqlt_datatype => 'timestamp' }, '2010-12-14 12:12:12']], + hri => [{ date => '2010-12-14 12:12:12' }, { date => '2011-12-14 12:12:12' }], + sqlite => { }, + postgres => { }, + mysql => { }, + mssql => { + hri => [{ date => '2010-12-14 12:12:12.000' }, { date => '2011-12-14 12:12:12.000' }], + }, + oracle => { + hri => [{ date => '2010-12-14 12:12:12.000000' }, { date => '2011-12-14 12:12:12.000000' }], }, }, @@ -1083,13 +806,13 @@ for my $t (@tests) { } is_same_sql_bind( $r, - "(SELECT $db_test->{select} FROM event me WHERE $db_test->{where})", - $db_test->{bind}, + '(SELECT ' . ($db_test->{select} || $t->{select_sql}) . ' FROM event me WHERE ' . ($db_test->{where} || $t->{where}) . ')', + $db_test->{bind} || $t->{bind}, ($t->{msg} ? "$t->{msg} ($db)" : ()) ); SKIP: { - if (my $hri = $db_test->{hri}) { + if (my $hri = $db_test->{hri} || $t->{hri}) { skip "Cannot test database we are not connected to ($db)", 1 unless $dbs_to_test{$db}; skip $db_test->{skip} . " ($db)", 1 if $db_test->{skip};