diff options
author | Zuul <zuul@review.opendev.org> | 2021-06-01 13:51:24 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2021-06-01 13:51:24 +0000 |
commit | da57eebc9e1ab7e48d4c4ef6ec1eeba80d867d81 (patch) | |
tree | e5f9c47d4a2e06e63353a19ac0a2a82363672cdb /nova | |
parent | 3fdd3ea89a01ba879ee58660deaa839b28696a70 (diff) | |
parent | d3d08922c7e03e316cab6b2c7eeb8e73c1fe062b (diff) | |
download | nova-da57eebc9e1ab7e48d4c4ef6ec1eeba80d867d81.tar.gz |
Merge "Remove unused DeleteFromSelect db api method"
Diffstat (limited to 'nova')
-rw-r--r-- | nova/db/sqlalchemy/api.py | 22 | ||||
-rw-r--r-- | nova/tests/unit/db/test_migration_utils.py | 35 |
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' |