summaryrefslogtreecommitdiff
path: root/nova
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-06-01 13:51:24 +0000
committerGerrit Code Review <review@openstack.org>2021-06-01 13:51:24 +0000
commitda57eebc9e1ab7e48d4c4ef6ec1eeba80d867d81 (patch)
treee5f9c47d4a2e06e63353a19ac0a2a82363672cdb /nova
parent3fdd3ea89a01ba879ee58660deaa839b28696a70 (diff)
parentd3d08922c7e03e316cab6b2c7eeb8e73c1fe062b (diff)
downloadnova-da57eebc9e1ab7e48d4c4ef6ec1eeba80d867d81.tar.gz
Merge "Remove unused DeleteFromSelect db api method"
Diffstat (limited to 'nova')
-rw-r--r--nova/db/sqlalchemy/api.py22
-rw-r--r--nova/tests/unit/db/test_migration_utils.py35
2 files changed, 1 insertions, 56 deletions
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 0679dcbdc0..63de7fd975 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -38,7 +38,6 @@ import sqlalchemy as sa
from sqlalchemy import and_
from sqlalchemy import Boolean
from sqlalchemy.exc import NoSuchTableError
-from sqlalchemy.ext.compiler import compiles
from sqlalchemy import Integer
from sqlalchemy import MetaData
from sqlalchemy import or_
@@ -52,7 +51,6 @@ from sqlalchemy import sql
from sqlalchemy.sql.expression import asc
from sqlalchemy.sql.expression import cast
from sqlalchemy.sql.expression import desc
-from sqlalchemy.sql.expression import UpdateBase
from sqlalchemy.sql import false
from sqlalchemy.sql import func
from sqlalchemy.sql import null
@@ -367,23 +365,6 @@ class InequalityCondition(object):
return [field != value for value in self.values]
-class DeleteFromSelect(UpdateBase):
- def __init__(self, table, select, column):
- self.table = table
- self.select = select
- self.column = column
-
-
-# NOTE(guochbo): some versions of MySQL doesn't yet support subquery with
-# 'LIMIT & IN/ALL/ANY/SOME' We need work around this with nesting select .
-@compiles(DeleteFromSelect)
-def visit_delete_from_select(element, compiler, **kw):
- return "DELETE FROM %s WHERE %s in (SELECT T1.%s FROM (%s) as T1)" % (
- compiler.process(element.table, asfrom=True),
- compiler.process(element.column),
- element.column.name,
- compiler.process(element.select))
-
###################
@@ -4202,8 +4183,7 @@ def _archive_deleted_rows_for_table(metadata, tablename, max_rows, before):
column = table.c.domain
else:
column = table.c.id
- # NOTE(guochbo): Use DeleteFromSelect to avoid
- # database's limit of maximum parameter in one SQL statement.
+
deleted_column = table.c.deleted
columns = [c.name for c in table.c]
diff --git a/nova/tests/unit/db/test_migration_utils.py b/nova/tests/unit/db/test_migration_utils.py
index 5211ea4574..e98b1071a5 100644
--- a/nova/tests/unit/db/test_migration_utils.py
+++ b/nova/tests/unit/db/test_migration_utils.py
@@ -16,11 +16,9 @@
from oslo_db.sqlalchemy import enginefacade
from oslo_db.sqlalchemy import test_base
from oslo_db.sqlalchemy import test_fixtures
-from oslo_utils import uuidutils
from sqlalchemy import Integer, String
from sqlalchemy import MetaData, Table, Column
from sqlalchemy.exc import NoSuchTableError
-from sqlalchemy import sql
from sqlalchemy.types import UserDefinedType
from nova.db.sqlalchemy import api as db
@@ -57,39 +55,6 @@ class TestMigrationUtilsSQLite(
self.engine = enginefacade.writer.get_engine()
self.meta = MetaData(bind=self.engine)
- def test_delete_from_select(self):
- table_name = "__test_deletefromselect_table__"
- uuidstrs = []
- for unused in range(10):
- uuidstrs.append(uuidutils.generate_uuid(dashed=False))
-
- conn = self.engine.connect()
- test_table = Table(table_name, self.meta,
- Column('id', Integer, primary_key=True,
- nullable=False, autoincrement=True),
- Column('uuid', String(36), nullable=False))
- test_table.create()
- # Add 10 rows to table
- for uuidstr in uuidstrs:
- ins_stmt = test_table.insert().values(uuid=uuidstr)
- conn.execute(ins_stmt)
-
- # Delete 4 rows in one chunk
- column = test_table.c.id
- query_delete = sql.select([column],
- test_table.c.id < 5).order_by(column)
- delete_statement = db.DeleteFromSelect(test_table,
- query_delete, column)
- result_delete = conn.execute(delete_statement)
- # Verify we delete 4 rows
- self.assertEqual(result_delete.rowcount, 4)
-
- query_all = sql.select([test_table])\
- .where(test_table.c.uuid.in_(uuidstrs))
- rows = conn.execute(query_all).fetchall()
- # Verify we still have 6 rows in table
- self.assertEqual(len(rows), 6)
-
def test_check_shadow_table(self):
table_name = 'test_check_shadow_table'