Skip to content

Commit d3d0892

Browse files
committed
Remove unused DeleteFromSelect db api method
Noticed this while I was working on archive_deleted_rows when the code comment didn't appear to be true and was confusing. Change I4f2e1632aac96afa7ce06908dc30c0716bcb87b2 removed the last usage of the DeleteFromSelect method, so remove the unused code to avoid future confusion. Change-Id: I4c7574898b64c8f8172ddc84ced86b8a70bf39ff
1 parent 50fdbc7 commit d3d0892

File tree

2 files changed

+1
-56
lines changed

2 files changed

+1
-56
lines changed

nova/db/sqlalchemy/api.py

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from sqlalchemy import and_
3939
from sqlalchemy import Boolean
4040
from sqlalchemy.exc import NoSuchTableError
41-
from sqlalchemy.ext.compiler import compiles
4241
from sqlalchemy import Integer
4342
from sqlalchemy import MetaData
4443
from sqlalchemy import or_
@@ -52,7 +51,6 @@
5251
from sqlalchemy.sql.expression import asc
5352
from sqlalchemy.sql.expression import cast
5453
from sqlalchemy.sql.expression import desc
55-
from sqlalchemy.sql.expression import UpdateBase
5654
from sqlalchemy.sql import false
5755
from sqlalchemy.sql import func
5856
from sqlalchemy.sql import null
@@ -367,23 +365,6 @@ def clauses(self, field):
367365
return [field != value for value in self.values]
368366

369367

370-
class DeleteFromSelect(UpdateBase):
371-
def __init__(self, table, select, column):
372-
self.table = table
373-
self.select = select
374-
self.column = column
375-
376-
377-
# NOTE(guochbo): some versions of MySQL doesn't yet support subquery with
378-
# 'LIMIT & IN/ALL/ANY/SOME' We need work around this with nesting select .
379-
@compiles(DeleteFromSelect)
380-
def visit_delete_from_select(element, compiler, **kw):
381-
return "DELETE FROM %s WHERE %s in (SELECT T1.%s FROM (%s) as T1)" % (
382-
compiler.process(element.table, asfrom=True),
383-
compiler.process(element.column),
384-
element.column.name,
385-
compiler.process(element.select))
386-
387368
###################
388369

389370

@@ -4202,8 +4183,7 @@ def _archive_deleted_rows_for_table(metadata, tablename, max_rows, before):
42024183
column = table.c.domain
42034184
else:
42044185
column = table.c.id
4205-
# NOTE(guochbo): Use DeleteFromSelect to avoid
4206-
# database's limit of maximum parameter in one SQL statement.
4186+
42074187
deleted_column = table.c.deleted
42084188
columns = [c.name for c in table.c]
42094189

nova/tests/unit/db/test_migration_utils.py

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,9 @@
1616
from oslo_db.sqlalchemy import enginefacade
1717
from oslo_db.sqlalchemy import test_base
1818
from oslo_db.sqlalchemy import test_fixtures
19-
from oslo_utils import uuidutils
2019
from sqlalchemy import Integer, String
2120
from sqlalchemy import MetaData, Table, Column
2221
from sqlalchemy.exc import NoSuchTableError
23-
from sqlalchemy import sql
2422
from sqlalchemy.types import UserDefinedType
2523

2624
from nova.db.sqlalchemy import api as db
@@ -57,39 +55,6 @@ def setUp(self):
5755
self.engine = enginefacade.writer.get_engine()
5856
self.meta = MetaData(bind=self.engine)
5957

60-
def test_delete_from_select(self):
61-
table_name = "__test_deletefromselect_table__"
62-
uuidstrs = []
63-
for unused in range(10):
64-
uuidstrs.append(uuidutils.generate_uuid(dashed=False))
65-
66-
conn = self.engine.connect()
67-
test_table = Table(table_name, self.meta,
68-
Column('id', Integer, primary_key=True,
69-
nullable=False, autoincrement=True),
70-
Column('uuid', String(36), nullable=False))
71-
test_table.create()
72-
# Add 10 rows to table
73-
for uuidstr in uuidstrs:
74-
ins_stmt = test_table.insert().values(uuid=uuidstr)
75-
conn.execute(ins_stmt)
76-
77-
# Delete 4 rows in one chunk
78-
column = test_table.c.id
79-
query_delete = sql.select([column],
80-
test_table.c.id < 5).order_by(column)
81-
delete_statement = db.DeleteFromSelect(test_table,
82-
query_delete, column)
83-
result_delete = conn.execute(delete_statement)
84-
# Verify we delete 4 rows
85-
self.assertEqual(result_delete.rowcount, 4)
86-
87-
query_all = sql.select([test_table])\
88-
.where(test_table.c.uuid.in_(uuidstrs))
89-
rows = conn.execute(query_all).fetchall()
90-
# Verify we still have 6 rows in table
91-
self.assertEqual(len(rows), 6)
92-
9358
def test_check_shadow_table(self):
9459
table_name = 'test_check_shadow_table'
9560

0 commit comments

Comments
 (0)