Skip to content

Commit da57eeb

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Remove unused DeleteFromSelect db api method"
2 parents 3fdd3ea + d3d0892 commit da57eeb

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)