Commit ffef34e766b922cf9341b81d64160423539fd123

Authored by conradverm
1 parent 3a3121f3

KTS-2541

"indexes must be applied to searchable fields when recreating indexes"
Updated.

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7447 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 22 additions and 5 deletions
bin/recreateIndexes.php
@@ -77,6 +77,7 @@ class IndexRecreator @@ -77,6 +77,7 @@ class IndexRecreator
77 var $primary; 77 var $primary;
78 var $globalstart; 78 var $globalstart;
79 var $start; 79 var $start;
  80 + var $tables;
80 81
81 function microtimeFloat() 82 function microtimeFloat()
82 { 83 {
@@ -257,7 +258,11 @@ class IndexRecreator @@ -257,7 +258,11 @@ class IndexRecreator
257 $this->addForeignKey('metadata_lookup_tree','document_field_id', 'document_fields','id'); 258 $this->addForeignKey('metadata_lookup_tree','document_field_id', 'document_fields','id');
258 // $this->addForeignKey('metadata_lookup_tree','metadata_lookup_tree_parent', '??','id'); 259 // $this->addForeignKey('metadata_lookup_tree','metadata_lookup_tree_parent', '??','id');
259 260
260 - $this->addForeignKey('mime_types','mime_document_id','mime_documents','id'); 261 + $this->addForeignKey('mime_types','mime_document_id','mime_documents','id', 'set null', 'set null');
  262 + $this->addForeignKey('mime_types','extractor_id','mime_extractors','id', 'set null', 'set null');
  263 +
  264 + $this->addForeignKey('mime_document_mapping','mime_type_id','mime_types','id');
  265 + $this->addForeignKey('mime_document_mapping','mime_document_id','mime_documents','id');
261 266
262 $this->addForeignKey('news','image_mime_type_id','mime_types','id'); 267 $this->addForeignKey('news','image_mime_type_id','mime_types','id');
263 268
@@ -398,6 +403,13 @@ class IndexRecreator @@ -398,6 +403,13 @@ class IndexRecreator
398 //$this->addIndex('document_types_lookup','disabled'); ? used 403 //$this->addIndex('document_types_lookup','disabled'); ? used
399 404
400 $this->addIndex('documents','created'); 405 $this->addIndex('documents','created');
  406 + $this->addIndex('documents','modified');
  407 + $this->addIndex('documents','full_path','','(255)');
  408 + $this->addIndex('documents','immutable');
  409 + $this->addIndex('documents','checkedout');
  410 +
  411 + $this->addIndex('document_content_version','filename','','(255)');
  412 + $this->addIndex('document_content_version','size');
401 413
402 $this->addIndex('field_behaviour_options',array('behaviour_id','field_id')); 414 $this->addIndex('field_behaviour_options',array('behaviour_id','field_id'));
403 415
@@ -516,20 +528,22 @@ class IndexRecreator @@ -516,20 +528,22 @@ class IndexRecreator
516 $this->_exec($sql); 528 $this->_exec($sql);
517 } 529 }
518 530
519 - function addIndex($table, $fields, $type='') 531 + function addIndex($table, $fields, $type='', $extra='')
520 { 532 {
  533 + if (!in_array($table, $this->tables)) return;
  534 +
521 if (!is_array($fields)) $fields = array($fields); 535 if (!is_array($fields)) $fields = array($fields);
522 $index = implode('_', $fields); 536 $index = implode('_', $fields);
523 //$index = str_replace('_id','',$index); 537 //$index = str_replace('_id','',$index);
524 $fields = implode(',',$fields); 538 $fields = implode(',',$fields);
525 - $sql = "alter table $table add $type index $index ($fields) "; 539 + $sql = "alter table $table add $type index $index ($fields$extra) ";
526 $this->_exec($sql); 540 $this->_exec($sql);
527 } 541 }
528 542
529 function addForeignKey($table, $field, $othertable, $otherfield, $ondelete='cascade', $onupdate='cascade') 543 function addForeignKey($table, $field, $othertable, $otherfield, $ondelete='cascade', $onupdate='cascade')
530 { 544 {
531 - if (!in_array($table, $this->tables)) continue;  
532 - if (!in_array($othertable, $this->tables)) continue; 545 + if (!in_array($table, $this->tables)) return;
  546 + if (!in_array($othertable, $this->tables)) return;
533 547
534 $sql = "alter table $table add foreign key ($field) references $othertable ($otherfield) "; 548 $sql = "alter table $table add foreign key ($field) references $othertable ($otherfield) ";
535 if ($ondelete != '') 549 if ($ondelete != '')
@@ -594,6 +608,8 @@ class IndexRecreator @@ -594,6 +608,8 @@ class IndexRecreator
594 $this->addPrimaryKey('metadata_lookup','id'); 608 $this->addPrimaryKey('metadata_lookup','id');
595 $this->addPrimaryKey('metadata_lookup_tree','id'); 609 $this->addPrimaryKey('metadata_lookup_tree','id');
596 $this->addPrimaryKey('mime_documents','id'); 610 $this->addPrimaryKey('mime_documents','id');
  611 + $this->addPrimaryKey('mime_extractors','id');
  612 + $this->addPrimaryKey('mime_extractors',array('mime_type_id','mime_document_id'));
597 $this->addPrimaryKey('mime_types','id'); 613 $this->addPrimaryKey('mime_types','id');
598 $this->addPrimaryKey('news','id'); 614 $this->addPrimaryKey('news','id');
599 $this->addPrimaryKey('notifications','id'); 615 $this->addPrimaryKey('notifications','id');
@@ -646,6 +662,7 @@ class IndexRecreator @@ -646,6 +662,7 @@ class IndexRecreator
646 662
647 function addPrimaryKey($table, $primarykey) 663 function addPrimaryKey($table, $primarykey)
648 { 664 {
  665 + if (!in_array($table, $this->tables)) return;
649 if (is_array($primarykey)) 666 if (is_array($primarykey))
650 { 667 {
651 $primarykey = implode(',', $primarykey); 668 $primarykey = implode(',', $primarykey);