<?xml version="1.0" encoding="UTF-8"?>
<package packagerversion="1.9.1" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
 <name>MDB2_Driver_mssql</name>
 <channel>pear.php.net</channel>
 <summary>mssql MDB2 driver</summary>
 <description>This is the MS SQL Server MDB2 driver.</description>
 <lead>
  <name>David Coallier</name>
  <user>davidc</user>
  <email>davidc@agoraproduction.com</email>
  <active>yes</active>
 </lead>
 <lead>
  <name>Lukas Kahwe Smith</name>
  <user>lsmith</user>
  <email>smith@pooteeweet.org</email>
  <active>no</active>
 </lead>
 <lead>
  <name>Nathan Fredrickson</name>
  <user>nrf</user>
  <email>nathan@silverorange.com</email>
  <active>yes</active>
 </lead>
 <lead>
  <name>Lorenzo Alberton</name>
  <user>quipo</user>
  <email>l.alberton@quipo.it</email>
  <active>yes</active>
 </lead>
 <helper>
  <name>Ali Fazelzadeh</name>
  <user>afz</user>
  <email>afz@dev-code.com</email>
  <active>yes</active>
 </helper>
 <date>2010-08-29</date>
 <time>12:46:42</time>
 <version>
  <release>1.5.0b3</release>
  <api>1.5.0b3</api>
 </version>
 <stability>
  <release>beta</release>
  <api>beta</api>
 </stability>
 <license>BSD License</license>
 <notes>
- Fixed bug #16612: Added the timestamp database attribute [genericbob]
- fixed bug #16118: escape doesn&apos;t take into account trailing backslashes [urkle]
- request #16903: Add ability to use ODBTP extension [hedroom]
- fixed numRows() with setLimit()

