summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-03-16 14:06:33 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-03-16 14:06:33 -0400
commit798339430a7657023188364c3ead0bcce56abd6b (patch)
tree49ddad95665f4aeb0cc3216e91a4bd665ca7875e /lib/sqlalchemy
parentb1b8e7defd7ee0d3d6d32d16a412a75b1c93ed0d (diff)
downloadsqlalchemy-798339430a7657023188364c3ead0bcce56abd6b.tar.gz
- Rewrote the query used to get the definition of a view,
typically when using the Inspector interface, to use sys.sql_modules instead of the information schema, thereby allowing views definitions longer than 4000 characters to be fully returned. [ticket:2071]
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py31
1 files changed, 21 insertions, 10 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index c7fd20068..77c736f20 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -130,14 +130,14 @@ which has triggers::
# ...,
implicit_returning=False
)
-
+
Declarative form::
class MyClass(Base):
# ...
__table_args__ = {'implicit_returning':False}
-
-
+
+
This option can also be specified engine-wide using the
``implicit_returning=False`` argument on :func:`.create_engine`.
@@ -1225,14 +1225,25 @@ class MSDialect(default.DefaultDialect):
@reflection.cache
def get_view_definition(self, connection, viewname, schema=None, **kw):
current_schema = schema or self.default_schema_name
- views = ischema.views
- s = sql.select([views.c.view_definition],
- sql.and_(
- views.c.table_schema == current_schema,
- views.c.table_name == viewname
- ),
+
+ rp = connection.execute(
+ sql.text(
+ "select definition from sys.sql_modules as mod, "
+ "sys.views as views, "
+ "sys.schemas as sch"
+ " where "
+ "mod.object_id=views.object_id and "
+ "views.schema_id=sch.schema_id and "
+ "views.name=:viewname and sch.name=:schname",
+ bindparams=[
+ sql.bindparam('viewname', viewname,
+ sqltypes.String(convert_unicode=True)),
+ sql.bindparam('schname', current_schema,
+ sqltypes.String(convert_unicode=True))
+ ]
+ )
)
- rp = connection.execute(s)
+
if rp:
view_def = rp.scalar()
return view_def