Opened 6 years ago

Closed 6 years ago

Last modified 5 years ago

#14149 closed (fixed)

LIKE clauses fail in Oracle 9.2.0.7

Reported by: JirkaV Owned by: nobody
Component: Database layer (models, ORM) Version: 1.2
Severity: Keywords: oracle
Cc: Ian Kelly, Matt Boersma, Andrii Kurinnyi, tsawyer1 Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

Hi,

I've recently started using Oracle backend, connecting to a database I don't own or operate. I started seeing behaviour described in #5985 (DatabaseError: ORA-01425: escape character must be character string of length 1), fixed in r7412. Since I was hitting an issue that's been apparently fixed, I started digging in history and found that the fix was reverted in r12293 (related ticket: #11017). The fact that it might reintroduce the bug is actually mentioned in the ticket.

I'm happy monkeypatching my Oracle base.py as I may as well be the only person suffering from this issue these days. Mentioning it here mostly for the record, if someone searches for it in future. I'm also happy to help testing any suggested solutions if someone has an idea that would fix #5985 without breaking #11017 again.

For the record, the database I'm connecting to is 9.2.0.7 (I know, old).

Cheers

Jirka

Attachments (1)

14149.diff (3.0 KB) - added by Ian Kelly 6 years ago.

Download all attachments as: .zip

Change History (14)

comment:1 Changed 6 years ago by Thejaswi Puthraya

Component: UncategorizedDatabase layer (models, ORM)

comment:2 Changed 6 years ago by Ian Kelly

Argh! I'm really starting to hate this issue. The underlying Oracle bug that was uncovered in #11017 is supposed to have been fixed in 9.2.0.6. I've tested it myself in 9.2.0.8 and am reasonably confident that the current implementation works there. I'm flummoxed as to what might be causing it in your scenario.

comment:3 Changed 6 years ago by Ian Kelly

Cc: Ian Kelly Matt Boersma added

comment:4 Changed 6 years ago by Ian Kelly

Summary: Oracle backend - conflict between two ticketsLIKE clauses fail in Oracle 9.2.0.7

comment:5 Changed 6 years ago by Andrii Kurinnyi

Cc: Andrii Kurinnyi added

comment:6 Changed 6 years ago by tsawyer1

We've just upgraded Oracle 10.2.0.4 to 10.2.0.5 and I've started encountering this bug.

I've patched my Django to use LIKEC instead of LIKE and it seems ok.

comment:7 Changed 6 years ago by tsawyer1

Cc: tsawyer1 added

comment:8 Changed 6 years ago by tsawyer1

We have support I can raise this with Oracle if required.

Changed 6 years ago by Ian Kelly

Attachment: 14149.diff added

comment:9 Changed 6 years ago by Ian Kelly

Has patch: set
Triage Stage: UnreviewedAccepted

I've uploaded a patch against trunk that should fix this issue by choosing between LIKE and LIKEC at runtime, based on the discussion at http://groups.google.com/group/django-users/browse_thread/thread/360ad7db223af4da

Since I can't test this myself other than to verify that it doesn't break anything, I would appreciate it if those involved would test that this patch fixes the problem before I check it in.

comment:10 Changed 6 years ago by Ian Kelly

milestone: 1.3

comment:11 Changed 6 years ago by Ian Kelly

Resolution: fixed
Status: newclosed

(In [15299]) Fixed #14149: Initialize the Oracle connection.operators at connection time since some systems don't seem to like the "TRANSLATE" trick.

comment:12 Changed 6 years ago by Ian Kelly

(In [15300]) [1.2.X] Fixed #14149: Initialize the Oracle connection.operators at connection time since some systems don't seem to like the "TRANSLATE" trick.

Backport of r15299 from trunk.

comment:13 Changed 5 years ago by Jacob

milestone: 1.3

Milestone 1.3 deleted

Note: See TracTickets for help on using tickets.
Back to Top