summaryrefslogtreecommitdiffstats
path: root/3rdparty
diff options
context:
space:
mode:
authorJörn Friedrich Dreyer <jfd@butonic.de>2012-09-12 23:01:06 +0200
committerJörn Friedrich Dreyer <jfd@butonic.de>2012-09-12 23:03:56 +0200
commit53b0e6dcc1c3d13ccf61ad35be74b774f97375d1 (patch)
tree9b735445ace1f09ae1f261bf8cea60c7302ebe22 /3rdparty
parentb2d60ed6b709333e1cab1c566bc3bdd677d5a3a6 (diff)
downloadnextcloud-server-53b0e6dcc1c3d13ccf61ad35be74b774f97375d1.tar.gz
nextcloud-server-53b0e6dcc1c3d13ccf61ad35be74b774f97375d1.zip
fix schema updates with oracle\n basically this took me all day to debug and hack, we need a new db layer! MDB2 is dead and pecl oci8 even more so! It has officially been deprecated in php 5.4: http://www.php.net/manual/de/function.ocifetchinto.php
Diffstat (limited to '3rdparty')
-rw-r--r--3rdparty/MDB2/Driver/Reverse/oci8.php48
-rw-r--r--3rdparty/MDB2/Driver/oci8.php53
2 files changed, 79 insertions, 22 deletions
diff --git a/3rdparty/MDB2/Driver/Reverse/oci8.php b/3rdparty/MDB2/Driver/Reverse/oci8.php
index c86847fa6b4..d89ad771374 100644
--- a/3rdparty/MDB2/Driver/Reverse/oci8.php
+++ b/3rdparty/MDB2/Driver/Reverse/oci8.php
@@ -84,12 +84,12 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
$owner = $db->dsn['username'];
}
- $query = 'SELECT column_name name,
- data_type "type",
- nullable,
- data_default "default",
- COALESCE(data_precision, data_length) "length",
- data_scale "scale"
+ $query = 'SELECT column_name AS "name",
+ data_type AS "type",
+ nullable AS "nullable",
+ data_default AS "default",
+ COALESCE(data_precision, data_length) AS "length",
+ data_scale AS "scale"
FROM all_tab_columns
WHERE (table_name=? OR table_name=?)
AND (owner=? OR owner=?)
@@ -146,6 +146,10 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
if ($default === 'NULL') {
$default = null;
}
+ //ugly hack, but works for the reverse direction
+ if ($default == "''") {
+ $default = '';
+ }
if ((null === $default) && $notnull) {
$default = '';
}
@@ -221,11 +225,11 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
$owner = $db->dsn['username'];
}
- $query = "SELECT aic.column_name,
- aic.column_position,
- aic.descend,
- aic.table_owner,
- alc.constraint_type
+ $query = 'SELECT aic.column_name AS "column_name",
+ aic.column_position AS "column_position",
+ aic.descend AS "descend",
+ aic.table_owner AS "table_owner",
+ alc.constraint_type AS "constraint_type"
FROM all_ind_columns aic
LEFT JOIN all_constraints alc
ON aic.index_name = alc.constraint_name
@@ -234,7 +238,7 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
WHERE (aic.table_name=? OR aic.table_name=?)
AND (aic.index_name=? OR aic.index_name=?)
AND (aic.table_owner=? OR aic.table_owner=?)
- ORDER BY column_position";
+ ORDER BY column_position';
$stmt = $db->prepare($query);
if (PEAR::isError($stmt)) {
return $stmt;
@@ -331,9 +335,9 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
\'SIMPLE\' "match",
CASE alc.deferrable WHEN \'NOT DEFERRABLE\' THEN 0 ELSE 1 END "deferrable",
CASE alc.deferred WHEN \'IMMEDIATE\' THEN 0 ELSE 1 END "initiallydeferred",
- alc.search_condition,
+ alc.search_condition AS "search_condition",
alc.table_name,
- cols.column_name,
+ cols.column_name AS "column_name",
cols.position,
r_alc.table_name "references_table",
r_cols.column_name "references_field",
@@ -509,14 +513,14 @@ class MDB2_Driver_Reverse_oci8 extends MDB2_Driver_Reverse_Common
return $db;
}
- $query = 'SELECT trigger_name,
- table_name,
- trigger_body,
- trigger_type,
- triggering_event trigger_event,
- description trigger_comment,
- 1 trigger_enabled,
- when_clause
+ $query = 'SELECT trigger_name AS "trigger_name",
+ table_name AS "table_name",
+ trigger_body AS "trigger_body",
+ trigger_type AS "trigger_type",
+ triggering_event AS "trigger_event",
+ description AS "trigger_comment",
+ 1 AS "trigger_enabled",
+ when_clause AS "when_clause"
FROM user_triggers
WHERE trigger_name = \''. strtoupper($trigger).'\'';
$types = array(
diff --git a/3rdparty/MDB2/Driver/oci8.php b/3rdparty/MDB2/Driver/oci8.php
index 9f4137d610c..a1eefc94d15 100644
--- a/3rdparty/MDB2/Driver/oci8.php
+++ b/3rdparty/MDB2/Driver/oci8.php
@@ -634,6 +634,59 @@ class MDB2_Driver_oci8 extends MDB2_Driver_Common
return $query;
}
+ /**
+ * Obtain DBMS specific SQL code portion needed to declare a generic type
+ * field to be used in statement like CREATE TABLE, without the field name
+ * and type values (ie. just the character set, default value, if the
+ * field is permitted to be NULL or not, and the collation options).
+ *
+ * @param array $field associative array with the name of the properties
+ * of the field being declared as array indexes. Currently, the types
+ * of supported field properties are as follows:
+ *
+ * default
+ * Text value to be used as default for this field.
+ * notnull
+ * Boolean flag that indicates whether this field is constrained
+ * to not be set to null.
+ * charset
+ * Text value with the default CHARACTER SET for this field.
+ * collation
+ * Text value with the default COLLATION for this field.
+ * @return string DBMS specific SQL code portion that should be used to
+ * declare the specified field's options.
+ * @access protected
+ */
+ function _getDeclarationOptions($field)
+ {
+ $charset = empty($field['charset']) ? '' :
+ ' '.$this->_getCharsetFieldDeclaration($field['charset']);
+
+ $notnull = empty($field['notnull']) ? ' NULL' : ' NOT NULL';
+ $default = '';
+ if (array_key_exists('default', $field)) {
+ if ($field['default'] === '') {
+ $db = $this->getDBInstance();
+ if (PEAR::isError($db)) {
+ return $db;
+ }
+ $valid_default_values = $this->getValidTypes();
+ $field['default'] = $valid_default_values[$field['type']];
+ if ($field['default'] === '' && ($db->options['portability'] & MDB2_PORTABILITY_EMPTY_TO_NULL)) {
+ $field['default'] = ' ';
+ }
+ }
+ if (null !== $field['default']) {
+ $default = ' DEFAULT ' . $this->quote($field['default'], $field['type']);
+ }
+ }
+
+ $collation = empty($field['collation']) ? '' :
+ ' '.$this->_getCollationFieldDeclaration($field['collation']);
+
+ return $charset.$default.$notnull.$collation;
+ }
+
// }}}
// {{{ _doQuery()