mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	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
This commit is contained in:
		| @@ -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 @@ class DatabaseWrapper(BaseDatabaseWrapper): | ||||
|             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 | ||||
|   | ||||
| @@ -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: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user