1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
from sqlalchemy.engine import default
from sqlalchemy.testing import fixtures, AssertsExecutionResults, profiling
from sqlalchemy import MetaData, Table, Column, Integer, String, select
t1 = t2 = None
class CompileTest(fixtures.TestBase, AssertsExecutionResults):
__requires__ = 'cpython',
__backend__ = True
@classmethod
def setup_class(cls):
global t1, t2, metadata
metadata = MetaData()
t1 = Table('t1', metadata,
Column('c1', Integer, primary_key=True),
Column('c2', String(30)))
t2 = Table('t2', metadata,
Column('c1', Integer, primary_key=True),
Column('c2', String(30)))
# do a "compile" ahead of time to load
# deferred imports
t1.insert().compile()
# go through all the TypeEngine
# objects in use and pre-load their _type_affinity
# entries.
for t in (t1, t2):
for c in t.c:
c.type._type_affinity
from sqlalchemy import types
for t in list(types._type_map.values()):
t._type_affinity
cls.dialect = default.DefaultDialect()
@profiling.function_call_count()
def test_insert(self):
t1.insert().compile(dialect=self.dialect)
@profiling.function_call_count(variance=.15)
def test_update(self):
t1.update().compile(dialect=self.dialect)
def test_update_whereclause(self):
t1.update().where(t1.c.c2 == 12).compile(dialect=self.dialect)
@profiling.function_call_count()
def go():
t1.update().where(t1.c.c2 == 12).compile(dialect=self.dialect)
go()
def test_select(self):
# give some of the cached type values
# a chance to warm up
s = select([t1], t1.c.c2 == t2.c.c1)
s.compile(dialect=self.dialect)
@profiling.function_call_count()
def go():
s = select([t1], t1.c.c2 == t2.c.c1)
s.compile(dialect=self.dialect)
go()
def test_select_labels(self):
# give some of the cached type values
# a chance to warm up
s = select([t1], t1.c.c2 == t2.c.c1).apply_labels()
s.compile(dialect=self.dialect)
@profiling.function_call_count()
def go():
s = select([t1], t1.c.c2 == t2.c.c1).apply_labels()
s.compile(dialect=self.dialect)
go()
|