# $Header: /home/jesse/DBIx-SearchBuilder/history/SearchBuilder/Handle/ODBC.pm,v 1.8 2001/10/12 05:27:05 jesse Exp $ package DBIx::SearchBuilder::Handle::ODBC; use strict; use warnings; use base qw(DBIx::SearchBuilder::Handle); =head1 NAME DBIx::SearchBuilder::Handle::ODBC - An ODBC specific Handle object =head1 SYNOPSIS =head1 DESCRIPTION This module provides a subclass of DBIx::SearchBuilder::Handle that compensates for some of the idiosyncrasies of ODBC. =head1 METHODS =cut =head2 CaseSensitive Returns a false value. =cut sub CaseSensitive { my $self = shift; return (undef); } =head2 BuildDSN =cut sub BuildDSN { my $self = shift; my %args = ( Driver => undef, Database => undef, Host => undef, Port => undef, @_ ); my $dsn = "dbi:$args{'Driver'}:$args{'Database'}"; $dsn .= ";host=$args{'Host'}" if (defined $args{'Host'} && $args{'Host'}); $dsn .= ";port=$args{'Port'}" if (defined $args{'Port'} && $args{'Port'}); $self->{'dsn'} = $dsn; } =head2 ApplyLimits =cut sub ApplyLimits { my $self = shift; my $statementref = shift; my $per_page = shift or return; my $first = shift; my $limit_clause = " TOP $per_page"; $limit_clause .= " OFFSET $first" if $first; $$statementref =~ s/SELECT\b/SELECT $limit_clause/; } =head2 DistinctQuery =cut sub DistinctQuery { my $self = shift; my $statementref = shift; my $sb = shift; $$statementref = "SELECT main.* FROM $$statementref"; $$statementref .= $sb->_GroupClause; $$statementref .= $sb->_OrderClause; } sub Encoding { } 1; __END__ =head1 AUTHOR Autrijus Tang =head1 SEE ALSO DBIx::SearchBuilder, DBIx::SearchBuilder::Handle =cut