SQL-Admin

 view release on metacpan or  search on metacpan

lib/SQL/Admin/Driver/DB2/Producer.pm  view on Meta::CPAN


package SQL::Admin::Driver::DB2::Producer;
use base qw( SQL::Admin::Driver::Base::Producer );

use strict;
use warnings;

our $VERSION = v0.5.0;

######################################################################

use SQL::Admin::Driver::DB2::Keywords qw( :all );

our %DATA_TYPE_MAP = (
    'int2' => 'smallint',
    'int4' => 'integer',
    'int8' => 'bigint',

    'text' => 'varchar',
);

######################################################################

our $ESCAPE_ALL_IDENTIFIERS      = 0;
our $ESCAPE_NONRESERVED_KEYWORDS = 0;
our $ESCAPE_SQL_KEYWORDS         = 0;

######################################################################

our %REFERENTIAL_ACTION = (
    cascade   => [ 'CASCADE' ],
    no_action => [ 'NO', 'ACTION' ],
    restrict  => [ 'RESTRICT' ],
    set_null  => [ 'SET', 'NULL' ],
);

######################################################################
######################################################################

sub _escape_identifier {                 # ;
    my ($self, $identifier) = @_;
    my $lc = lc $identifier;

    $identifier = '"' . $identifier . '"'
      if $ESCAPE_ALL_IDENTIFIERS
        || $RESERVED_KEYWORDS{ $lc }
        || ($ESCAPE_NONRESERVED_KEYWORDS && $NONRESERVED_KEYWORDS{ $lc })
        || ($ESCAPE_SQL_KEYWORDS         && $SQL_KEYWORDS{ $lc })
      ;

    ##################################################################

    $identifier;
}


######################################################################
######################################################################
sub data_type {                          # ;
    my ($self, $data, $parent) = @_;

    $data = $DATA_TYPE_MAP{lc $data}
      if exists $DATA_TYPE_MAP{lc $data};

    $self->SUPER::data_type ($data, $parent);
}


######################################################################
######################################################################
sub current_timestamp {                  # ;
    'CURRENT', 'TIMESTAMP';
}


######################################################################
######################################################################
sub current_time {                       # ;
    'CURRENT', 'TIME';
}


######################################################################
######################################################################
sub current_date {                       # ;
    'CURRENT', 'DATE';
}


######################################################################
######################################################################



( run in 0.916 second using v1.01-cache-2.11-cpan-39bf76dae61 )