Merge "Remove unused DeleteFromSelect db api method"
This commit is contained in:
commit
da57eebc9e
@ -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]
|
||||
|
||||
|
@ -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'
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user