#
# MySQL types
#
- bigint => 'bigint',
- double => 'numeric',
+ double => 'double precision',
decimal => 'numeric',
- float => 'numeric',
int => 'integer',
mediumint => 'integer',
- smallint => 'smallint',
tinyint => 'smallint',
char => 'character',
varchar => 'character varying',
longtext => 'text',
mediumtext => 'text',
- text => 'text',
tinytext => 'text',
tinyblob => 'bytea',
blob => 'bytea',
longblob => 'bytea',
enum => 'character varying',
set => 'character varying',
- date => 'date',
datetime => 'timestamp',
- time => 'time',
- timestamp => 'timestamp',
year => 'date',
#
# Oracle types
#
number => 'integer',
- char => 'character',
varchar2 => 'character varying',
long => 'text',
CLOB => 'bytea',
- date => 'date',
#
# Sybase types
#
- int => 'integer',
- money => 'money',
- varchar => 'character varying',
- datetime => 'timestamp',
- text => 'text',
- real => 'numeric',
comment => 'text',
- bit => 'bit',
- tinyint => 'smallint',
- float => 'numeric',
);
$max_id_length = 62;
for my $trigger ( $schema->get_triggers ) {
push @table_defs, create_trigger( $trigger, {
add_drop_trigger => $add_drop_table,
+ generator => $generator,
no_comments => $no_comments,
});
}
my $data_type = lc $field->data_type;
my %extra = $field->extra;
my $list = $extra{'list'} || [];
- # todo deal with embedded quotes
- my $commalist = join( ', ', map { qq['$_'] } @$list );
+ my $commalist = join( ', ', map { __PACKAGE__->_quote_string($_) } @$list );
if ($postgres_version >= 8.003 && $field->data_type eq 'enum') {
my $type_name = $extra{'custom_type_name'} || $field->table->name . '_' . $field->name . '_type';
#
# Default value
#
- SQL::Translator::Producer->_apply_default_value(
+ __PACKAGE__->_apply_default_value(
$field,
\$field_def,
[
sub create_trigger {
my ($trigger,$options) = @_;
+ my $generator = _generator($options);
my @statements;
- push @statements, sprintf( 'DROP TRIGGER IF EXISTS %s', $trigger->name )
+ push @statements, sprintf( 'DROP TRIGGER IF EXISTS %s', $generator->quote($trigger->name) )
if $options->{add_drop_trigger};
my $scope = $trigger->scope || '';
push @statements, sprintf(
'CREATE TRIGGER %s %s %s ON %s%s %s',
- $trigger->name,
+ $generator->quote($trigger->name),
$trigger->perform_action_when,
join( ' OR ', @{ $trigger->database_events } ),
- $trigger->on_table,
+ $generator->quote($trigger->on_table),
$scope,
$trigger->action,
);
my $type_with_size = join('|',
'bit', 'varbit', 'character', 'bit varying', 'character varying',
- 'time', 'timestamp', 'interval', 'numeric'
+ 'time', 'timestamp', 'interval', 'numeric', 'float'
);
if ( $data_type !~ /$type_with_size/ ) {
if(ref $default_value eq "SCALAR" ) {
$default_value = $$default_value;
} elsif( defined $default_value && $to_dt =~ /^(character|text)/xsmi ) {
- $default_value =~ s/'/''/xsmg;
- $default_value = q(') . $default_value . q(');
+ $default_value = __PACKAGE__->_quote_string($default_value);
}
push @out, sprintf('ALTER TABLE %s ALTER COLUMN %s SET DEFAULT %s',