Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #5226. Now we check the Oracle version and give an explicit

error when we encounter a regex operator that isn't supported on 9i or 
earlier.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@6198 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit a6b1d65e33d3ff44fd81f6497e812f89f9c3d9e0 1 parent 55d34c6
@mboersma mboersma authored
Showing with 8 additions and 0 deletions.
  1. +5 −0 django/db/backends/oracle/base.py
  2. +3 −0  django/db/models/query.py
View
5 django/db/backends/oracle/base.py
@@ -400,6 +400,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
'istartswith': "LIKE UPPER(%s) ESCAPE '\\'",
'iendswith': "LIKE UPPER(%s) ESCAPE '\\'",
}
+ oracle_version = None
def _valid_connection(self):
return self.connection is not None
@@ -414,6 +415,10 @@ def _cursor(self, settings):
else:
conn_string = "%s/%s@%s" % (settings.DATABASE_USER, settings.DATABASE_PASSWORD, settings.DATABASE_NAME)
self.connection = Database.connect(conn_string, **self.options)
+ try:
+ self.oracle_version = int(self.connection.version.split('.')[0])
+ except ValueError:
+ pass
cursor = FormatStylePlaceholderCursor(self.connection)
# Default arraysize of 1 is highly sub-optimal.
cursor.arraysize = 100
View
3  django/db/models/query.py
@@ -816,6 +816,9 @@ def get_where_clause(lookup_type, table_prefix, field_name, value, db_type):
return connection.ops.fulltext_search_sql(field_sql)
elif lookup_type in ('regex', 'iregex'):
if settings.DATABASE_ENGINE == 'oracle':
+ if connection.oracle_version and connection.oracle_version <= 9:
+ msg = "Regexes are not supported in Oracle before version 10g."
+ raise NotImplementedError(msg)
if lookup_type == 'regex':
match_option = 'c'
else:

0 comments on commit a6b1d65

Please sign in to comment.
Something went wrong with that request. Please try again.