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
3248d5e4
Commit
3248d5e4
authored
Nov 01, 2006
by
zYne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Firebird connection driver updated
parent
b219cf4c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
4 deletions
+113
-4
Firebird.php
lib/Doctrine/Connection/Firebird.php
+113
-4
No files found.
lib/Doctrine/Connection/Firebird.php
View file @
3248d5e4
...
@@ -24,6 +24,7 @@ Doctrine::autoload('Doctrine_Connection');
...
@@ -24,6 +24,7 @@ Doctrine::autoload('Doctrine_Connection');
*
*
* @package Doctrine ORM
* @package Doctrine ORM
* @url www.phpdoctrine.com
* @url www.phpdoctrine.com
* @author Lorenzo Alberton <l.alberton@quipo.it> (PEAR MDB2 library)
* @license LGPL
* @license LGPL
*/
*/
class
Doctrine_Connection_Firebird
extends
Doctrine_Connection
{
class
Doctrine_Connection_Firebird
extends
Doctrine_Connection
{
...
@@ -31,17 +32,125 @@ class Doctrine_Connection_Firebird extends Doctrine_Connection {
...
@@ -31,17 +32,125 @@ class Doctrine_Connection_Firebird extends Doctrine_Connection {
* @var string $driverName the name of this connection driver
* @var string $driverName the name of this connection driver
*/
*/
protected
$driverName
=
'Firebird'
;
protected
$driverName
=
'Firebird'
;
/**
* the constructor
*
* @param Doctrine_Manager $manager
* @param PDO $pdo database handle
*/
public
function
__construct
(
Doctrine_Manager
$manager
,
PDO
$pdo
)
{
$this
->
supported
=
array
(
'sequences'
=>
true
,
'indexes'
=>
true
,
'affected_rows'
=>
true
,
'summary_functions'
=>
true
,
'order_by_text'
=>
true
,
'transactions'
=>
true
,
'savepoints'
=>
true
,
'current_id'
=>
true
,
'limit_queries'
=>
'emulated'
,
'LOBs'
=>
true
,
'replace'
=>
'emulated'
,
'sub_selects'
=>
true
,
'auto_increment'
=>
true
,
'primary_key'
=>
true
,
'result_introspection'
=>
true
,
'prepared_statements'
=>
true
,
'identifier_quoting'
=>
false
,
'pattern_escaping'
=>
true
);
// initialize all driver options
$this
->
options
[
'DBA_username'
]
=
false
;
$this
->
options
[
'DBA_password'
]
=
false
;
$this
->
options
[
'database_path'
]
=
''
;
$this
->
options
[
'database_extension'
]
=
'.gdb'
;
$this
->
options
[
'server_version'
]
=
''
;
parent
::
__construct
(
$manager
,
$pdo
);
}
/**
* Set the transacton isolation level.
*
* @param string standard isolation level (SQL-92)
* READ UNCOMMITTED (allows dirty reads)
* READ COMMITTED (prevents dirty reads)
* REPEATABLE READ (prevents nonrepeatable reads)
* SERIALIZABLE (prevents phantom reads)
*
* @param array some transaction options:
* 'wait' => 'WAIT' | 'NO WAIT'
* 'rw' => 'READ WRITE' | 'READ ONLY'
* @return void
*/
function
setTransactionIsolation
(
$isolation
,
$options
=
array
())
{
switch
(
$isolation
)
{
case
'READ UNCOMMITTED'
:
$ibase_isolation
=
'READ COMMITTED RECORD_VERSION'
;
break
;
case
'READ COMMITTED'
:
$ibase_isolation
=
'READ COMMITTED NO RECORD_VERSION'
;
break
;
case
'REPEATABLE READ'
:
$ibase_isolation
=
'SNAPSHOT'
;
break
;
case
'SERIALIZABLE'
:
$ibase_isolation
=
'SNAPSHOT TABLE STABILITY'
;
break
;
default
:
throw
new
Doctrine_Connection_Firebird_Exception
(
'isolation level is not supported: '
.
$isolation
);
}
if
(
!
empty
(
$options
[
'wait'
]))
{
switch
(
$options
[
'wait'
])
{
case
'WAIT'
:
case
'NO WAIT'
:
$wait
=
$options
[
'wait'
];
break
;
default
:
throw
new
Doctrine_Connection_Firebird_Exception
(
'wait option is not supported: '
.
$options
[
'wait'
]);
}
}
if
(
!
empty
(
$options
[
'rw'
]))
{
switch
(
$options
[
'rw'
])
{
case
'READ ONLY'
:
case
'READ WRITE'
:
$rw
=
$options
[
'wait'
];
break
;
default
:
throw
new
Doctrine_Connection_Firebird_Exception
(
'wait option is not supported: '
.
$options
[
'rw'
]);
}
}
$query
=
'SET TRANSACTION '
.
$rw
.
' '
.
$wait
.
' ISOLATION LEVEL '
.
$ibase_isolation
;
$this
->
dbh
->
query
(
$query
);
}
/**
* Set the charset on the current connection
*
* @param string charset
* @param resource connection handle
*
* @return void
*/
public
function
setCharset
(
$charset
)
{
$query
=
'SET NAMES '
.
$this
->
dbh
->
quote
(
$charset
);
$this
->
dbh
->
query
(
$query
);
}
/**
/**
* Adds an driver-specific LIMIT clause to the query
* Adds an driver-specific LIMIT clause to the query
*
*
* @param string $query
* @param string $query query to modify
* @param mixed $limit
* @param integer $limit limit the number of rows
* @param mixed $offset
* @param integer $offset start reading from given offset
* @return string modified query
*/
*/
public
function
modifyLimitQuery
(
$query
,
$limit
,
$offset
)
{
public
function
modifyLimitQuery
(
$query
,
$limit
,
$offset
)
{
return
preg_replace
(
'/^([\s(])*SELECT(?!\s*FIRST\s*\d+)/i'
,
if
(
$limit
>
0
)
{
$query
=
preg_replace
(
'/^([\s(])*SELECT(?!\s*FIRST\s*\d+)/i'
,
"SELECT FIRST
$limit
SKIP
$offset
"
,
$query
);
"SELECT FIRST
$limit
SKIP
$offset
"
,
$query
);
}
return
$query
;
}
}
/**
/**
* returns the next value in the given sequence
* returns the next value in the given sequence
...
...
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