open todo items:
- explore fast limit/offset emulation (Request #4544)
 </notes>
 <contents>
  <dir baseinstalldir="/" name="/">
   <dir name="MDB2">
    <dir name="Driver">
     <dir name="Datatype">
      <file name="mssql.php" role="php">
       <tasks:replace from="@package_version@" to="version" type="package-info" />
      </file>
     </dir> <!-- /MDB2/Driver/Datatype -->
     <dir name="Function">
      <file name="mssql.php" role="php">
       <tasks:replace from="@package_version@" to="version" type="package-info" />
      </file>
     </dir> <!-- /MDB2/Driver/Function -->
     <dir name="Manager">
      <file name="mssql.php" role="php">
       <tasks:replace from="@package_version@" to="version" type="package-info" />
      </file>
     </dir> <!-- /MDB2/Driver/Manager -->
     <dir name="Native">
      <file name="mssql.php" role="php">
       <tasks:replace from="@package_version@" to="version" type="package-info" />
      </file>
     </dir> <!-- /MDB2/Driver/Native -->
     <dir name="Reverse">
      <file name="mssql.php" role="php">
       <tasks:replace from="@package_version@" to="version" type="package-info" />
      </file>
     </dir> <!-- /MDB2/Driver/Reverse -->
     <file name="mssql.php" role="php">
      <tasks:replace from="@package_version@" to="version" type="package-info" />
     </file>
    </dir> <!-- /MDB2/Driver -->
   </dir> <!-- /MDB2 -->
   <dir name="tests">
    <file name="MDB2_nonstandard_mssql.php" role="test" />
   </dir> <!-- /tests -->
   <file name="package_mssql.xml" role="data" />
  </dir> <!-- / -->
 </contents>
 <dependencies>
  <required>
   <php>
    <min>5.3.0</min>
   </php>
   <pearinstaller>
    <min>1.9.1</min>
   </pearinstaller>
   <package>
    <name>MDB2</name>
    <channel>pear.php.net</channel>
    <min>2.5.0b3</min>
   </package>
   <extension>
    <name>mssql</name>
   </extension>
  </required>
 </dependencies>
 <phprelease />
 <changelog>
  <release>
   <version>
    <release>1.5.0b3</release>
    <api>1.5.0b3</api>
   </version>
   <stability>
    <release>beta</release>
    <api>beta</api>
   </stability>
   <date>2010-08-29</date>
   <license>BSD License</license>
   <notes>
- Fixed bug #16612: Added the timestamp database attribute [genericbob]
- fixed bug #16118: escape doesn&apos;t take into account trailing backslashes [urkle]
- request #16903: Add ability to use ODBTP extension [hedroom]
- fixed numRows() with setLimit()

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.3.0b2</release>
    <api>1.3.0b2</api>
   </version>
   <stability>
    <release>beta</release>
    <api>beta</api>
   </stability>
   <date>2009-01-14</date>
   <license>BSD License</license>
   <notes>
- fixed bug #11571: when using setLimit(), numRows() returns wrong values
- fixed bug #12117: disconnect() does not work as documented
- fixed bug #14019: MDB2 is not aware of MS-SQL &apos;smalldatetime&apos; type

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.3.0b1</release>
    <api>1.3.0b1</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2008-03-15</date>
   <license>BSD License</license>
   <notes>
- fixed bug #12391: fixed lastInsertID() (thanks to Marius Toma)
- fixed bug #12599: BLOB quoting incorrect (thanks to Ferdy Hanssen)
- fixed bug #12697: MDB2_Driver_mssql fails to load with the sybase_ct extension
- request #12731: added truncateTable() in the Manager module
- request #12732: added vacuum() in the Manager module for OPTIMIZE/VACUUM TABLE abstraction
- request #12800: added alterDatabase() in the Manager module [afz]
- fixed bug #12924: correctly handle internal expected errors even with custom error handling
- extended alterTable() support in the Manager module [afz]
- added standaloneQuery() and databaseExists()
- request #13106: added unixtimestamp() in the Function module

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.3.0a2</release>
    <api>1.3.0a2</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2007-12-06</date>
   <license>BSD License</license>
   <notes>
- fixed bug #11571: when using setLimit(), numRows() returns wrong values
- request #12012: added collation support in createDatabase() and in createTable()
  for table fields

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.3.0a1</release>
    <api>1.3.0a1</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2007-10-28</date>
   <license>BSD License</license>
   <notes>
- initial support for FOREIGN KEY and CHECK constraints in the Reverse and Manager modules
- fixed bug #9735, #11175, #11228: two instances fail to keep different databases selected
- request #11297: added support for &quot;schema.table&quot; notation in the Reverse module
- request #11445: added support for unicode datatypes (nchar, nvarchar, ntext)
- fixed bug #11479: wrong query in nextID()
- fixed bug #11790: avoid array_diff() because it has a memory leak in PHP 5.1.x
- request #11797: don&apos;t use mssql_field_name() in listTableFields() in the Manager module
  since it only returns the first 30 chars
- fixed bug #12010: MDB2_PORTABILITY_RTRIM option was ignored
- fixed bug #12083: createTable() in the Manager module now returns MDB2_OK on success,
  as documented
- fixed bug #12269: tableInfo() in the Reverse module detect &apos;clob&apos; data type
  as first option

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.2.1</release>
    <api>1.2.1</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2007-05-03</date>
   <license>BSD License</license>
   <notes>
- return length as &quot;precision,scale&quot; for NUMERIC and DECIMAL fields in mapNativeDatatype()
- in getTableIndexDefinition() and getTableConstraintDefinition() in the Reverse
  module, also return the field position in the index/constraint

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.2.0</release>
    <api>1.2.0</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2007-03-13</date>
   <license>BSD License</license>
   <notes>
- added ability to escape wildcard characters in escape() and quote()
- added setTransactionIsolation()
- added savepoint support to beginTransaction(), commit() and rollback()
- added debug() call at the end of a query/prepare/execute calling (Request #7933)
- added context array parameter to debug() and make use of it whereever sensible
- added optional method name parameter to raiseError() and use whereever possible
- added ability to escape wildcard characters in escape() and quote()
- added debug() call at the end of a query/prepare/execute calling (Request #7933)
- added &apos;nativetype&apos; output to tableInfo() and getTableFieldDefinition()
- added &apos;mdb2type&apos; output to getTableFieldDefinition()
- reworked tableInfo() to use a common implementation based on getTableFieldDefinition()
  when a table name is passed (Bug #8124)
- fixed incorrect regex in mapNativeDatatype() (Bug #8256) (thx ioz at ionosfera dot com)
- use old DSN when rolling back open transactions in disconnect()
- MSSQL requires making columns exlicitly NULLable (Bug #8359)
- do not list empty contraints and indexes
- added support for autoincrement via IDENTITY in getDeclaration()
- ALTER TABLE bug when adding more than 1 column (Bug #8373)
- fixed handling return values when disable_query is set in _doQuery() and _execute()
- added dropIndex() to the manager module
- increased MDB2 dependency to XXX
- renamed valid_types property to valid_default_values in the Datatype module
- increased PHP dependency due to bug #31195
- using &apos;ADD COLUMN&apos; syntax instead of just &apos;ADD&apos; in alterTable()
- fixed bug #9024: typo in error checking
- fixed inheritance structure of convertResult()
- added support for new &apos;disable_iso_date&apos; date DSN option (Request #8739)
- fix typos in error handling in a few places (bug #9024)
- do not skip id generation in nextId() when creating a sequence on demand
  because this prevents lastInsertID() from working
- added support for more error codes (patch by Adam Harvey)
- migrated to package.xml version 2
- implemented getTableFieldDefinition() in the Reverse module
- implemented getTableIndexDefinition() in the Reverse module
- implemented getTableConstraintDefinition() in the Reverse module
- implemented getTriggerDefinition() in the Reverse module
- implemented listTableConstraints() in the Manager module
- implemented listFunctions() in the Manager module
- implemented listDatabases() in the Manager module
- implemented listUsers() in the Manager module
- implemented guid() in the Function module [globally unique identifier]
- implemented a fallback mechanism within getTableIndexDefinition() in the Reverse
  module to ignore the &apos;idxname_format&apos; option and use the index name as provided
  in case of failure before returning an error
- added a &apos;nativetype_map_callback&apos; option to map native data declarations back to
  custom data types (thanks to Andrew Hill).
- added missing integer data types and their length in _mapNativeDatatype()
- phpdoc fixes

open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.1.2</release>
    <api>1.1.2</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2007-01-10</date>
   <license>BSD License</license>
   <notes>
- removed mysql_select_db and used mssql_select_db


open todo items:
- explore fast limit/offset emulation (Request #4544)
   </notes>
  </release>
  <release>
   <version>
    <release>1.1.0</release>
    <api>1.1.0</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2006-06-15</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
- added the listTableTriggers() method to the Manager.
- added the listViews() method to the Manager.
- aligned _modifyQuery() signature and phpdoc
- added the map datatype patch for (bug #6863)
- added support for length in reverse engineering of integer fields
- added &apos;result_introspection&apos; supported metadata support
- fixed alterTable() when adding/dropping multiple columns
- properly quote table names in tableInfo() (related to bug #6573)
- use connected_server_info in getServerVersion() as a cache cache
- use parent::disconnect() in disconnect()
- added support for length in integer reverse engineering
- some fixes regarding boolean reverse engineering
- protect against sql injection in the reverse and manager module
- explicitly set is_manip parameter to false for transaction debug calls
- various minor tweaks to error messages, phpdoc and adding stub methods to the
  common driver
- typo fixes in phpdoc (thx Stoyan)
- added support for fixed and variable types for &apos;text&apos; in declarations,
  as well as in reverse engineering (Request #1523)
- made _doQuery() return a reference
- added userinfo&apos;s to all raiseError calls that previously had none
- added &apos;prepared_statements&apos; supported meta data setting
- limit fetch to 1 row in listTableFields()
- use setCharset() in connect()/_doConnect()
- generalized quoteIdentifier() with a property
- drop parentheses from executeStoredProc() syntax (bug #7855)
- switched most array_key_exists() calls to !empty() to improve readability and performance
- fixed a few edge cases and potential warnings
- added ability to rewrite queries for query(), exec() and prepare() using a debug handler callback
- added implementation for now() and substring() (Request #7774)
- check if result/connection has not yet been freed/dicsonnected before
  attempting to free a result set(Bug #7790)
- fix range offsets (bug #7448)
- revert change that would prefer &apos;clob&apos; over &apos;text&apos; for TEXT fields
  (this was breaking runtime instrospection)
- use SCOPE_IDENTITY() when version &gt;= 8 (SQL Server 2000) otherwise fallback to
  @@IDENTITY to retrieve last inserted value (bug #7291)
- implement getServerVersion()
- removed bogus but unharmful code from mapNativeDatatype()
   </notes>
  </release>
  <release>
   <version>
    <release>1.0.1</release>
    <api>1.0.1</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2006-04-16</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
- added the listTableTriggers() method to the Manager.
- added the listViews() method to the Manager.
- aligned _modifyQuery() signature and phpdoc
- added the map datatype patch for (bug #6863)
- added support for length in reverse engineering of integer fields
- added &apos;result_introspection&apos; supported metadata support
- fixed alterTable() when adding/dropping multiple columns
- properly quote table names in tableInfo() (related to bug #6573)
- use connected_server_info in getServerVersion() as a cache cache
- use parent::disconnect() in disconnect()
- added support for length in integer reverse engineering
- some fixes regarding boolean reverse engineering
- protect against sql injection in the reverse and manager module
   </notes>
  </release>
  <release>
   <version>
    <release>1.0.0</release>
    <api>1.0.0</api>
   </version>
   <stability>
    <release>stable</release>
    <api>stable</api>
   </stability>
   <date>2006-02-09</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
- unified case fixing in the list*() methods
- use getConnection() to access connection property
- split index and constraint handling
- quote identifiers where possible inside the manager methods depending on
  the new &apos;quote_identifier&apos; option (defaults to off)
- refactored get*Declaration() methods to use getTypeDeclaration()
- setting in_transaction to false on disconnect
- added new Function modules to handle difference in SQL functions
- force rollback() with open transactions on disconnect
- escape floats to make sure they do not contain evil characters (bug #5608)
- split off manipulation queries into exec() method from the query() method *BC BREAK*
- only if result_types is set to false in prepare() method the query will be
  handled as a DML statement *BC BREAK*
- use lastInsertID() method in nextID()
- cleanup _checkSequence() method to not raise errors when no table was found
- added &apos;mdbtype&apos; to tableInfo() output
- changed &apos;len&apos; to &apos;length&apos; in tableInfo() output *BC BREAK*
- explicitly pass if the module is phptype specific in all loadModule calls (bug #6226)
- fixed signature of quoteIdentifier() to make second param optional
- fixed signature of executeStoredProc()
- typo fixes in error handling of nextResult() and numRows() calls
- nextResult() returns false if there are no more result sets to read
- _fixIndexName() now just attempts to remove possible formatting
- renamed _isSequenceName() to _fixSequenceName()
- _fixSequenceName() now just attempts to remove possible formatting, and only
  returns a boolean if no formatting was applied when the new &quot;check&quot; parameter is set to true
- added support for length in decimal columns
- removed ugly hack for quote parameter in quote() since it was insufficient
  (escaping also needs to be prevented)
- handle null as resource when disable_query option is enabled in result object

open todo items:
- add missing index/contraint methods to the manager and reverse module methods
- ensure that all primary/unique/foreign key handling is only in the contraint methods
- fix alterTable()
   </notes>
  </release>
  <release>
   <version>
    <release>0.2.0</release>
    <api>0.2.0</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2005-12-18</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
- unified case fixing in the list*() methods
- use getConnection() to access connection property
- split index and constraint handling
- quote identifiers where possible inside the manager methods depending on
  the new &apos;quote_identifier&apos; option (defaults to off)
- refactored get*Declaration() methods to use getTypeDeclaration()
- setting in_transaction to false on disconnect
- added new Function modules to handle difference in SQL functions
- force rollback() with open transactions on disconnect
- escape floats to make sure they do not contain evil characters (bug #5608)
- split off manipulation queries into exec() method from the query() method *BC BREAK*
- only if result_types is set to false in prepare() method the query will be
  handled as a DML statement *BC BREAK*
- use lastInsertID() method in nextID()
- cleanup _checkSequence() method to not raise errors when no table was found
- added &apos;mdbtype&apos; to tableInfo() output
- changed &apos;len&apos; to &apos;length&apos; in tableInfo() output *BC BREAK*

open todo items:
- added missing index/contraint methods to the manager and reverse module methods
- ensure that all primary/unique/foreign key handling is only in the contraint methods
   </notes>
  </release>
  <release>
   <version>
    <release>0.1.1</release>
    <api>0.1.1</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2005-10-10</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
Warning: this release features numerous BC breaks!

There have been considerable improvements to the datatype, manager and reverse
modules. Furthermore preliminary support for auto increment and primary keys
has been added. Please note that making a field auto increment implies a single
column primary key on this field.

- increased php dependency to 4.3.0 due to the usage of the streams API since beta5
- MDB2_MSSQL_Driver: fixed a bug about missing msg variable,
  fixed problem with database creation (incorrect ON clause)
- alterTable now needs the full definition to work (use getTableFieldDefinition
 from Reverse module if you do not have a definition at hand) this eliminates the need
 of the declaration part in the alterTable array.
- fix typo in error code mapping
- fixed problem with database creation (incorrect ON clause)
- fixed listTableIndexes()
- fix PHP4.4 breakage
- moved getInsertID() into core as lastInsertID()
- MDB2_ERROR does not evaluate to false in _skipLimitOffset()
- use !empty() instead of isset() in fetchRow to determine if result cols were bound or result types were set
- moved all private fetch mode fix methods into _fixResultArrayValues() for performance reasons
- renamed MDB2_PORTABILITY_LOWERCASE to MDB2_PORTABILITY_FIX_CASE and use &apos;field_case&apos; option to determine if to upper- or lowercase (CASE_LOWER/CASE_UPPER)
- fixed bug in nextID (bug #5507)
- fixed bug in sequence handling in the manager module (bug #5507)
- use array_key_exists() instead of isset() where possible
- changed structure of field add/remove/change in alterTable() to match MDB2_Schema
- return 0 for manipulation queries when disable_query is enabled

open todo items:
- added missing createIndex() method
   </notes>
  </release>
  <release>
   <version>
    <release>0.1.0</release>
    <api>0.1.0</api>
   </version>
   <stability>
    <release>alpha</release>
    <api>alpha</api>
   </stability>
   <date>2005-04-29</date>
   <license uri="http://www.example.com">BSD License</license>
   <notes>
first unbundled release from MDB2 core

- dont just check for isset() for boolean values in order to support
  setting them false as well (bug #4373)
- ensure SQL injection protection in all _quote() methods (was missing in
  some decimal, float, time, date and timestamp implementations)
- typo fixes in constructor
- Warning: this release is untested
   </notes>
  </release>
 </changelog>
</package>