From 6b166afffba348fdaa30c3d7e4bd247544da0797 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 3 Aug 2010 21:28:06 +0200 Subject: [PATCH] SQLite & SQLite3: improved primary key detection for ROWID --- dibi/drivers/sqlite.php | 13 +++++++++++++ dibi/drivers/sqlite3.php | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/dibi/drivers/sqlite.php b/dibi/drivers/sqlite.php index 85ff03d9..2bbf9c1a 100644 --- a/dibi/drivers/sqlite.php +++ b/dibi/drivers/sqlite.php @@ -478,6 +478,19 @@ class DibiSqliteDriver extends DibiObject implements IDibiDriver, IDibiReflector } $res[$index]['primary'] = (bool) $primary; } + if (!$res) { // @see http://www.sqlite.org/lang_createtable.html#rowid + foreach ($columns as $column) { + if ($column['vendor']['pk']) { + $res[] = array( + 'name' => 'ROWID', + 'unique' => TRUE, + 'primary' => TRUE, + 'columns' => array($column['name']), + ); + break; + } + } + } return array_values($res); } diff --git a/dibi/drivers/sqlite3.php b/dibi/drivers/sqlite3.php index 7136760a..32c82f36 100644 --- a/dibi/drivers/sqlite3.php +++ b/dibi/drivers/sqlite3.php @@ -464,6 +464,19 @@ class DibiSqlite3Driver extends DibiObject implements IDibiDriver, IDibiReflecto } $res[$index]['primary'] = (bool) $primary; } + if (!$res) { // @see http://www.sqlite.org/lang_createtable.html#rowid + foreach ($columns as $column) { + if ($column['vendor']['pk']) { + $res[] = array( + 'name' => 'ROWID', + 'unique' => TRUE, + 'primary' => TRUE, + 'columns' => array($column['name']), + ); + break; + } + } + } return array_values($res); }