max_identifier_length needed for pymssql

Issue #772 resolved
Former user created an issue

Per this post from May, it seems that column identifier truncation for MSSQL dialects was removed. When SQLAlchemy generates column labels that are longer than 30 characters, pymssql on Linux with FreeTDS will truncate the labels to 30 characters. This will cause SQLAlchemy to throw an exception similar to the following:

File '/usr/lib/python2.5/site-packages/sqlalchemy/ext/assignmapper.py', line 7 in do
  return getattr(query, name)(*args, **kwargs)
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 137 in get_by
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 326 in select_whereclause
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 955 in _select_statement
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 857 in execute
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/query.py', line 916 in instances
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/mapper.py', line 1471 in _instance
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/mapper.py', line 1508 in populate_instance
File '/usr/lib/python2.5/site-packages/sqlalchemy/orm/interfaces.py', line 163 in execute
  self._get_context_strategy(selectcontext).process_row(selectcontext, instance, row, identitykey, isnew)
File 'build/bdist.linux-i686/egg/sqlalchemy/orm/strategies.py', line 39 in process_row
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 1173 in __getitem__
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 994 in _get_col
File 'build/bdist.linux-i686/egg/sqlalchemy/engine/base.py', line 931 in _convert_key
NoSuchColumnError: "Could not locate column in row for column 'Column('emp_termination_date',DateTime(timezone=False))'"

When I add back the limit (see patches) as it was in earlier releases, no exceptions are thrown and correct data is returned. It seems to have been last removed in 3377, when similar properties were converted from methods to attributes. That one was just removed, however.

I'm still working on a test case.

Comments (5)

  1. Log in to comment