| Parse-Dia-SQL documentation | Contained in the Parse-Dia-SQL distribution. |
Parse::Dia::SQL::Output::DB2 - Create SQL for DB2.
use Parse::Dia::SQL;
my $dia = Parse::Dia::SQL->new(...);
print $dia->get_sql();
This class creates SQL for the IBM DB2 database.
The constructor. Arguments:
Create primary key clause, e.g.
constraint pk_<tablename> primary key (<column1>,..,<columnN>)
For DB2 the PK must be 18 characters or less
Returns undefined if list of primary key is empty (i.e. if there are no primary keys on given table).
For DB2 a constraint name must be 18 characters or less.
Returns shortened tablename.
Subclass for outputting SQL for the DB2 database
| Parse-Dia-SQL documentation | Contained in the Parse-Dia-SQL distribution. |
package Parse::Dia::SQL::Output::DB2; # $Id: DB2.pm,v 1.5 2009/03/13 14:20:26 aff Exp $
use warnings; use strict; use Data::Dumper; use File::Spec::Functions qw(catfile); use lib q{lib}; use base q{Parse::Dia::SQL::Output}; # extends require Parse::Dia::SQL::Logger; require Parse::Dia::SQL::Const;
sub new { my ( $class, %param ) = @_; my $self = {}; # Set defaults for db2 $param{object_name_max_length} = $param{object_name_max_length} || 18; $param{index_options} = ['allow reverse scans'] unless defined($param{index_options}) && scalar(@{$param{index_options}}); $param{db} = q{db2}; $self = $class->SUPER::new(%param); bless( $self, $class ); return $self; }
sub _create_pk_string { my ( $self, $tablename, @pks ) = @_; if ( !$tablename ) { $self->{log} ->error(q{Missing argument tablename - cannot create pk string!}); return; } if ( scalar(@pks) == 0 ) { $self->{log}->debug(qq{table '$tablename' has no primary keys}); return; } # old school name length reduction $tablename = $self->{utils} ->mangle_name( $tablename, $self->{object_name_max_length} - 4 ); # new school name length reduction # $tablename = $self->{utils}->make_name ($tablename); $self->{log}->debug( qq{tablename: '$tablename' pks: } . join( q{,}, @pks ) ); return qq{constraint pk_$tablename primary key (} . join( q{,}, @pks ) . q{)}; }
sub _create_constraint_name { my ( $self, $constraint_name ) = @_; if ( !defined($constraint_name) || $constraint_name eq q{} ) { $self->{log}->error( qq{constraint_name was undefined or empty!}); return; } # new school return $self->{utils}->make_name (0, $constraint_name); # old school # return $self->{utils}->mangle_name( $constraint_name, $self->{object_name_max_length} - 4 ); } 1; __END__