You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Chris Darroch <ch...@pearsoncmg.com> on 2005/11/28 17:08:06 UTC

[PATCH 37664] apr_dbd_oracle parameter and output handling

Hi --

   Some patches for apr-util/trunk/dbd/apr_dbd_oracle.c, based on
testing and initial production usage (see patch #37664).  More to come,
no doubt!  :-)

- replaced leftover dbd_oracle_lob_size() declaration with
  native dbd_oracle_long_size_set() function

- dbd_oracle_query() uses a private pool to ensure that both Stmt and
  LOB callback cleanups are performed

- in dbd_oracle_prepare():
  - don't count %% towards nargs

  - don't attempt to support native Oracle params (e.g., :foo)
    because we get fooled by SQL like TO_DATE(sysdate, 'HH:MM:SS')

  - calculate length for orastr using maximum param length (:aprNNN...),
    and add trailing '\0' for strlen(orastr)

  - no need to iterate through orastr when calling OCIBindByPos(),
    and avoids false detection of native params in SQL like
    TO_DATE(sysdate, 'HH:MM:SS')

  - always register freeStatement callback against pool; assumption
    is that pool passed to dbd_oracle_prepare() lasts as long as
    prepared statement will be retained

  - for output params, handle common data types according to
    "Perl standard" :-)

- in dbd_oracle_get_entry():
  - removed USE_LOB_LOCATOR ifdef

  - added handling for LVC/LVB long structures

Chris.

-- 
GPG Key ID: 366A375B
GPG Key Fingerprint: 485E 5041 17E1 E2BB C263  E4DE C8E3 FA36 366A 375B