diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-16 14:06:33 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-03-16 14:06:33 -0400 |
| commit | 798339430a7657023188364c3ead0bcce56abd6b (patch) | |
| tree | 49ddad95665f4aeb0cc3216e91a4bd665ca7875e /lib/sqlalchemy | |
| parent | b1b8e7defd7ee0d3d6d32d16a412a75b1c93ed0d (diff) | |
| download | sqlalchemy-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.py | 31 |
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 |
