App-DBBrowser
view release on metacpan or search on metacpan
lib/App/DBBrowser/Auxil.pm view on Meta::CPAN
elsif ( $sf->{o}{G}{qualified_table_name} ) {
@idx = ( 1, 2 );
}
else {
@idx = ( 2 );
}
if ( $sf->{o}{G}{quote_tables} ) {
return $sf->qualified_identifier( $sf->__quote_identifiers( @{$table_info}[ @idx ] ) );
}
else {
return $sf->qualified_identifier( @{$table_info}[@idx] );
}
}
sub quote_table {
my ( $sf, $table ) = @_;
if ( $sf->{o}{G}{quote_tables} ) {
( $table ) = $sf->__quote_identifiers( $table );
}
return $table;
}
sub quote_column {
my ( $sf, $column ) = @_;
if ( $sf->{o}{G}{quote_columns} ) {
( $column ) = $sf->__quote_identifiers( $column );
}
return $column;
}
sub quote_cols {
my ( $sf, $cols ) = @_;
if ( $sf->{o}{G}{quote_columns} ) {
$cols = [ $sf->__quote_identifiers( @$cols ) ];
}
return $cols;
}
sub quote_alias { ##
my ( $sf, $alias ) = @_;
#if ( $sf->{o}{G}{quote_aliases} ) {
if ( $sf->{o}{G}{quote_columns} ) {
( $alias ) = $sf->__quote_identifiers( $alias );
}
return $alias;
}
sub unquote_identifier {
my ( $sf, $identifier ) = @_;
my $qc = quotemeta( $sf->{d}{identifier_quote_char} );
$identifier =~ s/$qc(?=(?:$qc$qc)*(?:[^$qc]|\z))//g;
return $identifier;
}
sub quote_if_not_numeric {
my ( $sf, $value ) = @_;
if ( looks_like_number $value ) {
return $value;
}
else {
return $sf->{d}{dbh}->quote( $value );
}
}
sub unquote_constant {
my ( $sf, $constant ) = @_;
return if ! defined $constant;
if ( $constant =~ /^'(.*)'\z/ ) {
$constant = $1;
if ( $sf->{i}{dbms} =~ /^(?:mysql|MariaDB)\z/ ) {
$constant =~ s/\\(.)/$1/g;
}
else {
$constant =~ s/''/'/g;
#$constant =~ s/'(?=(?:'')*(?:[^']|\z))//g;
}
}
return $constant;
}
sub regex_quoted_literal {
my ( $sf ) = @_;
if ( $sf->{i}{dbms} =~ /^(?:mysql|MariaDB)\z/ ) {
return qr/(?<!')'(?:[^\\']|\\'|\\\\)*'(?!')/;
}
else {
return qr/(?<!')'(?:[^']|'')*'(?!')/;
}
}
sub regex_quoted_identifier {
my ( $sf ) = @_;
my $iqc = $sf->{d}{identifier_quote_char};
return "$iqc(?:[^$iqc]|$iqc$iqc)+$iqc";
}
sub normalize_space_in_stmt {
my ( $sf, $stmt ) = @_;
my $quoted_literal = $sf->regex_quoted_literal();
my $iqc = $sf->{d}{identifier_quote_char};
my $quoted_identifier = $sf->regex_quoted_identifier();
my $split_rx = qr/ ( $quoted_identifier | $quoted_literal ) /x;
$stmt =~ s/^\s+|\s+\z//g;
$stmt = join '', map {
if ( ! /^[$iqc']/ ) { s/\s+/ /g; s|\(\s|(|; s|\s\)|)| };
$_
} split $split_rx, $stmt;
return $stmt;
}
( run in 2.038 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )