Commit Graph

528 Commits

Author SHA1 Message Date
Mike Bayer 63c211f427 tweak this some more to handle the array being empty again 2013-04-22 17:24:31 -04:00
Mike Bayer d2f8c83e25 - change to [ticket:2681], pre-coerce the array to list
unconditonally instead so that it works in all cases.
2013-04-22 17:08:02 -04:00
Mike Bayer 422f471871 The operators for the Postgresql ARRAY type supports
input types of sets, generators, etc. but only when a dimension
is specified for the ARRAY; otherwise, the dialect
needs to peek inside of "arr[0]" to guess how many
dimensions are in use.  If this occurs with a non
list/tuple type, the error message is now informative
and directs to specify a dimension for the ARRAY.
[ticket:2681]
2013-04-22 16:57:15 -04:00
Mike Bayer 41b70ff888 - establish ordering here for the hstore repr test 2013-04-20 11:47:25 -04:00
Mike Bayer 0790efcf87 - this pymssql test needs to be against the pymssql dialect
- Part of a longer series of fixes needed for pyodbc+
      mssql, a CAST to NVARCHAR(max) has been added to the bound
      parameter for the table name and schema name in all information schema
      queries to avoid the issue of comparing NVARCHAR to NTEXT,
      which seems to be rejected by the ODBC driver in some cases,
      such as FreeTDS (0.91 only?) plus unicode bound parameters being passed.
      The issue seems to be specific to the SQL Server information
      schema tables and the workaround is harmless for those cases
      where the problem doesn't exist in the first place.
[ticket:2355]
2013-04-18 17:41:30 -04:00
Mike Bayer 7dff6f6d49 - test all pymssql messages here
- changelog
2013-03-29 12:09:11 -04:00
Mike Bayer 7aea1bfc8e Merged in sontek/sqlalchemy/add_better_disconnect_checks (pull request #47)
Add disconnect check on timeouts
2013-03-29 12:03:17 -04:00
Marc Abramowitz f79b41243d Make MonkeyPatchedBinaryTest not fail on Python 2.5 (which doesn't have
the `b` notation for byte string literals)
2013-03-20 22:37:05 -07:00
Marc Abramowitz e90b2ccdfb Make MonkeyPatchedBinaryTest only run when using mssql. Prevents failed
tests when using a different dialect.
2013-03-18 15:29:54 -07:00
John Anderson eefa4b68f5 cleaned up errors, only check for connection timeout for now 2013-03-18 15:04:30 -07:00
John Anderson cb43db6bd1 Added disconnect checks for timeout, unable to read, and unable to write 2013-03-18 14:49:28 -07:00
Marc Abramowitz c97889af6d Add a test for http://www.sqlalchemy.org/trac/ticket/2683
This test currently passes in Python 2 but fails in Python 3.
2013-03-18 13:38:54 -07:00
Mike Bayer 9ad9ccec87 0.8.1 bump + test, changelog for hstore fix [ticket:2680] 2013-03-18 12:55:56 -07:00
Mike Bayer a0de45185b Added support for Postgresql's traditional SUBSTRING
function syntax, renders as "SUBSTRING(x FROM y FOR z)"
when regular ``func.substring()`` is used.
Also in 0.7.11.  Courtesy Gunnlaugur Por Briem.
[ticket:2676]
2013-03-09 17:40:06 -05:00
Mike Bayer c8a80e2130 - remove all compat items that are pre-2.5 (hooray)
- other cleanup
- don't need compat.decimal, that approach never panned out. hopefully
outside libs aren't pulling it in, they shouldn't be
2013-03-09 17:26:16 -05:00
Hajime Nakagami 60028c3607 test for cymysql 2013-02-17 15:07:19 +09:00
Mike Bayer cb19f227f3 The :meth:.ColumnOperators.in_ operator will now coerce
values of ``None`` to :func:`.null`.
[ticket:2496]
2013-02-02 16:17:58 -05:00
Audrius Kažukauskas dbdf4f25e2 Add ANY/ALL construct support for PostgreSQL's ARRAY type 2013-01-28 19:58:06 +02:00
Mike Bayer b1a01a6256 - replace mssql_ordering with generalized #695 solution
- documentation for mssql index options plus changelog and fixes
2013-01-20 12:43:39 -05:00
Mike Bayer bc75bbd62d Merged in dharland/sqlalchemy (pull request #35)
Add extra mssql dialect options to Index
2013-01-20 12:23:39 -05:00
Mike Bayer 2244c3febe - "postgres_where" has been removed 2013-01-16 23:53:00 -05:00
Derek Harland f5a5a6bf43 Add mssql_include option for mssql dialect 2013-01-14 17:03:38 +13:00
Derek Harland 38f7650072 Add mssql_ordering option for mssql dialect 2013-01-14 17:02:20 +13:00
Derek Harland 7198abb13e Add mssql_clustered option for mssql dialect 2013-01-14 17:00:37 +13:00
Mike Bayer 46a9209cde Added a py3K conditional around unnecessary .decode()
call in mssql information schema, fixes reflection
in Py3K. Also in 0.7.10. [ticket:2638]
2013-01-12 19:51:13 -05:00
Mike Bayer 56b1f4c884 - changelog for pullreq 32
- Fixed a regression whereby the "collation" parameter
of the character types CHAR, NCHAR, etc. stopped working,
as "collation" is now supported by the base string types.
The TEXT, NCHAR, CHAR, VARCHAR types within the
MSSQL dialect are now synonyms for the base types.
- move out the type rendering tests into DB-agnostic tests
and remove some of the old "create" statements.  tests here
are still very disorganized.
2013-01-12 12:14:15 -05:00
Mike Bayer 17c300eb07 Merged in dharland/sqlalchemy (pull request #32: Allow the MSSQL dialect to support identity columns that are not part of the primary key) 2013-01-12 11:43:36 -05:00
Mike Bayer a94f2f81af Fixed bug in :func:.postgresql.array construct whereby using it
inside of an :func:`.expression.insert` construct would produce an
error regarding a parameter issue in the ``self_group()`` method.
2013-01-02 11:26:37 -05:00
Mike Bayer 850e881ce2 More adjustment to this SQLite related issue which was released in
0.7.9, to intercept legacy SQLite quoting characters when reflecting
foreign keys.  In addition to intercepting double quotes, other
quoting characters such as brackets, backticks, and single quotes
are now also intercepted. [ticket:2568]
2012-12-14 10:29:46 -05:00
Mike Bayer d9d6dcea77 add future 2012-12-11 10:34:33 -05:00
Mike Bayer 70d38af42e Fixed table reflection for Oracle when accessing a synonym that refers
to a DBLINK remote database; while the syntax has been present in the
Oracle dialect for some time, up until now it has never been tested.
The syntax has been tested against a sample database linking to itself,
however there's still some uncertainty as to what should be used for the
"owner" when querying the remote database for table information.
Currently, the value of "username" from user_db_links is used to
match the "owner".  [ticket:2619]
2012-12-09 18:28:08 -05:00
Mike Bayer 927b985983 - multivalued inserts, [ticket:2623]
- update "not supported" messages for empty inserts, mutlivalue inserts

- rework the ValuesBase approach for multiple value sets so that stmt.parameters
does store a list for multiple values; the _has_multiple_parameters flag now indicates
which of the two modes the statement is within.  it now raises exceptions if a subsequent
call to values() attempts to call a ValuesBase with one mode in the style of the other
mode; that is, you can't switch a single- or multi- valued ValuesBase to the other mode,
and also if a multiple value is passed simultaneously with a kwargs set.
Added tests for these error conditions

- Calling values() multiple times in multivalue mode now extends the parameter list to
include the new parameter sets.

- add error/test if multiple *args were passed to ValuesBase.values()

- rework the compiler approach for multivalue inserts, back to where
_get_colparams() returns the same list of (column, value) as before, thereby
maintaining the identical number of append() and other calls when multivalue
is not enabled.  In the case of multivalue, it makes a last-minute switch to return
a list of lists instead of the single list.  As it constructs the additional lists, the inline
defaults and other calculated default parameters of the first parameter
set are copied into the newly generated lists so that these features continue
to function for a multivalue insert.   Multivalue inserts now add no additional
function calls to the compilation for regular insert constructs.

- parameter lists for multivalue inserts now includes an integer index for all
parameter sets.

- add detailed documentation for ValuesBase.values(), including careful wording
to describe the difference between multiple values and an executemany() call.

- add a test for multivalue insert + returning - it works !

- remove the very old/never used "postgresql_returning"/"firebird_returning" flags.
2012-12-08 14:25:42 -05:00
Mike Bayer 9d817406e2 The Oracle LONG type, while an unbounded text type, does not appear
to use the cx_Oracle.LOB type when result rows are returned,
so the dialect has been repaired to exclude LONG from
having cx_Oracle.LOB filtering applied.  Also in 0.7.10.
[ticket:2620]
2012-12-06 19:30:49 -05:00
Mike Bayer af1a545bdd Repaired the usage of `.prepare()` in conjunction with
cx_Oracle so that a return value of ``False`` will result
in no call to ``connection.commit()``, hence avoiding
"no transaction" errors.   Two-phase transactions have
now been shown to work in a rudimental fashion with
SQLAlchemy and cx_oracle, however are subject to caveats
observed with the driver; check the documentation
for details.  Also in 0.7.10.
[ticket:2611]
2012-12-06 19:10:06 -05:00
Derek Harland 72b1f475af Add several MSSQL dialect tests for sequence declarations 2012-12-04 14:49:03 +13:00
Audrius Kažukauskas 64505dcd28 HSTORE.comparator_factory should subclass Concatenable.Comparator 2012-11-21 00:26:20 +02:00
Audrius Kažukauskas 8134f2d0bf Add special containment operation methods for PG array type 2012-11-20 23:24:34 +02:00
Mike Bayer d1adef463a another hide from 2to3 test 2012-11-18 13:34:25 -05:00
Mike Bayer 1e29a74bd6 Fixed a gotcha where inadvertently calling list() on a
:class:`.ColumnElement` would go into an endless loop, if
      :meth:`.ColumnOperators.__getitem__` were implemented.
      A new NotImplementedError is emitted via ``__iter__()``.
2012-11-18 10:38:02 -05:00
Mike Bayer cda08307be - hstore documentation, migration
- don't need a custom exception here, just use ValueError
2012-11-17 22:58:23 -05:00
Mike Bayer 4356741c48 - hstore adjustments 2012-11-17 20:45:17 -05:00
Audrius Kažukauskas 812b1d8614 Add PostgreSQL HStore type support 2012-11-13 16:43:41 +02:00
Mike Bayer 6397a4ff4b Fixed bug in type_coerce() whereby typing information
could be lost if the statement were used as a subquery
inside of another statement, as well as other similar
situations.  Among other things, would cause
typing information to be lost when the Oracle/mssql dialects
would apply limit/offset wrappings. [ticket:2603]
2012-11-12 15:48:40 -05:00
Mike Bayer 017989ce8b - move out maxdb
- begin consolidating docs for dialects to be more self contained
- add a separate section for "external" dialects
- not sure how we're going to go with this yet.
2012-10-18 18:24:15 -04:00
Mike Bayer 084b559b44 - [feature] Added "collation" parameter to all
String types.  When present, renders as
    COLLATE <collation>.  This to support the
    COLLATE keyword now supported by several
    databases including MySQL, SQLite, and Postgresql.
    [ticket:2276]

  - [change] The Text() type renders the length
    given to it, if a length was specified.
2012-10-10 19:34:29 -04:00
Mike Bayer ce2c450917 - [feature] Added TIME type to mysql dialect,
accepts "fst" argument which is the new
    "fractional seconds" specifier for recent
    MySQL versions.  The datatype will interpret
    a microseconds portion received from the driver,
    however note that at this time most/all MySQL
    DBAPIs do not support returning this value.
    [ticket:2534]
- attempted to modernize the types tests in test_mysql a little, though has a long
way to go
2012-10-10 14:25:21 -04:00
Mike Bayer fab9be5d0e - [feature] the MS Access dialect has been
moved to its own project on Bitbucket,
    taking advantage of the new SQLAlchemy
    dialect compliance suite.   The dialect is
    still in very rough shape and probably not
    ready for general use yet, however
    it does have *extremely* rudimental
    functionality now.
2012-09-30 20:17:49 -04:00
Mike Bayer e35a6b91d6 - [bug] Fixed compiler bug whereby using a correlated
subquery within an ORDER BY would fail to render correctly
    if the stament also used LIMIT/OFFSET, due to mis-rendering
    within the ROW_NUMBER() OVER clause.  Fix courtesy
    sayap [ticket:2538]
2012-09-30 16:57:23 -04:00
Mike Bayer bba1d01b26 - [bug] The CreateIndex construct in Oracle
will now schema-qualify the name of the index
    to be that of the parent table.  Previously this
    name was omitted which apparently creates the
    index in the default schema, rather than that
    of the table.
2012-09-30 20:00:46 +00:00
Mike Bayer c0bba14268 - tighten mysql date test to not fail over 1 second boundaries (and probably microsecond boundaries once they support that...) 2012-09-30 11:00:00 -04:00