diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-12-01 13:22:23 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-12-01 16:32:27 -0500 |
| commit | e447582b8575eaf165f02864a4b0b977930b3a52 (patch) | |
| tree | d8bb7dab334fc5516e43a4e77f6761b831da4053 /test/sql/test_query.py | |
| parent | 5da41e46d3e293df03a9741073ed02e2fcca08a2 (diff) | |
| download | sqlalchemy-e447582b8575eaf165f02864a4b0b977930b3a52.tar.gz | |
Fix regexp for expanding IN
Fixed bug in new "expanding bind parameter" feature whereby if multiple
params were used in one statement, the regular expression would not
match the parameter name correctly.
Change-Id: Ifaf7d627aac4ead2a13c8dddccb5c515253d88e6
Fixes: #4140
Diffstat (limited to 'test/sql/test_query.py')
| -rw-r--r-- | test/sql/test_query.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/sql/test_query.py b/test/sql/test_query.py index afb113748..74efbf9a4 100644 --- a/test/sql/test_query.py +++ b/test/sql/test_query.py @@ -471,6 +471,66 @@ class QueryTest(fixtures.TestBase): ), [{"uname": ['fred']}, {"uname": ['ed']}] ) + @testing.requires.no_quoting_special_bind_names + def test_expanding_in_special_chars(self): + testing.db.execute( + users.insert(), + [ + dict(user_id=7, user_name='jack'), + dict(user_id=8, user_name='fred'), + ] + ) + + with testing.db.connect() as conn: + stmt = select([users]).where( + users.c.user_name.in_(bindparam('u35', expanding=True)) + ).where( + users.c.user_id == bindparam("u46") + ).order_by(users.c.user_id) + + eq_( + conn.execute( + stmt, {"u35": ['jack', 'fred'], "u46": 7}).fetchall(), + [(7, 'jack')] + ) + + stmt = select([users]).where( + users.c.user_name.in_(bindparam('u.35', expanding=True)) + ).where( + users.c.user_id == bindparam("u.46") + ).order_by(users.c.user_id) + + eq_( + conn.execute( + stmt, {"u.35": ['jack', 'fred'], "u.46": 7}).fetchall(), + [(7, 'jack')] + ) + + def test_expanding_in_multiple(self): + testing.db.execute( + users.insert(), + [ + dict(user_id=7, user_name='jack'), + dict(user_id=8, user_name='fred'), + dict(user_id=9, user_name='ed') + ] + ) + + with testing.db.connect() as conn: + stmt = select([users]).where( + users.c.user_name.in_(bindparam('uname', expanding=True)) + ).where( + users.c.user_id.in_(bindparam('userid', expanding=True)) + ).order_by(users.c.user_id) + + eq_( + conn.execute( + stmt, + {"uname": ['jack', 'fred', 'ed'], "userid": [8, 9]} + ).fetchall(), + [(8, 'fred'), (9, 'ed')] + ) + @testing.requires.tuple_in def test_expanding_in_composite(self): testing.db.execute( |
