From 37ced0946c4717422f8a4cc6ce4de1bd78ee942e Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Mon, 23 Jul 2012 20:59:46 -0400 Subject: [PATCH] - some more interpret_as_froms --- lib/sqlalchemy/sql/expression.py | 6 +++--- test/aaa_profiling/test_resultset.py | 16 ++++++++-------- test/orm/test_query.py | 18 ++++++++++++++++++ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index a518852d89..a26a71f163 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -3665,8 +3665,8 @@ class Join(FromClause): :class:`.FromClause` object. """ - self.left = _literal_as_text(left) - self.right = _literal_as_text(right).self_group() + self.left = _interpret_as_from(left) + self.right = _interpret_as_from(right).self_group() if onclause is None: self.onclause = self._match_primaries(self.left, self.right) @@ -4886,7 +4886,7 @@ class Select(SelectBase): if from_obj is not None: self._from_obj = util.OrderedSet( - _literal_as_text(f) + _interpret_as_from(f) for f in util.to_list(from_obj)) else: self._from_obj = util.OrderedSet() diff --git a/test/aaa_profiling/test_resultset.py b/test/aaa_profiling/test_resultset.py index bb16ea1240..f6687f3dd4 100644 --- a/test/aaa_profiling/test_resultset.py +++ b/test/aaa_profiling/test_resultset.py @@ -38,8 +38,8 @@ class ResultSetTest(fixtures.TestBase, AssertsExecutionResults): '2.4': 13214, '2.6':14416, '2.7':14416, - '2.6+cextension': 336, - '2.7+cextension':336}) + '2.6+cextension': 354, + '2.7+cextension':354}) def test_string(self): [tuple(row) for row in t.select().execute().fetchall()] @@ -48,8 +48,8 @@ class ResultSetTest(fixtures.TestBase, AssertsExecutionResults): @profiling.function_call_count(versions={ '2.7':14396, '2.6':14396, - '2.6+cextension': 336, - '2.7+cextension':336}) + '2.6+cextension': 354, + '2.7+cextension':354}) def test_unicode(self): [tuple(row) for row in t2.select().execute().fetchall()] @@ -72,8 +72,8 @@ class ExecutionTest(fixtures.TestBase): # ensure initial connect activities complete c.execute("select 1") - @profiling.function_call_count(versions={'2.7':40, '2.6':40, '2.5':35, - '2.4':21, '3':40}, + @profiling.function_call_count(versions={'2.7':40, '2.6':40, '2.5':35, + '2.4':21, '3':40}, variance=.10) def go(): c.execute("select 1") @@ -85,10 +85,10 @@ class ExecutionTest(fixtures.TestBase): # ensure initial connect activities complete e.execute("select 1") - @profiling.function_call_count(versions={'2.4':41, '2.5':65, + @profiling.function_call_count(versions={'2.4':41, '2.5':65, '2.6':65, '3':61, '2.7':65, - '2.6+cextension':65}, + '2.6+cextension':65}, variance=.05) def go(): e.execute("select 1") diff --git a/test/orm/test_query.py b/test/orm/test_query.py index b80db67ebc..44e016c861 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -130,6 +130,14 @@ class RawSelectTest(QueryTest, AssertsCompiledSQL): "SELECT * FROM users" ) + def test_inline_select_from_entity(self): + User = self.classes.User + + self.assert_compile( + select(['*'], from_obj=User), + "SELECT * FROM users" + ) + def test_select_from_aliased_entity(self): User = self.classes.User ua = aliased(User, name="ua") @@ -193,6 +201,16 @@ class RawSelectTest(QueryTest, AssertsCompiledSQL): "SELECT ua.id, ua.name FROM users AS ua" ) + def test_core_join(self): + User = self.classes.User + Address = self.classes.Address + from sqlalchemy.sql import join + self.assert_compile( + select([User]).select_from(join(User, Address)), + "SELECT users.id, users.name FROM users " + "JOIN addresses ON users.id = addresses.user_id" + ) + class GetTest(QueryTest): def test_get(self): User = self.classes.User -- 2.47.3