diff options
| -rw-r--r-- | adodb-datadict.inc.php | 20 | ||||
| -rw-r--r-- | datadict/datadict-access.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-db2.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-firebird.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-informix.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-mssql.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-mssqlnative.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-mysql.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-oci8.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-postgres.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-sapdb.inc.php | 2 | ||||
| -rw-r--r-- | datadict/datadict-sqlite.inc.php | 9 | ||||
| -rw-r--r-- | datadict/datadict-sybase.inc.php | 2 | ||||
| -rw-r--r-- | docs/changelog.md | 2 |
14 files changed, 36 insertions, 17 deletions
diff --git a/adodb-datadict.inc.php b/adodb-datadict.inc.php index 1282fbf0..29f2120c 100644 --- a/adodb-datadict.inc.php +++ b/adodb-datadict.inc.php @@ -845,7 +845,7 @@ class ADODB_DataDict { $fdefault = $this->connection->qstr($fdefault); } } - $suffix = $this->_createSuffix($fname,$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned); + $suffix = $this->_createSuffix($fname, $ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, $pkey); // add index creation if ($widespacing) $fname = str_pad($fname,24); @@ -898,8 +898,22 @@ class ADODB_DataDict { } - // return string must begin with space - function _createSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + /** + * Construct an database specific SQL string of constraints for column. + * + * @param string $fname column name + * @param string & $ftype column type + * @param bool $fnotnull NOT NULL flag + * @param string|bool $fdefault DEFAULT value + * @param bool $fautoinc AUTOINCREMENT flag + * @param string $fconstraint CONSTRAINT value + * @param bool $funsigned UNSIGNED flag + * @param string|bool $fprimary PRIMARY value + * @param array & $pkey array of primary key column names + * + * @return string Combined constraint string, must start with a space + */ + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; diff --git a/datadict/datadict-access.inc.php b/datadict/datadict-access.inc.php index b3f9fad0..00fdeb1e 100644 --- a/datadict/datadict-access.inc.php +++ b/datadict/datadict-access.inc.php @@ -69,7 +69,7 @@ class ADODB2_access extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname, &$ftype, $fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { if ($fautoinc) { $ftype = 'COUNTER'; diff --git a/datadict/datadict-db2.inc.php b/datadict/datadict-db2.inc.php index 9ac106bb..989f0899 100644 --- a/datadict/datadict-db2.inc.php +++ b/datadict/datadict-db2.inc.php @@ -72,7 +72,7 @@ class ADODB2_db2 extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if ($fautoinc) return ' GENERATED ALWAYS AS IDENTITY'; # as identity start with diff --git a/datadict/datadict-firebird.inc.php b/datadict/datadict-firebird.inc.php index 79d0a8f5..b17e0a22 100644 --- a/datadict/datadict-firebird.inc.php +++ b/datadict/datadict-firebird.inc.php @@ -135,7 +135,7 @@ class ADODB2_firebird extends ADODB_DataDict } - function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; diff --git a/datadict/datadict-informix.inc.php b/datadict/datadict-informix.inc.php index 9e151633..a69590ce 100644 --- a/datadict/datadict-informix.inc.php +++ b/datadict/datadict-informix.inc.php @@ -81,7 +81,7 @@ class ADODB2_informix extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname, &$ftype, $fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { if ($fautoinc) { $ftype = 'SERIAL'; diff --git a/datadict/datadict-mssql.inc.php b/datadict/datadict-mssql.inc.php index 17df9e39..aeeafa64 100644 --- a/datadict/datadict-mssql.inc.php +++ b/datadict/datadict-mssql.inc.php @@ -177,7 +177,7 @@ class ADODB2_mssql extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; diff --git a/datadict/datadict-mssqlnative.inc.php b/datadict/datadict-mssqlnative.inc.php index 59228cbe..ca77340a 100644 --- a/datadict/datadict-mssqlnative.inc.php +++ b/datadict/datadict-mssqlnative.inc.php @@ -269,7 +269,7 @@ class ADODB2_mssqlnative extends ADODB_DataDict { // return string must begin with space /** @noinspection DuplicatedCode */ - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; diff --git a/datadict/datadict-mysql.inc.php b/datadict/datadict-mysql.inc.php index 9efbba1f..a1ca1115 100644 --- a/datadict/datadict-mysql.inc.php +++ b/datadict/datadict-mysql.inc.php @@ -143,7 +143,7 @@ class ADODB2_mysql extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if ($funsigned) $suffix .= ' UNSIGNED'; diff --git a/datadict/datadict-oci8.inc.php b/datadict/datadict-oci8.inc.php index 6d2cd244..388f649c 100644 --- a/datadict/datadict-oci8.inc.php +++ b/datadict/datadict-oci8.inc.php @@ -199,7 +199,7 @@ class ADODB2_oci8 extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; diff --git a/datadict/datadict-postgres.inc.php b/datadict/datadict-postgres.inc.php index 89bcc0ad..74730c6a 100644 --- a/datadict/datadict-postgres.inc.php +++ b/datadict/datadict-postgres.inc.php @@ -399,7 +399,7 @@ class ADODB2_postgres extends ADODB_DataDict } // return string must begin with space - function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { if ($fautoinc) { $ftype = 'SERIAL'; diff --git a/datadict/datadict-sapdb.inc.php b/datadict/datadict-sapdb.inc.php index c469800f..48cb9ad8 100644 --- a/datadict/datadict-sapdb.inc.php +++ b/datadict/datadict-sapdb.inc.php @@ -104,7 +104,7 @@ class ADODB2_sapdb extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if ($funsigned) $suffix .= ' UNSIGNED'; diff --git a/datadict/datadict-sqlite.inc.php b/datadict/datadict-sqlite.inc.php index d565f887..699be09f 100644 --- a/datadict/datadict-sqlite.inc.php +++ b/datadict/datadict-sqlite.inc.php @@ -74,13 +74,16 @@ class ADODB2_sqlite extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; - if ($funsigned) $suffix .= ' UNSIGNED'; + if ($funsigned && !($fprimary && $fautoinc)) $suffix .= ' UNSIGNED'; if ($fnotnull) $suffix .= ' NOT NULL'; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; - if ($fautoinc) $suffix .= ' AUTOINCREMENT'; + if ($fprimary && $fautoinc) { + $suffix .= ' PRIMARY KEY AUTOINCREMENT'; + array_pop($pkey); + } if ($fconstraint) $suffix .= ' '.$fconstraint; return $suffix; } diff --git a/datadict/datadict-sybase.inc.php b/datadict/datadict-sybase.inc.php index d6573dfa..4a917aa8 100644 --- a/datadict/datadict-sybase.inc.php +++ b/datadict/datadict-sybase.inc.php @@ -139,7 +139,7 @@ class ADODB2_sybase extends ADODB_DataDict { } // return string must begin with space - function _CreateSuffix($fname,&$ftype,$fnotnull,$fdefault,$fautoinc,$fconstraint,$funsigned) + function _createSuffix($fname, &$ftype, $fnotnull, $fdefault, $fautoinc, $fconstraint, $funsigned, $fprimary, &$pkey) { $suffix = ''; if (strlen($fdefault)) $suffix .= " DEFAULT $fdefault"; diff --git a/docs/changelog.md b/docs/changelog.md index 8d6f9991..b089d06d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -18,6 +18,8 @@ Older changelogs: ### Fixed +- sqlite: Fulfill PRIMARY KEY AUTOINCREMENT requirements + [#1055](https://github.com/ADOdb/ADOdb/issues/1055) - sqlite: fix error reporting [#1061](https://github.com/ADOdb/ADOdb/issues/1061) |
