Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
56e8e095
Commit
56e8e095
authored
Oct 09, 2013
by
Steve Müller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add SQL Anywhere 16 platform
parent
acb36036
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
199 additions
and
1 deletion
+199
-1
SQLAnywhere16Keywords.php
...octrine/DBAL/Platforms/Keywords/SQLAnywhere16Keywords.php
+53
-0
SQLAnywhere16Platform.php
lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php
+62
-0
ReservedWordsCommand.php
...trine/DBAL/Tools/Console/Command/ReservedWordsCommand.php
+4
-1
SQLAnywhere16PlatformTest.php
...ctrine/Tests/DBAL/Platforms/SQLAnywhere16PlatformTest.php
+80
-0
No files found.
lib/Doctrine/DBAL/Platforms/Keywords/SQLAnywhere16Keywords.php
0 → 100644
View file @
56e8e095
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Platforms\Keywords
;
/**
* SAP Sybase SQL Anywhere 16 reserved keywords list.
*
* @author Steve Müller <st.mueller@dzh-online.de>
*/
class
SQLAnywhere16Keywords
extends
SQLAnywhere12Keywords
{
/**
* {@inheritdoc}
*/
public
function
getName
()
{
return
'SQLAnywhere16'
;
}
/**
* {@inheritdoc}
*
* @link http://dcx.sybase.com/index.html#sa160/en/dbreference/alhakeywords.html
*/
protected
function
getKeywords
()
{
return
array_merge
(
parent
::
getKeywords
(),
array
(
'ARRAY'
,
'JSON'
,
'ROW'
,
'ROWTYPE'
,
'UNNEST'
,
'VARRAY'
));
}
}
\ No newline at end of file
lib/Doctrine/DBAL/Platforms/SQLAnywhere16Platform.php
0 → 100644
View file @
56e8e095
<?php
/*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This software consists of voluntary contributions made by many individuals
* and is licensed under the MIT license. For more information, see
* <http://www.doctrine-project.org>.
*/
namespace
Doctrine\DBAL\Platforms
;
use
Doctrine\Common\Proxy\Exception\UnexpectedValueException
;
use
Doctrine\DBAL\Schema\Index
;
/**
* The SQLAnywhere16Platform provides the behavior, features and SQL dialect of the
* SAP Sybase SQL Anywhere 16 database platform.
*
* @author Steve Müller <st.mueller@dzh-online.de>
* @link www.doctrine-project.org
* @since 2.5
*/
class
SQLAnywhere16Platform
extends
SQLAnywhere12Platform
{
/**
* {@inheritdoc}
*/
protected
function
getAdvancedIndexOptionsSQL
(
Index
$index
)
{
if
(
$index
->
hasFlag
(
'with_nulls_distinct'
)
&&
$index
->
hasFlag
(
'with_nulls_not_distinct'
))
{
throw
new
UnexpectedValueException
(
'An Index can have either have a "with_nulls_distinct" or "with_nulls_not_distinct" flag but not both.'
);
}
$sql
=
''
;
if
(
!
$index
->
isPrimary
()
&&
$index
->
isUnique
()
&&
$index
->
hasFlag
(
'with_nulls_distinct'
))
{
$sql
.=
' WITH NULLS DISTINCT'
;
}
return
$sql
.
parent
::
getAdvancedIndexOptionsSQL
(
$index
);
}
/**
* {@inheritdoc}
*/
protected
function
getReservedKeywordsClass
()
{
return
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere16Keywords'
;
}
}
lib/Doctrine/DBAL/Tools/Console/Command/ReservedWordsCommand.php
View file @
56e8e095
...
@@ -43,7 +43,8 @@ class ReservedWordsCommand extends Command
...
@@ -43,7 +43,8 @@ class ReservedWordsCommand extends Command
'db2'
=>
'Doctrine\DBAL\Platforms\Keywords\DB2Keywords'
,
'db2'
=>
'Doctrine\DBAL\Platforms\Keywords\DB2Keywords'
,
'sqlanywhere'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhereKeywords'
,
'sqlanywhere'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhereKeywords'
,
'sqlanywhere11'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere11Keywords'
,
'sqlanywhere11'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere11Keywords'
,
'sqlanywhere12'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere12Keywords'
'sqlanywhere12'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere12Keywords'
,
'sqlanywhere16'
=>
'Doctrine\DBAL\Platforms\Keywords\SQLAnywhere16Keywords'
,
);
);
/**
/**
...
@@ -99,6 +100,7 @@ The following keyword lists are currently shipped with Doctrine:
...
@@ -99,6 +100,7 @@ The following keyword lists are currently shipped with Doctrine:
* sqlanywhere
* sqlanywhere
* sqlanywhere11
* sqlanywhere11
* sqlanywhere12
* sqlanywhere12
* sqlanywhere16
* db2 (Not checked by default)
* db2 (Not checked by default)
EOT
EOT
);
);
...
@@ -126,6 +128,7 @@ EOT
...
@@ -126,6 +128,7 @@ EOT
'sqlanywhere'
,
'sqlanywhere'
,
'sqlanywhere11'
,
'sqlanywhere11'
,
'sqlanywhere12'
,
'sqlanywhere12'
,
'sqlanywhere16'
,
);
);
}
}
...
...
tests/Doctrine/Tests/DBAL/Platforms/SQLAnywhere16PlatformTest.php
0 → 100644
View file @
56e8e095
<?php
namespace
Doctrine\Tests\DBAL\Platforms
;
use
Doctrine\DBAL\Platforms\SQLAnywhere16Platform
;
use
Doctrine\DBAL\Schema\Index
;
use
Doctrine\DBAL\Schema\Sequence
;
class
SQLAnywhere16PlatformTest
extends
SQLAnywhere12PlatformTest
{
public
function
createPlatform
()
{
return
new
SQLAnywhere16Platform
;
}
public
function
testGeneratesCreateIndexWithAdvancedPlatformOptionsSQL
()
{
$this
->
assertEquals
(
'CREATE UNIQUE INDEX fooindex ON footable (a, b) WITH NULLS DISTINCT'
,
$this
->
_platform
->
getCreateIndexSQL
(
new
Index
(
'fooindex'
,
array
(
'a'
,
'b'
),
true
,
false
,
array
(
'with_nulls_distinct'
)
),
'footable'
)
);
// WITH NULLS DISTINCT clause not available on primary indexes.
$this
->
assertEquals
(
'ALTER TABLE footable ADD PRIMARY KEY (a, b)'
,
$this
->
_platform
->
getCreateIndexSQL
(
new
Index
(
'fooindex'
,
array
(
'a'
,
'b'
),
false
,
true
,
array
(
'with_nulls_distinct'
)
),
'footable'
)
);
// WITH NULLS DISTINCT clause not available on non-unique indexes.
$this
->
assertEquals
(
'CREATE INDEX fooindex ON footable (a, b)'
,
$this
->
_platform
->
getCreateIndexSQL
(
new
Index
(
'fooindex'
,
array
(
'a'
,
'b'
),
false
,
false
,
array
(
'with_nulls_distinct'
)
),
'footable'
)
);
parent
::
testGeneratesCreateIndexWithAdvancedPlatformOptionsSQL
();
}
public
function
testThrowsExceptionOnInvalidWithNullsNotDistinctIndexOptions
()
{
$this
->
setExpectedException
(
'UnexpectedValueException'
);
$this
->
_platform
->
getCreateIndexSQL
(
new
Index
(
'fooindex'
,
array
(
'a'
,
'b'
),
false
,
false
,
array
(
'with_nulls_distinct'
,
'with_nulls_not_distinct'
)
),
'footable'
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment