__PACKAGE__->sql_limit_dialect (
'SkipFirst'
);
__PACKAGE__->sql_quote_char (
'"'
);
__PACKAGE__->datetime_parser_type (
'DBIx::Class::Storage::DBI::Informix::DateTime::Format'
);
__PACKAGE__->mk_group_accessors(
'simple'
=>
'__last_insert_id'
);
sub
_execute {
my
$self
=
shift
;
my
(
$rv
,
$sth
,
@rest
) =
$self
->
next
::method(
@_
);
$self
->__last_insert_id(
$sth
->{ix_sqlerrd}[1])
if
$self
->_perform_autoinc_retrieval;
return
(
wantarray
? (
$rv
,
$sth
,
@rest
) :
$rv
);
}
sub
last_insert_id {
shift
->__last_insert_id;
}
sub
_exec_svp_begin {
my
(
$self
,
$name
) =
@_
;
$self
->_dbh->
do
(
"SAVEPOINT $name"
);
}
sub
_exec_svp_release { 1 }
sub
_exec_svp_rollback {
my
(
$self
,
$name
) =
@_
;
$self
->_dbh->
do
(
"ROLLBACK TO SAVEPOINT $name"
)
}
sub
with_deferred_fk_checks {
my
(
$self
,
$sub
) =
@_
;
my
$txn_scope_guard
=
$self
->txn_scope_guard;
$self
->_do_query(
'SET CONSTRAINTS ALL DEFERRED'
);
my
$sg
= Scope::Guard->new(
sub
{
$self
->_do_query(
'SET CONSTRAINTS ALL IMMEDIATE'
);
});
return
preserve_context {
$sub
->() }
after
=>
sub
{
$txn_scope_guard
->commit };
}
sub
connect_call_datetime_setup {
my
$self
=
shift
;
delete
@ENV
{
qw/DBDATE DBCENTURY/
};
$ENV
{GL_DATE} =
"%m/%d/%Y"
;
$ENV
{GL_DATETIME} =
"%Y-%m-%d %H:%M:%S%F5"
;
}
package
DBIx::Class::Storage::DBI::Informix::DateTime::Format;
my
$timestamp_format
=
'%Y-%m-%d %H:%M:%S.%5N'
;
my
$date_format
=
'%m/%d/%Y'
;
my
(
$timestamp_parser
,
$date_parser
);
sub
parse_datetime {
shift
;
$timestamp_parser
||= DateTime::Format::Strptime->new(
pattern
=>
$timestamp_format
,
on_error
=>
'croak'
,
);
return
$timestamp_parser
->parse_datetime(
shift
);
}
sub
format_datetime {
shift
;
$timestamp_parser
||= DateTime::Format::Strptime->new(
pattern
=>
$timestamp_format
,
on_error
=>
'croak'
,
);
return
$timestamp_parser
->format_datetime(
shift
);
}
sub
parse_date {
shift
;
$date_parser
||= DateTime::Format::Strptime->new(
pattern
=>
$date_format
,
on_error
=>
'croak'
,
);
return
$date_parser
->parse_datetime(
shift
);
}
sub
format_date {
shift
;
$date_parser
||= DateTime::Format::Strptime->new(
pattern
=>
$date_format
,
on_error
=>
'croak'
,
);
return
$date_parser
->format_datetime(
shift
);
}
1;