summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Regad <dregad@mantisbt.org>2025-03-23 00:37:16 +0100
committerDamien Regad <dregad@mantisbt.org>2025-03-23 00:40:09 +0100
commitcdaa6e04c794c10f030e7dae072092e5de5871f0 (patch)
treef083bf3855dd9f6bf4c123b924f17fc945a32769
parent33f466dd2b922bdd765898991e73c8d12673b29a (diff)
downloadadodb-cdaa6e04c794c10f030e7dae072092e5de5871f0.tar.gz
adodb-cdaa6e04c794c10f030e7dae072092e5de5871f0.tar.bz2
adodb-cdaa6e04c794c10f030e7dae072092e5de5871f0.zip
Fulfill SQLite PRIMARY KEY AUTOINCREMENT requirements
- Extend _CreateSuffix() with two additional parameters. - Adjust _createSuffix function name. - Add PHPDoc block - Fix spaces Fixes #1055 Signed-off-by: Damien Regad <dregad@mantisbt.org> Changes from PR: - Original commits squashed - Removed space after `&` for byref params - Updated Changelog
-rw-r--r--adodb-datadict.inc.php20
-rw-r--r--datadict/datadict-access.inc.php2
-rw-r--r--datadict/datadict-db2.inc.php2
-rw-r--r--datadict/datadict-firebird.inc.php2
-rw-r--r--datadict/datadict-informix.inc.php2
-rw-r--r--datadict/datadict-mssql.inc.php2
-rw-r--r--datadict/datadict-mssqlnative.inc.php2
-rw-r--r--datadict/datadict-mysql.inc.php2
-rw-r--r--datadict/datadict-oci8.inc.php2
-rw-r--r--datadict/datadict-postgres.inc.php2
-rw-r--r--datadict/datadict-sapdb.inc.php2
-rw-r--r--datadict/datadict-sqlite.inc.php9
-rw-r--r--datadict/datadict-sybase.inc.php2
-rw-r--r--docs/changelog.md2
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)