Conversation entries where id==0 would screw up the "re-auto-increment" sequencing
This commit is contained in:
parent
6924bb1d29
commit
05d3622939
@ -34,7 +34,7 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
class Conversation extends Managed_DataObject
|
||||
{
|
||||
public $__table = 'conversation'; // table name
|
||||
public $id; // int(4) primary_key not_null
|
||||
public $id; // int(4) primary_key not_null auto_increment
|
||||
public $uri; // varchar(191) unique_key not 255 because utf8mb4 takes more space
|
||||
public $created; // datetime not_null
|
||||
public $modified; // timestamp not_null default_CURRENT_TIMESTAMP
|
||||
@ -55,6 +55,32 @@ class Conversation extends Managed_DataObject
|
||||
);
|
||||
}
|
||||
|
||||
static public function beforeSchemaUpdate()
|
||||
{
|
||||
$table = strtolower(get_called_class());
|
||||
$schema = Schema::get();
|
||||
$schemadef = $schema->getTableDef($table);
|
||||
|
||||
// 2016-01-06 We have to make sure there is no conversation with id==0 since it will screw up auto increment resequencing
|
||||
if ($schemadef['fields']['id']['auto_increment']) {
|
||||
// since we already have auto incrementing ('serial') we can continue
|
||||
return;
|
||||
}
|
||||
|
||||
// The conversation will be recreated in upgrade.php, which will
|
||||
// generate a new URI, but that's collateral damage for you.
|
||||
$conv = new Conversation();
|
||||
$conv->id = 0;
|
||||
if ($conv->find()) {
|
||||
while ($conv->fetch()) {
|
||||
// Since we have filtered on 0 this only deletes such entries
|
||||
// which I have been afraid wouldn't work, but apparently does!
|
||||
// (I thought it would act as null or something and find _all_ conversation entries)
|
||||
$conv->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Factory method for creating a new conversation.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user