diff options
author | Adam Johnson <me@adamj.eu> | 2020-03-25 08:58:21 +0000 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-03-31 07:25:50 +0200 |
commit | 93ed71e05802a47774b52503cdc3442686d686c1 (patch) | |
tree | f5eec1a66125ca1b141137c5f8f8bf3549c73619 /django/db/backends/mysql/operations.py | |
parent | c06d7c92392c799d5a17f2620f8e280e119409bf (diff) | |
download | django-93ed71e05802a47774b52503cdc3442686d686c1.tar.gz |
Fixed #31403 -- Added support for returning fields from INSERT statements on MariaDB 10.5+.
Diffstat (limited to 'django/db/backends/mysql/operations.py')
-rw-r--r-- | django/db/backends/mysql/operations.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/django/db/backends/mysql/operations.py b/django/db/backends/mysql/operations.py index e9306f03fc..a8e9af2263 100644 --- a/django/db/backends/mysql/operations.py +++ b/django/db/backends/mysql/operations.py @@ -143,6 +143,13 @@ class DatabaseOperations(BaseDatabaseOperations): def date_interval_sql(self, timedelta): return 'INTERVAL %s MICROSECOND' % duration_microseconds(timedelta) + def fetch_returned_insert_rows(self, cursor): + """ + Given a cursor object that has just performed an INSERT...RETURNING + statement into a table, return the tuple of returned data. + """ + return cursor.fetchall() + def format_for_duration_arithmetic(self, sql): return 'INTERVAL %s MICROSECOND' % sql @@ -173,6 +180,19 @@ class DatabaseOperations(BaseDatabaseOperations): def random_function_sql(self): return 'RAND()' + def return_insert_columns(self, fields): + # MySQL and MariaDB < 10.5.0 don't support an INSERT...RETURNING + # statement. + if not fields: + return '', () + columns = [ + '%s.%s' % ( + self.quote_name(field.model._meta.db_table), + self.quote_name(field.column), + ) for field in fields + ] + return 'RETURNING %s' % ', '.join(columns), () + def sql_flush(self, style, tables, sequences, allow_cascade=False): # NB: The generated SQL below is specific to MySQL # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements |