From 2edda5c7b4e4a4292c212e4698a00bb525ce4a01 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 28 May 2010 10:34:59 -0500 Subject: [PATCH 02/10] Bumped version to 0.1b2. --- sqlbase7_sa/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlbase7_sa/_version.py b/sqlbase7_sa/_version.py index 729541a..419df1a 100644 --- a/sqlbase7_sa/_version.py +++ b/sqlbase7_sa/_version.py @@ -23,4 +23,4 @@ ################################################################################ -__version__ = '0.1b1' +__version__ = '0.1b2' From 2fd3f190af5e374f6ebf920d6dbee4e3147fae1b Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 28 May 2010 11:29:49 -0500 Subject: [PATCH 04/10] Bumped version to 0.1b3. --- sqlbase7_sa/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlbase7_sa/_version.py b/sqlbase7_sa/_version.py index 419df1a..daf0c55 100644 --- a/sqlbase7_sa/_version.py +++ b/sqlbase7_sa/_version.py @@ -23,4 +23,4 @@ ################################################################################ -__version__ = '0.1b2' +__version__ = '0.1b3' From f7c4a2c2df0950097d08702d1d16d4ad7494ab01 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 25 Jun 2010 12:58:34 -0500 Subject: [PATCH 05/10] bumped sqlalchemy requirement It's been discovered that SQLAlchemy 0.5.2 won't work; some problem with joining the sales log tables. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index eb6ec34..c3b5602 100644 --- a/setup.py +++ b/setup.py @@ -66,7 +66,7 @@ specific version of this database, that version being 7.5.1. packages = find_packages(), install_requires = [ - 'SQLAlchemy', + 'SQLAlchemy>0.5.2', ], entry_points = { From 8846e9b3725d080345f775c2a63682ba3efa6cdf Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 25 Jun 2010 13:01:15 -0500 Subject: [PATCH 07/10] bumped version --- sqlbase7_sa/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlbase7_sa/_version.py b/sqlbase7_sa/_version.py index daf0c55..9edf306 100644 --- a/sqlbase7_sa/_version.py +++ b/sqlbase7_sa/_version.py @@ -23,4 +23,4 @@ ################################################################################ -__version__ = '0.1b3' +__version__ = '0.1b4' From 3ee47ed87f2289ea39b5ad68f0c9a90a0b0dda5e Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 31 Jul 2010 20:09:17 -0500 Subject: [PATCH 08/10] added outer join support...michael was right :) And once again, thanks to Michael Bayer for forging the way on this one. The Oracle dialect code was still pretty much copied directly over. --- sqlbase7_sa/sqlbase7.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/sqlbase7_sa/sqlbase7.py b/sqlbase7_sa/sqlbase7.py index 93c8ef3..690395c 100644 --- a/sqlbase7_sa/sqlbase7.py +++ b/sqlbase7_sa/sqlbase7.py @@ -26,6 +26,7 @@ from sqlalchemy.engine.default import DefaultDialect from sqlalchemy import types, and_ from sqlalchemy.sql.expression import Join +from sqlalchemy.sql import visitors, operators, ClauseElement import sqlalchemy @@ -56,7 +57,12 @@ class SQLBase7Compiler(CompilerBase): return self.process(join.left, **kwargs) + ", " + self.process(join.right, **kwargs) def visit_select(self, select, **kwargs): - froms = select._get_display_froms() + if self.stack and 'from' in self.stack[-1]: + existingfroms = self.stack[-1]['from'] + else: + existingfroms = None + + froms = select._get_display_froms(existingfroms) whereclause = self._get_join_whereclause(froms) if whereclause is not None: select = select.where(whereclause) @@ -71,7 +77,16 @@ class SQLBase7Compiler(CompilerBase): clauses = [] def visit_join(join): - clauses.append(join.onclause) + if join.isouter: + def visit_binary(binary): + if binary.operator == operators.eq: + if binary.left.table is join.right: + binary.left = _OuterJoinColumn(binary.left) + elif binary.right.table is join.right: + binary.right = _OuterJoinColumn(binary.right) + clauses.append(visitors.cloned_traverse(join.onclause, {}, {'binary':visit_binary})) + else: + clauses.append(join.onclause) for j in join.left, join.right: if isinstance(j, Join): visit_join(j) @@ -84,6 +99,16 @@ class SQLBase7Compiler(CompilerBase): return and_(*clauses) return None + def visit_outer_join_column(self, vc): + return self.process(vc.column) + "(+)" + + +class _OuterJoinColumn(ClauseElement): + __visit_name__ = 'outer_join_column' + + def __init__(self, column): + self.column = column + class SQLBase7Dialect(DefaultDialect): From 756f0a8e5d54fb2d2a8c15ba85ec7effe31a0a10 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 31 Jul 2010 20:15:49 -0500 Subject: [PATCH 10/10] bumped version --- sqlbase7_sa/_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqlbase7_sa/_version.py b/sqlbase7_sa/_version.py index 9edf306..5bb4149 100644 --- a/sqlbase7_sa/_version.py +++ b/sqlbase7_sa/_version.py @@ -23,4 +23,4 @@ ################################################################################ -__version__ = '0.1b4' +__version__ = '0.1b5'