RE: Bug in Oracle driver ?
- From: ikorolev@xxxxxxxxxxxxxxxx (Igor Korolev)
- Date: Thu, 15 Dec 2005 16:28:02 -0600
>Hello,
>
>It looks like the Oracle driver incorrectly binds VARCHAR2 variables in case a number is passed from perl.
>
>Here is an example. This table has a primary key on division_id + division_order_id, so such selects should run very quickly (and they do run very quickly from sqlplus or toad).
>
>However, if I execute this using selectrow_array method of DBI.pm
>
>my $sql = 'select ' . join(',',@$sum_fields) . ' from ' . $table .
> qq[ where division_id = :1 and division_order_id = :2];
>
>It takes up to 1 second per select:
>
>Order [1], select took: [0.730479001998901]
>Order [2], select took: [0.441529989242554]
>Order [1130979589-6919-090637], select took: [0.462771892547607]
>Order [3], select took: [0.424475193023682]
>Order [947647153], select took: [0.513856172561646]
>Order [4], select took: [0.49094295501709]
>Order [6], select took: [0.523995161056519]
>Order [7], select took: [0.558786153793335]
>Order [8], select took: [0.452331066131592]
>Order [131635406], select took: [0.451704978942871]
>
>However, a simple addition forcing VARCHAR2, dramatically improves performance
>
>my $sql = 'select ' . join(',',@$sum_fields) . ' from ' . $table .
> qq[ where division_id = :1 and division_order_id = '' || :2];
>
>Order [1], select took: [0.00937604904174805]
>Order [2], select took: [0.00504183769226074]
>Order [1130979589-6919-090637], select took: [0.0115630626678467]
>Order [3], select took: [0.00729489326477051]
>Order [947647153], select took: [0.00545406341552734]
>Order [4], select took: [0.00602984428405762]
>Order [6], select took: [0.00556111335754395]
>Order [7], select took: [0.00576210021972656]
>Order [8], select took: [0.00520086288452148]
>Order [131635406], select took: [0.00546598434448242]
>
>Thank you,
>
>Igor
- Follow-Ups:
- Re: Bug in Oracle driver ?
- From: Tim Bunce
- Re: Bug in Oracle driver ?
- Prev by Date: RE: LongReadLen, lengthb() and Oracle
- Next by Date: RE: DBD ODBC question - $dbh->{odbc_exec_direct}
- Previous by thread: DBD ODBC question - $dbh->{odbc_exec_direct}
- Next by thread: Re: Bug in Oracle driver ?
- Index(es):