From 402fbc20b7ce5919bedd8c8b5970670b7020bde7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Tue, 28 Jul 2026 16:37:26 +0200 Subject: [PATCH 1/8] IBX-11939: Carried 5.0-specific migration work forward onto rebuilt 4.6 base Squashes the net effect of the 16 commits previously on this branch (since the old base/ibx-11939-4.6-merged-5.0 merge point) into one commit. Most of those commits were parallel duplicates of work already landed on the 4.6 feature branch and merged forward via the rebuilt base branch; only the genuinely 5.0-specific delta is carried here: - RenameSchemaTo5_0Migration + supporting SQL: renames the legacy ez* schema to the ibexa_* naming scheme introduced in 5.0. - FixLegacyIdentifiersMigration + supporting SQL: fixes legacy identifiers as part of that rename. - InstallSchemaMigration: idempotency guard checks the post-rename "ibexa_content" table name instead of "ezcontentobject". - services.yml: registers both new migrations as tagged services. - composer.json: points ibexa/doctrine-migrations at its 5.0 branch. --- composer.json | 2 +- .../FixLegacyIdentifiersMigration.php | 58 ++ .../Migration/InstallSchemaMigration.php | 2 +- .../Migration/RenameSchemaTo5_0Migration.php | 56 ++ .../SchemaBuilderEventSchemaProvider.php | 5 +- .../sql/fix-legacy-identifiers-mysql.sql | 5 + .../sql/fix-legacy-identifiers-postgresql.sql | 5 + .../sql/fix-legacy-identifiers-sqlite.sql | 5 + .../sql/rename-schema-to-5-0-mysql.sql | 353 +++++++++++ .../sql/rename-schema-to-5-0-postgresql.sql | 415 +++++++++++++ .../sql/rename-schema-to-5-0-sqlite.sql | 555 ++++++++++++++++++ .../Resources/config/services.yml | 16 + 12 files changed, 1471 insertions(+), 6 deletions(-) create mode 100644 src/bundle/RepositoryInstaller/Migration/FixLegacyIdentifiersMigration.php create mode 100644 src/bundle/RepositoryInstaller/Migration/RenameSchemaTo5_0Migration.php create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-mysql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-postgresql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-sqlite.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-mysql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-postgresql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-sqlite.sql diff --git a/composer.json b/composer.json index 1106c2682b..3905acfdd4 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "friendsofphp/proxy-manager-lts": "^1.0", "friendsofsymfony/http-cache-bundle": "^3.0", "friendsofsymfony/jsrouting-bundle": "^3.5", - "ibexa/doctrine-migrations": "dev-feat/doctrine-migrations", + "ibexa/doctrine-migrations": "dev-feat/doctrine-migrations-5.0", "ibexa/doctrine-schema": "~5.0.x-dev", "ibexa/jms-translation-bundle": "^2.6.0", "league/flysystem-memory": "^2.0.6", diff --git a/src/bundle/RepositoryInstaller/Migration/FixLegacyIdentifiersMigration.php b/src/bundle/RepositoryInstaller/Migration/FixLegacyIdentifiersMigration.php new file mode 100644 index 0000000000..eeb416e905 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/FixLegacyIdentifiersMigration.php @@ -0,0 +1,58 @@ +abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); + + if ($this->isMySQL()) { + $this->addSqlFile(__DIR__ . '/sql/fix-legacy-identifiers-mysql.sql'); + } elseif ($this->isPostgreSQL()) { + $this->addSqlFile(__DIR__ . '/sql/fix-legacy-identifiers-postgresql.sql'); + } elseif ($this->isSqlite()) { + $this->addSqlFile(__DIR__ . '/sql/fix-legacy-identifiers-sqlite.sql'); + } + } +} diff --git a/src/bundle/RepositoryInstaller/Migration/InstallSchemaMigration.php b/src/bundle/RepositoryInstaller/Migration/InstallSchemaMigration.php index fc7d0b875a..b68f8392e2 100644 --- a/src/bundle/RepositoryInstaller/Migration/InstallSchemaMigration.php +++ b/src/bundle/RepositoryInstaller/Migration/InstallSchemaMigration.php @@ -39,7 +39,7 @@ public function up(Schema $schema): void // migration creates): an install that built its schema via schema.yaml (rather than // through this migration) never has "ezcontentobject" -- it already has // "ibexa_content" directly. - if ($schema->hasTable('ezcontentobject')) { + if ($schema->hasTable('ibexa_content')) { return; } diff --git a/src/bundle/RepositoryInstaller/Migration/RenameSchemaTo5_0Migration.php b/src/bundle/RepositoryInstaller/Migration/RenameSchemaTo5_0Migration.php new file mode 100644 index 0000000000..255b4707ba --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/RenameSchemaTo5_0Migration.php @@ -0,0 +1,56 @@ +abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); + + if ($schema->hasTable('ibexa_content')) { + return; + } + + if ($this->isMySQL()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-mysql.sql'); + } elseif ($this->isPostgreSQL()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-postgresql.sql'); + } elseif ($this->isSqlite()) { + $this->addSqlFile(__DIR__ . '/sql/rename-schema-to-5-0-sqlite.sql'); + } + } +} diff --git a/src/bundle/RepositoryInstaller/Migration/SchemaBuilderEventSchemaProvider.php b/src/bundle/RepositoryInstaller/Migration/SchemaBuilderEventSchemaProvider.php index 6e4811d1cf..4fdf2b637f 100644 --- a/src/bundle/RepositoryInstaller/Migration/SchemaBuilderEventSchemaProvider.php +++ b/src/bundle/RepositoryInstaller/Migration/SchemaBuilderEventSchemaProvider.php @@ -23,11 +23,8 @@ */ final class SchemaBuilderEventSchemaProvider implements SchemaProvider { - private SchemaBuilderInterface $schemaBuilder; - - public function __construct(SchemaBuilderInterface $schemaBuilder) + public function __construct(private readonly SchemaBuilderInterface $schemaBuilder) { - $this->schemaBuilder = $schemaBuilder; } public function createSchema(): Schema diff --git a/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-mysql.sql b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-mysql.sql new file mode 100644 index 0000000000..2dc24d2654 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-mysql.sql @@ -0,0 +1,5 @@ +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-postgresql.sql b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-postgresql.sql new file mode 100644 index 0000000000..2dc24d2654 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-postgresql.sql @@ -0,0 +1,5 @@ +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-sqlite.sql new file mode 100644 index 0000000000..2dc24d2654 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/fix-legacy-identifiers-sqlite.sql @@ -0,0 +1,5 @@ +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-mysql.sql b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-mysql.sql new file mode 100644 index 0000000000..f9e9cffa91 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-mysql.sql @@ -0,0 +1,353 @@ +ALTER TABLE ezbinaryfile RENAME TO ibexa_binary_file; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state RENAME TO ibexa_object_state; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_object_state RENAME INDEX ezcobj_state_priority TO ibexa_object_state_priority; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_object_state RENAME INDEX ezcobj_state_lmask TO ibexa_object_state_lmask; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_object_state RENAME INDEX ezcobj_state_identifier TO ibexa_object_state_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group RENAME TO ibexa_object_state_group; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_object_state_group RENAME INDEX ezcobj_state_group_lmask TO ibexa_object_state_group_lmask; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_object_state_group RENAME INDEX ezcobj_state_group_identifier TO ibexa_object_state_group_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group_language RENAME TO ibexa_object_state_group_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_language RENAME TO ibexa_object_state_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_link RENAME TO ibexa_object_state_link; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontent_language RENAME TO ibexa_content_language; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_language RENAME INDEX ezcontent_language_name TO ibexa_content_language_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentbrowsebookmark RENAME TO ibexa_content_bookmark; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark RENAME INDEX ezcontentbrowsebookmark_location TO ibexa_content_bookmark_location; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark RENAME INDEX ezcontentbrowsebookmark_user TO ibexa_content_bookmark_user; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark RENAME INDEX ezcontentbrowsebookmark_user_location TO ibexa_content_bookmark_user_location; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass RENAME TO ibexa_content_type; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME INDEX ezcontentclass_version TO ibexa_content_type_version; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME INDEX ezcontentclass_identifier TO ibexa_content_type_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute RENAME TO ibexa_content_type_field_definition; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME INDEX ezcontentclass_attr_ccid TO ibexa_content_type_field_definition_ctid; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME INDEX ezcontentclass_attr_dts TO ibexa_content_type_field_definition_dts; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute_ml RENAME TO ibexa_content_type_field_definition_ml; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml DROP FOREIGN KEY ezcontentclass_attribute_ml_lang_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml ADD CONSTRAINT ibexa_content_type_field_definition_ml_lang_fk FOREIGN KEY (language_id) REFERENCES ibexa_content_language(id) ON DELETE CASCADE ON UPDATE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_classgroup RENAME TO ibexa_content_type_group_assignment; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_name RENAME TO ibexa_content_type_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclassgroup RENAME TO ibexa_content_type_group; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_tree RENAME TO ibexa_content_tree; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_p_node_id TO ibexa_content_tree_p_node_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_path_ident TO ibexa_content_tree_path_ident; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_contentobject_id_path_string TO ibexa_content_tree_contentobject_id_path_string; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_co_id TO ibexa_content_tree_co_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_depth TO ibexa_content_tree_depth; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_path TO ibexa_content_tree_path; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX modified_subnode TO ibexa_content_modified_subnode; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_tree RENAME INDEX ezcontentobject_tree_remote_id TO ibexa_content_tree_remote_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark DROP FOREIGN KEY ezcontentbrowsebookmark_location_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark ADD CONSTRAINT ibexa_content_bookmark_location_fk FOREIGN KEY (node_id) REFERENCES ibexa_content_tree(node_id) ON DELETE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject RENAME TO ibexa_content; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_classid TO ibexa_content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_lmask TO ibexa_content_lmask; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_pub TO ibexa_content_pub; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_section TO ibexa_content_section; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_currentversion TO ibexa_content_currentversion; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_owner TO ibexa_content_owner; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_status TO ibexa_content_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME INDEX ezcontentobject_remote_id TO ibexa_content_remote_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_attribute RENAME TO ibexa_content_field; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME INDEX ezcontentobject_attribute_co_id_ver_lang_code TO ibexa_content_field_co_id_ver_lang_code; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME INDEX ezcontentobject_classattr_id TO ibexa_content_field_classattr_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME INDEX ezcontentobject_attribute_language_code TO ibexa_content_field_language_code; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME INDEX ezcontentobject_attribute_co_id_ver TO ibexa_content_field_co_id_ver; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_link RENAME TO ibexa_content_relation; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME INDEX ezco_link_to_co_id TO ibexa_content_relation_to_co_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME INDEX ezco_link_from TO ibexa_content_relation_from; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME INDEX ezco_link_cca_id TO ibexa_content_relation_cca_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_name RENAME TO ibexa_content_name; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_name RENAME INDEX ezcontentobject_name_lang_id TO ibexa_content_name_lang_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_name RENAME INDEX ezcontentobject_name_cov_id TO ibexa_content_name_cov_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_name RENAME INDEX ezcontentobject_name_name TO ibexa_content_name_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_trash RENAME TO ibexa_content_trash; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_depth TO ibexa_content_trash_depth; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_p_node_id TO ibexa_content_trash_p_node_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_path_ident TO ibexa_content_trash_path_ident; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_co_id TO ibexa_content_trash_co_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_modified_subnode TO ibexa_content_trash_modified_subnode; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_trash RENAME INDEX ezcobj_trash_path TO ibexa_content_trash_path; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_version RENAME TO ibexa_content_version; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_version RENAME INDEX ezcobj_version_status TO ibexa_content_version_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_version RENAME INDEX idx_object_version_objver TO ibexa_content_version_idx_ver; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_version RENAME INDEX ezcontobj_version_obj_status TO ibexa_content_version_idx_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_version RENAME INDEX ezcobj_version_creator_id TO ibexa_content_version_creator_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezdfsfile RENAME TO ibexa_dfs_file; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_dfs_file RENAME INDEX ezdfsfile_name_trunk TO ibexa_dfs_file_name_trunk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_dfs_file RENAME INDEX ezdfsfile_expired_name TO ibexa_dfs_file_expired_name; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_dfs_file RENAME INDEX ezdfsfile_name TO ibexa_dfs_file_name; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_dfs_file RENAME INDEX ezdfsfile_mtime TO ibexa_dfs_file_mtime; +-- ibexa:sql-statement-separator +ALTER TABLE ezgmaplocation RENAME TO ibexa_map_location; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_map_location RENAME INDEX latitude_longitude_key TO ibexa_map_location_latitude_longitude_key; +-- ibexa:sql-statement-separator +ALTER TABLE ezimagefile RENAME TO ibexa_image_file; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_image_file RENAME INDEX ezimagefile_file TO ibexa_image_file_file; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_image_file RENAME INDEX ezimagefile_coid TO ibexa_image_file_coid; +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword RENAME TO ibexa_keyword; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_keyword RENAME INDEX ezkeyword_keyword TO ibexa_keyword_keyword; +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword_attribute_link RENAME TO ibexa_keyword_field_link; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_keyword_field_link RENAME INDEX ezkeyword_attr_link_oaid TO ibexa_keyword_field_link_oaid; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_keyword_field_link RENAME INDEX ezkeyword_attr_link_kid_oaid TO ibexa_keyword_field_link_kid_oaid; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_keyword_field_link RENAME INDEX ezkeyword_attr_link_oaid_ver TO ibexa_keyword_field_link_oaid_ver; +-- ibexa:sql-statement-separator +ALTER TABLE ezmedia RENAME TO ibexa_media; +-- ibexa:sql-statement-separator +ALTER TABLE eznode_assignment RENAME TO ibexa_node_assignment; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_node_assignment RENAME INDEX eznode_assignment_is_main TO ibexa_node_assignment_is_main; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_node_assignment RENAME INDEX eznode_assignment_coid_cov TO ibexa_node_assignment_coid_cov; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_node_assignment RENAME INDEX eznode_assignment_parent_node TO ibexa_node_assignment_parent_node; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_node_assignment RENAME INDEX eznode_assignment_co_version TO ibexa_node_assignment_co_version; +-- ibexa:sql-statement-separator +ALTER TABLE eznotification RENAME TO ibexa_notification; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_notification RENAME INDEX eznotification_owner_is_pending TO ibexa_notification_owner_is_pending; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_notification RENAME INDEX eznotification_owner TO ibexa_notification_owner; +-- ibexa:sql-statement-separator +ALTER TABLE ezpackage RENAME TO ibexa_package; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy RENAME TO ibexa_policy; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_policy RENAME INDEX ezpolicy_role_id TO ibexa_policy_role_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_policy RENAME INDEX ezpolicy_original_id TO ibexa_policy_original_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation RENAME TO ibexa_policy_limitation; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_policy_limitation RENAME INDEX policy_id TO ibexa_policy_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation_value RENAME TO ibexa_policy_limitation_value; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_policy_limitation_value RENAME INDEX ezpolicy_limit_value_limit_id TO ibexa_policy_limit_value_limit_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_policy_limitation_value RENAME INDEX ezpolicy_limitation_value_val TO ibexa_policy_limitation_value_val; +-- ibexa:sql-statement-separator +ALTER TABLE ezpreferences RENAME TO ibexa_user_preference; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_preference RENAME INDEX ezpreferences_user_id_idx TO ibexa_user_preference_user_id_idx; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_preference RENAME INDEX ezpreferences_name TO ibexa_user_preference_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezrole RENAME TO ibexa_role; +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_object_word_link RENAME TO ibexa_search_object_word_link; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME INDEX ezsearch_object_word_link_object TO ibexa_search_object_word_link_object; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME INDEX ezsearch_object_word_link_identifier TO ibexa_search_object_word_link_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME INDEX ezsearch_object_word_link_integer_value TO ibexa_search_object_word_link_integer_value; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME INDEX ezsearch_object_word_link_word TO ibexa_search_object_word_link_word; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME INDEX ezsearch_object_word_link_frequency TO ibexa_search_object_word_link_frequency; +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_word RENAME TO ibexa_search_word; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_word RENAME INDEX ezsearch_word_word_i TO ibexa_search_word_word_i; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_word RENAME INDEX ezsearch_word_obj_count TO ibexa_search_word_obj_count; +-- ibexa:sql-statement-separator +ALTER TABLE ezsection RENAME TO ibexa_section; +-- ibexa:sql-statement-separator +ALTER TABLE ezsite_data RENAME TO ibexa_site_data; +-- ibexa:sql-statement-separator +ALTER TABLE ezurl RENAME TO ibexa_url; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url RENAME INDEX ezurl_url TO ibexa_url_url; +-- ibexa:sql-statement-separator +ALTER TABLE ezurl_object_link RENAME TO ibexa_url_content_link; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_content_link RENAME INDEX ezurl_ol_coa_id TO ibexa_url_ol_coa_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_content_link RENAME INDEX ezurl_ol_url_id TO ibexa_url_ol_url_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_content_link RENAME INDEX ezurl_ol_coa_version TO ibexa_url_ol_coa_version; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_content_link RENAME INDEX ezurl_ol_coa_id_cav TO ibexa_url_ol_coa_id_cav; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias RENAME TO ibexa_url_alias; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_source_md5 TO ibexa_url_alias_source_md5; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_wcard_fwd TO ibexa_url_alias_wcard_fwd; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_forward_to_id TO ibexa_url_alias_forward_to_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_imp_wcard_fwd TO ibexa_url_alias_imp_wcard_fwd; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_source_url TO ibexa_url_alias_source_url; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias RENAME INDEX ezurlalias_desturl TO ibexa_url_alias_desturl; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml RENAME TO ibexa_url_alias_ml; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_actt_org_al TO ibexa_url_alias_ml_actt_org_al; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_text_lang TO ibexa_url_alias_ml_text_lang; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_par_act_id_lnk TO ibexa_url_alias_ml_par_act_id_lnk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_par_lnk_txt TO ibexa_url_alias_ml_par_lnk_txt; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_act_org TO ibexa_url_alias_ml_act_org; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_text TO ibexa_url_alias_ml_text; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_link TO ibexa_url_alias_ml_link; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_url_alias_ml RENAME INDEX ezurlalias_ml_id TO ibexa_url_alias_ml_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml_incr RENAME TO ibexa_url_alias_ml_incr; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlwildcard RENAME TO ibexa_url_wildcard; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser RENAME TO ibexa_user; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user RENAME INDEX ezuser_login TO ibexa_user_login; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_accountkey RENAME TO ibexa_user_accountkey; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_role RENAME TO ibexa_user_role; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_role RENAME INDEX ezuser_role_role_id TO ibexa_user_role_role_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_user_role RENAME INDEX ezuser_role_contentobject_id TO ibexa_user_role_contentobject_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_setting RENAME TO ibexa_user_setting; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark DROP FOREIGN KEY ezcontentbrowsebookmark_user_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark ADD CONSTRAINT ibexa_content_bookmark_user_fk FOREIGN KEY (user_id) REFERENCES ibexa_user(contentobject_id) ON DELETE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME INDEX ibexa_content_type_version TO ibexa_content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME INDEX ibexa_content_field_classattr_id TO ibexa_content_field_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME INDEX ibexa_content_relation_cca_id TO ibexa_content_relation_ccfd_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-postgresql.sql b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-postgresql.sql new file mode 100644 index 0000000000..07150fa771 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-postgresql.sql @@ -0,0 +1,415 @@ +ALTER TABLE ezbinaryfile RENAME TO ibexa_binary_file; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state RENAME TO ibexa_object_state; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_state_priority RENAME TO ibexa_object_state_priority; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_state_lmask RENAME TO ibexa_object_state_lmask; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_state_identifier RENAME TO ibexa_object_state_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group RENAME TO ibexa_object_state_group; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_state_group_lmask RENAME TO ibexa_object_state_group_lmask; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_state_group_identifier RENAME TO ibexa_object_state_group_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group_language RENAME TO ibexa_object_state_group_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_language RENAME TO ibexa_object_state_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_link RENAME TO ibexa_object_state_link; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontent_language RENAME TO ibexa_content_language; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontent_language_name RENAME TO ibexa_content_language_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentbrowsebookmark RENAME TO ibexa_content_bookmark; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentbrowsebookmark_location RENAME TO ibexa_content_bookmark_location; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentbrowsebookmark_user RENAME TO ibexa_content_bookmark_user; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentbrowsebookmark_user_location RENAME TO ibexa_content_bookmark_user_location; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass RENAME TO ibexa_content_type; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentclass_version RENAME TO ibexa_content_type_version; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentclass_identifier RENAME TO ibexa_content_type_identifier; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute RENAME TO ibexa_content_type_field_definition; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentclass_attr_ccid RENAME TO ibexa_content_type_field_definition_ctid; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentclass_attr_dts RENAME TO ibexa_content_type_field_definition_dts; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute_ml RENAME TO ibexa_content_type_field_definition_ml; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml DROP CONSTRAINT ezcontentclass_attribute_ml_lang_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml ADD CONSTRAINT ibexa_content_type_field_definition_ml_lang_fk FOREIGN KEY (language_id) REFERENCES ibexa_content_language(id) ON DELETE CASCADE ON UPDATE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_classgroup RENAME TO ibexa_content_type_group_assignment; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_name RENAME TO ibexa_content_type_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclassgroup RENAME TO ibexa_content_type_group; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_tree RENAME TO ibexa_content_tree; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_p_node_id RENAME TO ibexa_content_tree_p_node_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_path_ident RENAME TO ibexa_content_tree_path_ident; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_contentobject_id_path_string RENAME TO ibexa_content_tree_contentobject_id_path_string; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_co_id RENAME TO ibexa_content_tree_co_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_depth RENAME TO ibexa_content_tree_depth; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_path RENAME TO ibexa_content_tree_path; +-- ibexa:sql-statement-separator +ALTER INDEX modified_subnode RENAME TO ibexa_content_modified_subnode; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_tree_remote_id RENAME TO ibexa_content_tree_remote_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark DROP CONSTRAINT ezcontentbrowsebookmark_location_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark ADD CONSTRAINT ibexa_content_bookmark_location_fk FOREIGN KEY (node_id) REFERENCES ibexa_content_tree(node_id) ON DELETE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject RENAME TO ibexa_content; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_classid RENAME TO ibexa_content_type_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_lmask RENAME TO ibexa_content_lmask; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_pub RENAME TO ibexa_content_pub; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_section RENAME TO ibexa_content_section; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_currentversion RENAME TO ibexa_content_currentversion; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_owner RENAME TO ibexa_content_owner; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_status RENAME TO ibexa_content_status; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_remote_id RENAME TO ibexa_content_remote_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_attribute RENAME TO ibexa_content_field; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_attribute_co_id_ver_lang_code RENAME TO ibexa_content_field_co_id_ver_lang_code; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_classattr_id RENAME TO ibexa_content_field_classattr_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_attribute_language_code RENAME TO ibexa_content_field_language_code; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_attribute_co_id_ver RENAME TO ibexa_content_field_co_id_ver; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_link RENAME TO ibexa_content_relation; +-- ibexa:sql-statement-separator +ALTER INDEX ezco_link_to_co_id RENAME TO ibexa_content_relation_to_co_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezco_link_from RENAME TO ibexa_content_relation_from; +-- ibexa:sql-statement-separator +ALTER INDEX ezco_link_cca_id RENAME TO ibexa_content_relation_cca_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_name RENAME TO ibexa_content_name; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_name_lang_id RENAME TO ibexa_content_name_lang_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_name_cov_id RENAME TO ibexa_content_name_cov_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontentobject_name_name RENAME TO ibexa_content_name_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_trash RENAME TO ibexa_content_trash; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_depth RENAME TO ibexa_content_trash_depth; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_p_node_id RENAME TO ibexa_content_trash_p_node_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_path_ident RENAME TO ibexa_content_trash_path_ident; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_co_id RENAME TO ibexa_content_trash_co_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_modified_subnode RENAME TO ibexa_content_trash_modified_subnode; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_trash_path RENAME TO ibexa_content_trash_path; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_version RENAME TO ibexa_content_version; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_version_status RENAME TO ibexa_content_version_status; +-- ibexa:sql-statement-separator +ALTER INDEX idx_object_version_objver RENAME TO ibexa_content_version_idx_ver; +-- ibexa:sql-statement-separator +ALTER INDEX ezcontobj_version_obj_status RENAME TO ibexa_content_version_idx_status; +-- ibexa:sql-statement-separator +ALTER INDEX ezcobj_version_creator_id RENAME TO ibexa_content_version_creator_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezdfsfile RENAME TO ibexa_dfs_file; +-- ibexa:sql-statement-separator +ALTER INDEX ezdfsfile_name_trunk RENAME TO ibexa_dfs_file_name_trunk; +-- ibexa:sql-statement-separator +ALTER INDEX ezdfsfile_expired_name RENAME TO ibexa_dfs_file_expired_name; +-- ibexa:sql-statement-separator +ALTER INDEX ezdfsfile_name RENAME TO ibexa_dfs_file_name; +-- ibexa:sql-statement-separator +ALTER INDEX ezdfsfile_mtime RENAME TO ibexa_dfs_file_mtime; +-- ibexa:sql-statement-separator +ALTER TABLE ezgmaplocation RENAME TO ibexa_map_location; +-- ibexa:sql-statement-separator +ALTER INDEX latitude_longitude_key RENAME TO ibexa_map_location_latitude_longitude_key; +-- ibexa:sql-statement-separator +ALTER TABLE ezimagefile RENAME TO ibexa_image_file; +-- ibexa:sql-statement-separator +ALTER INDEX ezimagefile_file RENAME TO ibexa_image_file_file; +-- ibexa:sql-statement-separator +ALTER INDEX ezimagefile_coid RENAME TO ibexa_image_file_coid; +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword RENAME TO ibexa_keyword; +-- ibexa:sql-statement-separator +ALTER INDEX ezkeyword_keyword RENAME TO ibexa_keyword_keyword; +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword_attribute_link RENAME TO ibexa_keyword_field_link; +-- ibexa:sql-statement-separator +ALTER INDEX ezkeyword_attr_link_oaid RENAME TO ibexa_keyword_field_link_oaid; +-- ibexa:sql-statement-separator +ALTER INDEX ezkeyword_attr_link_kid_oaid RENAME TO ibexa_keyword_field_link_kid_oaid; +-- ibexa:sql-statement-separator +ALTER INDEX ezkeyword_attr_link_oaid_ver RENAME TO ibexa_keyword_field_link_oaid_ver; +-- ibexa:sql-statement-separator +ALTER TABLE ezmedia RENAME TO ibexa_media; +-- ibexa:sql-statement-separator +ALTER TABLE eznode_assignment RENAME TO ibexa_node_assignment; +-- ibexa:sql-statement-separator +ALTER INDEX eznode_assignment_is_main RENAME TO ibexa_node_assignment_is_main; +-- ibexa:sql-statement-separator +ALTER INDEX eznode_assignment_coid_cov RENAME TO ibexa_node_assignment_coid_cov; +-- ibexa:sql-statement-separator +ALTER INDEX eznode_assignment_parent_node RENAME TO ibexa_node_assignment_parent_node; +-- ibexa:sql-statement-separator +ALTER INDEX eznode_assignment_co_version RENAME TO ibexa_node_assignment_co_version; +-- ibexa:sql-statement-separator +ALTER TABLE eznotification RENAME TO ibexa_notification; +-- ibexa:sql-statement-separator +ALTER INDEX eznotification_owner_is_pending RENAME TO ibexa_notification_owner_is_pending; +-- ibexa:sql-statement-separator +ALTER INDEX eznotification_owner RENAME TO ibexa_notification_owner; +-- ibexa:sql-statement-separator +ALTER TABLE ezpackage RENAME TO ibexa_package; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy RENAME TO ibexa_policy; +-- ibexa:sql-statement-separator +ALTER INDEX ezpolicy_role_id RENAME TO ibexa_policy_role_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezpolicy_original_id RENAME TO ibexa_policy_original_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation RENAME TO ibexa_policy_limitation; +-- ibexa:sql-statement-separator +ALTER INDEX policy_id RENAME TO ibexa_policy_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation_value RENAME TO ibexa_policy_limitation_value; +-- ibexa:sql-statement-separator +ALTER INDEX ezpolicy_limit_value_limit_id RENAME TO ibexa_policy_limit_value_limit_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezpolicy_limitation_value_val RENAME TO ibexa_policy_limitation_value_val; +-- ibexa:sql-statement-separator +ALTER TABLE ezpreferences RENAME TO ibexa_user_preference; +-- ibexa:sql-statement-separator +ALTER INDEX ezpreferences_user_id_idx RENAME TO ibexa_user_preference_user_id_idx; +-- ibexa:sql-statement-separator +ALTER INDEX ezpreferences_name RENAME TO ibexa_user_preference_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezrole RENAME TO ibexa_role; +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_object_word_link RENAME TO ibexa_search_object_word_link; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_object_word_link_object RENAME TO ibexa_search_object_word_link_object; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_object_word_link_identifier RENAME TO ibexa_search_object_word_link_identifier; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_object_word_link_integer_value RENAME TO ibexa_search_object_word_link_integer_value; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_object_word_link_word RENAME TO ibexa_search_object_word_link_word; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_object_word_link_frequency RENAME TO ibexa_search_object_word_link_frequency; +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_word RENAME TO ibexa_search_word; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_word_word_i RENAME TO ibexa_search_word_word_i; +-- ibexa:sql-statement-separator +ALTER INDEX ezsearch_word_obj_count RENAME TO ibexa_search_word_obj_count; +-- ibexa:sql-statement-separator +ALTER TABLE ezsection RENAME TO ibexa_section; +-- ibexa:sql-statement-separator +ALTER TABLE ezsite_data RENAME TO ibexa_site_data; +-- ibexa:sql-statement-separator +ALTER TABLE ezurl RENAME TO ibexa_url; +-- ibexa:sql-statement-separator +ALTER INDEX ezurl_url RENAME TO ibexa_url_url; +-- ibexa:sql-statement-separator +ALTER TABLE ezurl_object_link RENAME TO ibexa_url_content_link; +-- ibexa:sql-statement-separator +ALTER INDEX ezurl_ol_coa_id RENAME TO ibexa_url_ol_coa_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezurl_ol_url_id RENAME TO ibexa_url_ol_url_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezurl_ol_coa_version RENAME TO ibexa_url_ol_coa_version; +-- ibexa:sql-statement-separator +ALTER INDEX ezurl_ol_coa_id_cav RENAME TO ibexa_url_ol_coa_id_cav; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias RENAME TO ibexa_url_alias; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_source_md5 RENAME TO ibexa_url_alias_source_md5; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_wcard_fwd RENAME TO ibexa_url_alias_wcard_fwd; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_forward_to_id RENAME TO ibexa_url_alias_forward_to_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_imp_wcard_fwd RENAME TO ibexa_url_alias_imp_wcard_fwd; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_source_url RENAME TO ibexa_url_alias_source_url; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_desturl RENAME TO ibexa_url_alias_desturl; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml RENAME TO ibexa_url_alias_ml; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_actt_org_al RENAME TO ibexa_url_alias_ml_actt_org_al; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_text_lang RENAME TO ibexa_url_alias_ml_text_lang; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_par_act_id_lnk RENAME TO ibexa_url_alias_ml_par_act_id_lnk; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_par_lnk_txt RENAME TO ibexa_url_alias_ml_par_lnk_txt; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_act_org RENAME TO ibexa_url_alias_ml_act_org; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_text RENAME TO ibexa_url_alias_ml_text; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_link RENAME TO ibexa_url_alias_ml_link; +-- ibexa:sql-statement-separator +ALTER INDEX ezurlalias_ml_id RENAME TO ibexa_url_alias_ml_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml_incr RENAME TO ibexa_url_alias_ml_incr; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlwildcard RENAME TO ibexa_url_wildcard; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser RENAME TO ibexa_user; +-- ibexa:sql-statement-separator +ALTER INDEX ezuser_login RENAME TO ibexa_user_login; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_accountkey RENAME TO ibexa_user_accountkey; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_role RENAME TO ibexa_user_role; +-- ibexa:sql-statement-separator +ALTER INDEX ezuser_role_role_id RENAME TO ibexa_user_role_role_id; +-- ibexa:sql-statement-separator +ALTER INDEX ezuser_role_contentobject_id RENAME TO ibexa_user_role_contentobject_id; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_setting RENAME TO ibexa_user_setting; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark DROP CONSTRAINT ezcontentbrowsebookmark_user_fk; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_bookmark ADD CONSTRAINT ibexa_content_bookmark_user_fk FOREIGN KEY (user_id) REFERENCES ibexa_user(contentobject_id) ON DELETE CASCADE; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_content_type_version RENAME TO ibexa_content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_content_field_classattr_id RENAME TO ibexa_content_field_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER INDEX ibexa_content_relation_cca_id RENAME TO ibexa_content_relation_ccfd_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcobj_state_group_id_seq RENAME TO ibexa_object_state_group_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcobj_state_id_seq RENAME TO ibexa_object_state_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentbrowsebookmark_id_seq RENAME TO ibexa_content_bookmark_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentclass_attribute_id_seq RENAME TO ibexa_content_type_field_definition_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentclass_id_seq RENAME TO ibexa_content_type_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentclassgroup_id_seq RENAME TO ibexa_content_type_group_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentobject_attribute_id_seq RENAME TO ibexa_content_field_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentobject_id_seq RENAME TO ibexa_content_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentobject_link_id_seq RENAME TO ibexa_content_relation_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentobject_tree_node_id_seq RENAME TO ibexa_content_tree_node_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezcontentobject_version_id_seq RENAME TO ibexa_content_version_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezimagefile_id_seq RENAME TO ibexa_image_file_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezkeyword_attribute_link_id_seq RENAME TO ibexa_keyword_field_link_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezkeyword_id_seq RENAME TO ibexa_keyword_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE eznode_assignment_id_seq RENAME TO ibexa_node_assignment_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE eznotification_id_seq RENAME TO ibexa_notification_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezpackage_id_seq RENAME TO ibexa_package_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezpolicy_id_seq RENAME TO ibexa_policy_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezpolicy_limitation_id_seq RENAME TO ibexa_policy_limitation_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezpolicy_limitation_value_id_seq RENAME TO ibexa_policy_limitation_value_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezpreferences_id_seq RENAME TO ibexa_user_preference_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezrole_id_seq RENAME TO ibexa_role_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezsearch_object_word_link_id_seq RENAME TO ibexa_search_object_word_link_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezsearch_word_id_seq RENAME TO ibexa_search_word_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezsection_id_seq RENAME TO ibexa_section_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezurl_id_seq RENAME TO ibexa_url_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezurlalias_id_seq RENAME TO ibexa_url_alias_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezurlalias_ml_incr_id_seq RENAME TO ibexa_url_alias_ml_incr_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezurlwildcard_id_seq RENAME TO ibexa_url_wildcard_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezuser_accountkey_id_seq RENAME TO ibexa_user_accountkey_id_seq; +-- ibexa:sql-statement-separator +ALTER SEQUENCE ezuser_role_id_seq RENAME TO ibexa_user_role_id_seq; +-- ibexa:sql-statement-separator +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-sqlite.sql new file mode 100644 index 0000000000..a5df30153f --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/rename-schema-to-5-0-sqlite.sql @@ -0,0 +1,555 @@ +ALTER TABLE ezbinaryfile RENAME TO ibexa_binary_file; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state RENAME TO ibexa_object_state; +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_state_priority; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_object_state_priority ON ibexa_object_state (priority); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_state_lmask; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_object_state_lmask ON ibexa_object_state (language_mask); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_state_identifier; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_object_state_identifier ON ibexa_object_state (group_id, identifier); +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group RENAME TO ibexa_object_state_group; +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_state_group_lmask; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_object_state_group_lmask ON ibexa_object_state_group (language_mask); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_state_group_identifier; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_object_state_group_identifier ON ibexa_object_state_group (identifier); +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_group_language RENAME TO ibexa_object_state_group_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_language RENAME TO ibexa_object_state_language; +-- ibexa:sql-statement-separator +ALTER TABLE ezcobj_state_link RENAME TO ibexa_object_state_link; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontent_language RENAME TO ibexa_content_language; +-- ibexa:sql-statement-separator +DROP INDEX ezcontent_language_name; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_language_name ON ibexa_content_language (name); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentbrowsebookmark RENAME TO ibexa_content_bookmark; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentbrowsebookmark_location; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_bookmark_location ON ibexa_content_bookmark (node_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentbrowsebookmark_user; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_bookmark_user ON ibexa_content_bookmark (user_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentbrowsebookmark_user_location; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_bookmark_user_location ON ibexa_content_bookmark (user_id, node_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass RENAME TO ibexa_content_type; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentclass_version; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_version ON ibexa_content_type (version); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentclass_identifier; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_identifier ON ibexa_content_type (identifier, version); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute RENAME TO ibexa_content_type_field_definition; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentclass_attr_ccid; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_field_definition_ctid ON ibexa_content_type_field_definition (contentclass_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentclass_attr_dts; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_field_definition_dts ON ibexa_content_type_field_definition (data_type_string); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute_ml RENAME TO ibexa_content_type_field_definition_ml; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentclass_attribute_ml_lang_fk; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_field_definition_ml_lang_fk ON ibexa_content_type_field_definition_ml (language_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_classgroup RENAME TO ibexa_content_type_group_assignment; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_name RENAME TO ibexa_content_type_name; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclassgroup RENAME TO ibexa_content_type_group; +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_tree RENAME TO ibexa_content_tree; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_p_node_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_p_node_id ON ibexa_content_tree (parent_node_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_path_ident; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_path_ident ON ibexa_content_tree (path_identification_string); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_contentobject_id_path_string; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_contentobject_id_path_string ON ibexa_content_tree (path_string, contentobject_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_co_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_co_id ON ibexa_content_tree (contentobject_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_depth; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_depth ON ibexa_content_tree (depth); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_path; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_path ON ibexa_content_tree (path_string); +-- ibexa:sql-statement-separator +DROP INDEX modified_subnode; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_modified_subnode ON ibexa_content_tree (modified_subnode); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_tree_remote_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_tree_remote_id ON ibexa_content_tree (remote_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject RENAME TO ibexa_content; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_classid; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_id ON ibexa_content (contentclass_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_lmask; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_lmask ON ibexa_content (language_mask); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_pub; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_pub ON ibexa_content (published); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_section; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_section ON ibexa_content (section_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_currentversion; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_currentversion ON ibexa_content (current_version); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_owner; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_owner ON ibexa_content (owner_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_status; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_status ON ibexa_content (status); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_remote_id; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_content_remote_id ON ibexa_content (remote_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_attribute RENAME TO ibexa_content_field; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_attribute_co_id_ver_lang_code; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_field_co_id_ver_lang_code ON ibexa_content_field (contentobject_id, version, language_code); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_classattr_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_field_classattr_id ON ibexa_content_field (contentclassattribute_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_attribute_language_code; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_field_language_code ON ibexa_content_field (language_code); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_attribute_co_id_ver; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_field_co_id_ver ON ibexa_content_field (contentobject_id, version); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_link RENAME TO ibexa_content_relation; +-- ibexa:sql-statement-separator +DROP INDEX ezco_link_to_co_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_relation_to_co_id ON ibexa_content_relation (to_contentobject_id); +-- ibexa:sql-statement-separator +DROP INDEX ezco_link_from; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_relation_from ON ibexa_content_relation (from_contentobject_id, from_contentobject_version, contentclassattribute_id); +-- ibexa:sql-statement-separator +DROP INDEX ezco_link_cca_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_relation_cca_id ON ibexa_content_relation (contentclassattribute_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_name RENAME TO ibexa_content_name; +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_name_lang_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_name_lang_id ON ibexa_content_name (language_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_name_cov_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_name_cov_id ON ibexa_content_name (content_version); +-- ibexa:sql-statement-separator +DROP INDEX ezcontentobject_name_name; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_name_name ON ibexa_content_name (name); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_trash RENAME TO ibexa_content_trash; +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_depth; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_depth ON ibexa_content_trash (depth); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_p_node_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_p_node_id ON ibexa_content_trash (parent_node_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_path_ident; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_path_ident ON ibexa_content_trash (path_identification_string); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_co_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_co_id ON ibexa_content_trash (contentobject_id); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_modified_subnode; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_modified_subnode ON ibexa_content_trash (modified_subnode); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_trash_path; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_trash_path ON ibexa_content_trash (path_string); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_version RENAME TO ibexa_content_version; +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_version_status; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_version_status ON ibexa_content_version (status); +-- ibexa:sql-statement-separator +DROP INDEX idx_object_version_objver; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_version_idx_ver ON ibexa_content_version (contentobject_id, version); +-- ibexa:sql-statement-separator +DROP INDEX ezcontobj_version_obj_status; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_version_idx_status ON ibexa_content_version (contentobject_id, status); +-- ibexa:sql-statement-separator +DROP INDEX ezcobj_version_creator_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_version_creator_id ON ibexa_content_version (creator_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezdfsfile RENAME TO ibexa_dfs_file; +-- ibexa:sql-statement-separator +DROP INDEX ezdfsfile_name_trunk; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_dfs_file_name_trunk ON ibexa_dfs_file (name_trunk); +-- ibexa:sql-statement-separator +DROP INDEX ezdfsfile_expired_name; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_dfs_file_expired_name ON ibexa_dfs_file (expired, name); +-- ibexa:sql-statement-separator +DROP INDEX ezdfsfile_name; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_dfs_file_name ON ibexa_dfs_file (name); +-- ibexa:sql-statement-separator +DROP INDEX ezdfsfile_mtime; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_dfs_file_mtime ON ibexa_dfs_file (mtime); +-- ibexa:sql-statement-separator +ALTER TABLE ezgmaplocation RENAME TO ibexa_map_location; +-- ibexa:sql-statement-separator +DROP INDEX latitude_longitude_key; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_map_location_latitude_longitude_key ON ibexa_map_location (latitude, longitude); +-- ibexa:sql-statement-separator +ALTER TABLE ezimagefile RENAME TO ibexa_image_file; +-- ibexa:sql-statement-separator +DROP INDEX ezimagefile_file; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_image_file_file ON ibexa_image_file (filepath); +-- ibexa:sql-statement-separator +DROP INDEX ezimagefile_coid; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_image_file_coid ON ibexa_image_file (contentobject_attribute_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword RENAME TO ibexa_keyword; +-- ibexa:sql-statement-separator +DROP INDEX ezkeyword_keyword; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_keyword_keyword ON ibexa_keyword (keyword); +-- ibexa:sql-statement-separator +ALTER TABLE ezkeyword_attribute_link RENAME TO ibexa_keyword_field_link; +-- ibexa:sql-statement-separator +DROP INDEX ezkeyword_attr_link_oaid; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_keyword_field_link_oaid ON ibexa_keyword_field_link (objectattribute_id); +-- ibexa:sql-statement-separator +DROP INDEX ezkeyword_attr_link_kid_oaid; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_keyword_field_link_kid_oaid ON ibexa_keyword_field_link (keyword_id, objectattribute_id); +-- ibexa:sql-statement-separator +DROP INDEX ezkeyword_attr_link_oaid_ver; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_keyword_field_link_oaid_ver ON ibexa_keyword_field_link (objectattribute_id, version); +-- ibexa:sql-statement-separator +ALTER TABLE ezmedia RENAME TO ibexa_media; +-- ibexa:sql-statement-separator +ALTER TABLE eznode_assignment RENAME TO ibexa_node_assignment; +-- ibexa:sql-statement-separator +DROP INDEX eznode_assignment_is_main; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_node_assignment_is_main ON ibexa_node_assignment (is_main); +-- ibexa:sql-statement-separator +DROP INDEX eznode_assignment_coid_cov; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_node_assignment_coid_cov ON ibexa_node_assignment (contentobject_id, contentobject_version); +-- ibexa:sql-statement-separator +DROP INDEX eznode_assignment_parent_node; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_node_assignment_parent_node ON ibexa_node_assignment (parent_node); +-- ibexa:sql-statement-separator +DROP INDEX eznode_assignment_co_version; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_node_assignment_co_version ON ibexa_node_assignment (contentobject_version); +-- ibexa:sql-statement-separator +ALTER TABLE eznotification RENAME TO ibexa_notification; +-- ibexa:sql-statement-separator +DROP INDEX eznotification_owner_is_pending; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_notification_owner_is_pending ON ibexa_notification (owner_id, is_pending); +-- ibexa:sql-statement-separator +DROP INDEX eznotification_owner; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_notification_owner ON ibexa_notification (owner_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezpackage RENAME TO ibexa_package; +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy RENAME TO ibexa_policy; +-- ibexa:sql-statement-separator +DROP INDEX ezpolicy_role_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_policy_role_id ON ibexa_policy (role_id); +-- ibexa:sql-statement-separator +DROP INDEX ezpolicy_original_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_policy_original_id ON ibexa_policy (original_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation RENAME TO ibexa_policy_limitation; +-- ibexa:sql-statement-separator +DROP INDEX policy_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_policy_id ON ibexa_policy_limitation (policy_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezpolicy_limitation_value RENAME TO ibexa_policy_limitation_value; +-- ibexa:sql-statement-separator +DROP INDEX ezpolicy_limit_value_limit_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_policy_limit_value_limit_id ON ibexa_policy_limitation_value (limitation_id); +-- ibexa:sql-statement-separator +DROP INDEX ezpolicy_limitation_value_val; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_policy_limitation_value_val ON ibexa_policy_limitation_value (value); +-- ibexa:sql-statement-separator +ALTER TABLE ezpreferences RENAME TO ibexa_user_preference; +-- ibexa:sql-statement-separator +DROP INDEX ezpreferences_user_id_idx; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_preference_user_id_idx ON ibexa_user_preference (user_id, name); +-- ibexa:sql-statement-separator +DROP INDEX ezpreferences_name; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_preference_name ON ibexa_user_preference (name); +-- ibexa:sql-statement-separator +ALTER TABLE ezrole RENAME TO ibexa_role; +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_object_word_link RENAME TO ibexa_search_object_word_link; +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_object_word_link_object; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_object_word_link_object ON ibexa_search_object_word_link (contentobject_id); +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_object_word_link_identifier; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_object_word_link_identifier ON ibexa_search_object_word_link (identifier); +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_object_word_link_integer_value; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_object_word_link_integer_value ON ibexa_search_object_word_link (integer_value); +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_object_word_link_word; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_object_word_link_word ON ibexa_search_object_word_link (word_id); +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_object_word_link_frequency; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_object_word_link_frequency ON ibexa_search_object_word_link (frequency); +-- ibexa:sql-statement-separator +ALTER TABLE ezsearch_word RENAME TO ibexa_search_word; +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_word_word_i; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_word_word_i ON ibexa_search_word (word); +-- ibexa:sql-statement-separator +DROP INDEX ezsearch_word_obj_count; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_search_word_obj_count ON ibexa_search_word (object_count); +-- ibexa:sql-statement-separator +ALTER TABLE ezsection RENAME TO ibexa_section; +-- ibexa:sql-statement-separator +ALTER TABLE ezsite_data RENAME TO ibexa_site_data; +-- ibexa:sql-statement-separator +ALTER TABLE ezurl RENAME TO ibexa_url; +-- ibexa:sql-statement-separator +DROP INDEX ezurl_url; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_url ON ibexa_url (url); +-- ibexa:sql-statement-separator +ALTER TABLE ezurl_object_link RENAME TO ibexa_url_content_link; +-- ibexa:sql-statement-separator +DROP INDEX ezurl_ol_coa_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_ol_coa_id ON ibexa_url_content_link (contentobject_attribute_id); +-- ibexa:sql-statement-separator +DROP INDEX ezurl_ol_url_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_ol_url_id ON ibexa_url_content_link (url_id); +-- ibexa:sql-statement-separator +DROP INDEX ezurl_ol_coa_version; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_ol_coa_version ON ibexa_url_content_link (contentobject_attribute_version); +-- ibexa:sql-statement-separator +DROP INDEX ezurl_ol_coa_id_cav; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_ol_coa_id_cav ON ibexa_url_content_link (contentobject_attribute_id, contentobject_attribute_version); +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias RENAME TO ibexa_url_alias; +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_source_md5; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_source_md5 ON ibexa_url_alias (source_md5); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_wcard_fwd; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_wcard_fwd ON ibexa_url_alias (is_wildcard, forward_to_id); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_forward_to_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_forward_to_id ON ibexa_url_alias (forward_to_id); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_imp_wcard_fwd; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_imp_wcard_fwd ON ibexa_url_alias (is_imported, is_wildcard, forward_to_id); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_source_url; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_source_url ON ibexa_url_alias (source_url); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_desturl; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_desturl ON ibexa_url_alias (destination_url); +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml RENAME TO ibexa_url_alias_ml; +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_actt_org_al; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_actt_org_al ON ibexa_url_alias_ml (action_type, is_original, is_alias); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_text_lang; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_text_lang ON ibexa_url_alias_ml (text, lang_mask, parent); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_par_act_id_lnk; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_par_act_id_lnk ON ibexa_url_alias_ml ("action", id, link, parent); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_par_lnk_txt; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_par_lnk_txt ON ibexa_url_alias_ml (parent, text, link); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_act_org; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_act_org ON ibexa_url_alias_ml ("action", is_original); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_text; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_text ON ibexa_url_alias_ml (text, id, link); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_link; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_link ON ibexa_url_alias_ml (link); +-- ibexa:sql-statement-separator +DROP INDEX ezurlalias_ml_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_url_alias_ml_id ON ibexa_url_alias_ml (id); +-- ibexa:sql-statement-separator +ALTER TABLE ezurlalias_ml_incr RENAME TO ibexa_url_alias_ml_incr; +-- ibexa:sql-statement-separator +ALTER TABLE ezurlwildcard RENAME TO ibexa_url_wildcard; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser RENAME TO ibexa_user; +-- ibexa:sql-statement-separator +DROP INDEX ezuser_login; +-- ibexa:sql-statement-separator +CREATE UNIQUE INDEX ibexa_user_login ON ibexa_user (login); +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_accountkey RENAME TO ibexa_user_accountkey; +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_role RENAME TO ibexa_user_role; +-- ibexa:sql-statement-separator +DROP INDEX ezuser_role_role_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_role_role_id ON ibexa_user_role (role_id); +-- ibexa:sql-statement-separator +DROP INDEX ezuser_role_contentobject_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_user_role_contentobject_id ON ibexa_user_role (contentobject_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezuser_setting RENAME TO ibexa_user_setting; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_id TO content_type_id; +-- ibexa:sql-statement-separator +DROP INDEX ibexa_content_type_version; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_type_status ON ibexa_content_type (version); +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN version TO status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_group_assignment RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_name RENAME COLUMN contentclass_version TO content_type_status; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_type_field_definition_ml RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_field RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +DROP INDEX ibexa_content_field_classattr_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_field_field_definition_id ON ibexa_content_field (content_type_field_definition_id); +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_content_relation RENAME COLUMN contentclassattribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +DROP INDEX ibexa_content_relation_cca_id; +-- ibexa:sql-statement-separator +CREATE INDEX ibexa_content_relation_ccfd_id ON ibexa_content_relation (content_type_field_definition_id); +-- ibexa:sql-statement-separator +ALTER TABLE ibexa_search_object_word_link RENAME COLUMN contentclass_attribute_id TO content_type_field_definition_id; +-- ibexa:sql-statement-separator +UPDATE ibexa_object_state_group SET identifier = 'ibexa_lock' WHERE identifier = 'ez_lock'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_type_field_definition SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; +-- ibexa:sql-statement-separator +UPDATE ibexa_content_field SET data_type_string = 'ibexa_string' WHERE data_type_string = 'ezstring'; diff --git a/src/bundle/RepositoryInstaller/Resources/config/services.yml b/src/bundle/RepositoryInstaller/Resources/config/services.yml index 44fa481ec4..07ecdc49cd 100644 --- a/src/bundle/RepositoryInstaller/Resources/config/services.yml +++ b/src/bundle/RepositoryInstaller/Resources/config/services.yml @@ -13,6 +13,14 @@ services: tags: - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\RenameSchemaTo5_0Migration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\ImportDataMigration: autowire: true public: false @@ -21,6 +29,14 @@ services: tags: - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\FixLegacyIdentifiersMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\TaggedMigrationsRunner: public: false arguments: From 46e615866f44fea99c4dd9680144c0206a8bd8a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 29 Jul 2026 00:27:14 +0200 Subject: [PATCH 2/8] Added guarded migrations for core content/URL performance indexes Converts installer's upgrade/db/ibexa-4.5.1-to-4.5.2.sql and upgrade/db/ibexa-4.6.20-to-4.6.21.sql into guarded Doctrine migrations targeting the pre-rename (4.6.0) table names, for installs whose schema already predates these indexes. Needed on this branch too, independently of the 4.6 branch: RenameSchemaTo5_0Migration's RENAME INDEX statements assume these indexes already exist under their old names. --- .../AddContentPerformanceIndexesMigration.php | 58 +++++++++++++++++++ .../AddUrlAliasMlLinkIndexMigration.php | 57 ++++++++++++++++++ .../add-content-performance-indexes-mysql.sql | 7 +++ ...content-performance-indexes-postgresql.sql | 7 +++ ...add-content-performance-indexes-sqlite.sql | 7 +++ .../sql/add-urlalias-ml-link-index-mysql.sql | 1 + .../add-urlalias-ml-link-index-postgresql.sql | 1 + .../sql/add-urlalias-ml-link-index-sqlite.sql | 1 + .../Resources/config/services.yml | 16 +++++ 9 files changed, 155 insertions(+) create mode 100644 src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php create mode 100644 src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-mysql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-postgresql.sql create mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-sqlite.sql diff --git a/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php b/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php new file mode 100644 index 0000000000..06dba06a53 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php @@ -0,0 +1,58 @@ +abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); + + if ($schema->getTable('ezcontentobject_link')->hasIndex('ezco_link_cca_id')) { + return; + } + + if ($this->isMySQL()) { + $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-mysql.sql'); + } elseif ($this->isPostgreSQL()) { + $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-postgresql.sql'); + } elseif ($this->isSqlite()) { + $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-sqlite.sql'); + } + } +} diff --git a/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php b/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php new file mode 100644 index 0000000000..7ce1f395a1 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php @@ -0,0 +1,57 @@ +abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); + + if ($schema->getTable('ezurlalias_ml')->hasIndex('ezurlalias_ml_link')) { + return; + } + + if ($this->isMySQL()) { + $this->addSqlFile(__DIR__ . '/sql/add-urlalias-ml-link-index-mysql.sql'); + } elseif ($this->isPostgreSQL()) { + $this->addSqlFile(__DIR__ . '/sql/add-urlalias-ml-link-index-postgresql.sql'); + } elseif ($this->isSqlite()) { + $this->addSqlFile(__DIR__ . '/sql/add-urlalias-ml-link-index-sqlite.sql'); + } + } +} diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql new file mode 100644 index 0000000000..e59a9c8f37 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql @@ -0,0 +1,7 @@ +ALTER TABLE ezcontentobject_link ADD INDEX ezco_link_cca_id (contentclassattribute_id); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentclass_attribute ADD INDEX ezcontentclass_attr_dts (data_type_string); +-- ibexa:sql-statement-separator +ALTER TABLE ezurl_object_link ADD INDEX ezurl_ol_coa_id_cav (contentobject_attribute_id, contentobject_attribute_version); +-- ibexa:sql-statement-separator +ALTER TABLE ezcontentobject_attribute ADD INDEX ezcontentobject_attribute_co_id_ver (contentobject_id, version); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql new file mode 100644 index 0000000000..a506f987c5 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql @@ -0,0 +1,7 @@ +CREATE INDEX ezco_link_cca_id ON ezcontentobject_link (contentclassattribute_id); +-- ibexa:sql-statement-separator +CREATE INDEX ezcontentclass_attr_dts ON ezcontentclass_attribute (data_type_string); +-- ibexa:sql-statement-separator +CREATE INDEX ezcontentobject_attribute_co_id_ver ON ezcontentobject_attribute (contentobject_id, version); +-- ibexa:sql-statement-separator +CREATE INDEX ezurl_ol_coa_id_cav ON ezurl_object_link (contentobject_attribute_id, contentobject_attribute_version); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql new file mode 100644 index 0000000000..a506f987c5 --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql @@ -0,0 +1,7 @@ +CREATE INDEX ezco_link_cca_id ON ezcontentobject_link (contentclassattribute_id); +-- ibexa:sql-statement-separator +CREATE INDEX ezcontentclass_attr_dts ON ezcontentclass_attribute (data_type_string); +-- ibexa:sql-statement-separator +CREATE INDEX ezcontentobject_attribute_co_id_ver ON ezcontentobject_attribute (contentobject_id, version); +-- ibexa:sql-statement-separator +CREATE INDEX ezurl_ol_coa_id_cav ON ezurl_object_link (contentobject_attribute_id, contentobject_attribute_version); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-mysql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-mysql.sql new file mode 100644 index 0000000000..474d0a11dc --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-mysql.sql @@ -0,0 +1 @@ +ALTER TABLE ezurlalias_ml ADD INDEX ezurlalias_ml_link (link); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-postgresql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-postgresql.sql new file mode 100644 index 0000000000..34117d2b9c --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-postgresql.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS ezurlalias_ml_link ON ezurlalias_ml (link); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-sqlite.sql new file mode 100644 index 0000000000..34117d2b9c --- /dev/null +++ b/src/bundle/RepositoryInstaller/Migration/sql/add-urlalias-ml-link-index-sqlite.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS ezurlalias_ml_link ON ezurlalias_ml (link); diff --git a/src/bundle/RepositoryInstaller/Resources/config/services.yml b/src/bundle/RepositoryInstaller/Resources/config/services.yml index 07ecdc49cd..0a9a329f03 100644 --- a/src/bundle/RepositoryInstaller/Resources/config/services.yml +++ b/src/bundle/RepositoryInstaller/Resources/config/services.yml @@ -13,6 +13,22 @@ services: tags: - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\AddContentPerformanceIndexesMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\RepositoryInstaller\Migration\AddUrlAliasMlLinkIndexMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + Ibexa\Bundle\RepositoryInstaller\Migration\RenameSchemaTo5_0Migration: autowire: true public: false From 37e3b4a92fa18a0457c1f945738898158595c8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 29 Jul 2026 09:36:58 +0200 Subject: [PATCH 3/8] Fixed guard crash on installs that never had the pre-rename table $schema->getTable() throws TableDoesNotExist rather than returning null, so a guard that calls it directly (without checking hasTable() first) crashes -- rather than skipping -- on any install that never had the table under this name at all. Caught via live testing against a real database. Guard now checks hasTable() first. Same content as the 4.6 branch. --- .../Migration/AddContentPerformanceIndexesMigration.php | 2 +- .../Migration/AddUrlAliasMlLinkIndexMigration.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php b/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php index 06dba06a53..4665715be8 100644 --- a/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php +++ b/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php @@ -43,7 +43,7 @@ public function up(Schema $schema): void { $this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); - if ($schema->getTable('ezcontentobject_link')->hasIndex('ezco_link_cca_id')) { + if (!$schema->hasTable('ezcontentobject_link') || $schema->getTable('ezcontentobject_link')->hasIndex('ezco_link_cca_id')) { return; } diff --git a/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php b/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php index 7ce1f395a1..0451419d8e 100644 --- a/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php +++ b/src/bundle/RepositoryInstaller/Migration/AddUrlAliasMlLinkIndexMigration.php @@ -42,7 +42,7 @@ public function up(Schema $schema): void { $this->abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); - if ($schema->getTable('ezurlalias_ml')->hasIndex('ezurlalias_ml_link')) { + if (!$schema->hasTable('ezurlalias_ml') || $schema->getTable('ezurlalias_ml')->hasIndex('ezurlalias_ml_link')) { return; } From 578909dc2556d5f63f80aaaf7465f7592385cb54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Wed, 29 Jul 2026 10:02:56 +0200 Subject: [PATCH 4/8] Removed pre-4.6-origin AddContentPerformanceIndexesMigration, folded into baseline Same rationale as ibexa/product-catalog: doctrine migrations only exist starting at 4.6, so InstallSchemaMigration's baseline already includes these indexes (originally shipped via installer's upgrade/db/ibexa-4.5.0-to-4.5.1.sql). A standalone migration for pre-4.6 content can never have real work to do on a genuine 4.6+ install. --- .../AddContentPerformanceIndexesMigration.php | 58 ------------------- .../add-content-performance-indexes-mysql.sql | 7 --- ...content-performance-indexes-postgresql.sql | 7 --- ...add-content-performance-indexes-sqlite.sql | 7 --- .../Resources/config/services.yml | 8 --- 5 files changed, 87 deletions(-) delete mode 100644 src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php delete mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql delete mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql delete mode 100644 src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql diff --git a/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php b/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php deleted file mode 100644 index 4665715be8..0000000000 --- a/src/bundle/RepositoryInstaller/Migration/AddContentPerformanceIndexesMigration.php +++ /dev/null @@ -1,58 +0,0 @@ -abortIfUnsupportedPlatform(SqlPlatform::MYSQL, SqlPlatform::POSTGRESQL, SqlPlatform::SQLITE); - - if (!$schema->hasTable('ezcontentobject_link') || $schema->getTable('ezcontentobject_link')->hasIndex('ezco_link_cca_id')) { - return; - } - - if ($this->isMySQL()) { - $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-mysql.sql'); - } elseif ($this->isPostgreSQL()) { - $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-postgresql.sql'); - } elseif ($this->isSqlite()) { - $this->addSqlFile(__DIR__ . '/sql/add-content-performance-indexes-sqlite.sql'); - } - } -} diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql deleted file mode 100644 index e59a9c8f37..0000000000 --- a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-mysql.sql +++ /dev/null @@ -1,7 +0,0 @@ -ALTER TABLE ezcontentobject_link ADD INDEX ezco_link_cca_id (contentclassattribute_id); --- ibexa:sql-statement-separator -ALTER TABLE ezcontentclass_attribute ADD INDEX ezcontentclass_attr_dts (data_type_string); --- ibexa:sql-statement-separator -ALTER TABLE ezurl_object_link ADD INDEX ezurl_ol_coa_id_cav (contentobject_attribute_id, contentobject_attribute_version); --- ibexa:sql-statement-separator -ALTER TABLE ezcontentobject_attribute ADD INDEX ezcontentobject_attribute_co_id_ver (contentobject_id, version); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql deleted file mode 100644 index a506f987c5..0000000000 --- a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-postgresql.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE INDEX ezco_link_cca_id ON ezcontentobject_link (contentclassattribute_id); --- ibexa:sql-statement-separator -CREATE INDEX ezcontentclass_attr_dts ON ezcontentclass_attribute (data_type_string); --- ibexa:sql-statement-separator -CREATE INDEX ezcontentobject_attribute_co_id_ver ON ezcontentobject_attribute (contentobject_id, version); --- ibexa:sql-statement-separator -CREATE INDEX ezurl_ol_coa_id_cav ON ezurl_object_link (contentobject_attribute_id, contentobject_attribute_version); diff --git a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql deleted file mode 100644 index a506f987c5..0000000000 --- a/src/bundle/RepositoryInstaller/Migration/sql/add-content-performance-indexes-sqlite.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE INDEX ezco_link_cca_id ON ezcontentobject_link (contentclassattribute_id); --- ibexa:sql-statement-separator -CREATE INDEX ezcontentclass_attr_dts ON ezcontentclass_attribute (data_type_string); --- ibexa:sql-statement-separator -CREATE INDEX ezcontentobject_attribute_co_id_ver ON ezcontentobject_attribute (contentobject_id, version); --- ibexa:sql-statement-separator -CREATE INDEX ezurl_ol_coa_id_cav ON ezurl_object_link (contentobject_attribute_id, contentobject_attribute_version); diff --git a/src/bundle/RepositoryInstaller/Resources/config/services.yml b/src/bundle/RepositoryInstaller/Resources/config/services.yml index 0a9a329f03..64cd99dd2f 100644 --- a/src/bundle/RepositoryInstaller/Resources/config/services.yml +++ b/src/bundle/RepositoryInstaller/Resources/config/services.yml @@ -13,14 +13,6 @@ services: tags: - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - Ibexa\Bundle\RepositoryInstaller\Migration\AddContentPerformanceIndexesMigration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - Ibexa\Bundle\RepositoryInstaller\Migration\AddUrlAliasMlLinkIndexMigration: autowire: true public: false From 0394ec86a02b418de7e1e2eadf8ab8836a81ef12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Thu, 30 Jul 2026 14:03:19 +0200 Subject: [PATCH 5/8] Fix ibexa/doctrine-migrations constraint to track the 5.0 branch The feat/doctrine-migrations-5.0 branch it previously required has been merged into and deleted from the primary 5.0 branch upstream, so the old constraint no longer resolves. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3905acfdd4..b4857a16ed 100644 --- a/composer.json +++ b/composer.json @@ -28,7 +28,7 @@ "friendsofphp/proxy-manager-lts": "^1.0", "friendsofsymfony/http-cache-bundle": "^3.0", "friendsofsymfony/jsrouting-bundle": "^3.5", - "ibexa/doctrine-migrations": "dev-feat/doctrine-migrations-5.0", + "ibexa/doctrine-migrations": "~5.0.x-dev", "ibexa/doctrine-schema": "~5.0.x-dev", "ibexa/jms-translation-bundle": "^2.6.0", "league/flysystem-memory": "^2.0.6", From f7b268fa845cf0166a7b6ddecd93fe5c4bf3454b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Thu, 30 Jul 2026 14:03:32 +0200 Subject: [PATCH 6/8] Fix TaggedMigrationsRunner passing an empty Schema to every migration $migration->up(new Schema()) gave every migration's hasTable()/ getTable() guard checks an always-empty schema to inspect, regardless of what earlier migrations in the same run (or a prior run) actually created against the real database -- guards written the correct way (checking hasTable() before trusting a table exists) would incorrectly conclude the table is missing and either skip work that still needs doing, or crash outright on getTable() for a table that does exist. Introspect the live database instead, the same way the standalone 'doctrine:migrations:migrate' command already does via DBALSchemaDiffProvider::createFromSchema(). --- .../Migration/TaggedMigrationsRunner.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bundle/RepositoryInstaller/Migration/TaggedMigrationsRunner.php b/src/bundle/RepositoryInstaller/Migration/TaggedMigrationsRunner.php index 4731a0a49c..198bb88e35 100644 --- a/src/bundle/RepositoryInstaller/Migration/TaggedMigrationsRunner.php +++ b/src/bundle/RepositoryInstaller/Migration/TaggedMigrationsRunner.php @@ -10,7 +10,6 @@ use DateTimeImmutable; use Doctrine\DBAL\Connection; -use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\DependencyFactory; use Doctrine\Migrations\Metadata\MigrationPlan; use Doctrine\Migrations\Metadata\Storage\MetadataStorage; @@ -92,7 +91,12 @@ private function executeMigration( $executedAt = new DateTimeImmutable(); $migration = $migrationPlan->getMigration(); - $migration->up(new Schema()); + // A freshly-constructed, empty Schema() would make every hasTable()/getTable() guard + // check inside a migration see nothing at all, regardless of what previous migrations + // in this same run (or a prior run) actually created -- introspect the live database + // instead, same as what "doctrine:migrations:migrate" itself does via + // DBALSchemaDiffProvider::createFromSchema(). + $migration->up($connection->getSchemaManager()->createSchema()); $queries = $migration->getSql(); foreach ($queries as $query) { From 1f72e30e3b96ec07252ce03f13f0791ca7452d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Thu, 30 Jul 2026 19:17:15 +0200 Subject: [PATCH 7/8] Move core's own Doctrine Migrations into IbexaCoreBundle InstallSchemaMigration, AddUrlAliasMlLinkIndexMigration, RenameSchemaTo5_0Migration, ImportDataMigration, and FixLegacyIdentifiersMigration only depend on the persistence connection -- they don't need anything from IbexaRepositoryInstallerBundle (CoreInstaller, BuildSchemaSubscriber), which is scoped to installer-time concerns and additionally requires DoctrineSchemaBundle to boot at all. Declaring them in IbexaCoreBundle instead matches how every other package in this effort declares its own InstallSchemaMigration in its own bundle, and lets any consumer discover core's schema migrations via ibexa:doctrine:migrations:migrate without needing the installer bundle registered -- useful for integration test kernels that don't otherwise need CoreInstaller. --- .../IbexaCoreExtension.php | 2 + .../Resources/config/doctrine_migrations.yml | 40 +++++++++++++++++++ .../Resources/config/services.yml | 40 ------------------- 3 files changed, 42 insertions(+), 40 deletions(-) create mode 100644 src/bundle/Core/Resources/config/doctrine_migrations.yml diff --git a/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php b/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php index 6aa03d46ea..d39d30334c 100644 --- a/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php +++ b/src/bundle/Core/DependencyInjection/IbexaCoreExtension.php @@ -119,6 +119,8 @@ public function load(array $configs, ContainerBuilder $container): void // Base services and services overrides $loader->load('services.yml'); + // Doctrine Migrations for core's own schema, alongside the legacy SchemaBuilderEvent path + $loader->load('doctrine_migrations.yml'); // Security services $loader->load('security.yml'); // HTTP Kernel diff --git a/src/bundle/Core/Resources/config/doctrine_migrations.yml b/src/bundle/Core/Resources/config/doctrine_migrations.yml new file mode 100644 index 0000000000..efdb675c83 --- /dev/null +++ b/src/bundle/Core/Resources/config/doctrine_migrations.yml @@ -0,0 +1,40 @@ +services: + Ibexa\Bundle\RepositoryInstaller\Migration\InstallSchemaMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\RepositoryInstaller\Migration\AddUrlAliasMlLinkIndexMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\RepositoryInstaller\Migration\RenameSchemaTo5_0Migration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\RepositoryInstaller\Migration\ImportDataMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } + + Ibexa\Bundle\RepositoryInstaller\Migration\FixLegacyIdentifiersMigration: + autowire: true + public: false + arguments: + $connection: '@ibexa.persistence.connection' + tags: + - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } diff --git a/src/bundle/RepositoryInstaller/Resources/config/services.yml b/src/bundle/RepositoryInstaller/Resources/config/services.yml index 64cd99dd2f..a06a1f65c3 100644 --- a/src/bundle/RepositoryInstaller/Resources/config/services.yml +++ b/src/bundle/RepositoryInstaller/Resources/config/services.yml @@ -5,46 +5,6 @@ services: arguments: - '@=service("kernel").locateResource("@IbexaCoreBundle/Resources/config/storage/legacy/schema.yaml")' - Ibexa\Bundle\RepositoryInstaller\Migration\InstallSchemaMigration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - - Ibexa\Bundle\RepositoryInstaller\Migration\AddUrlAliasMlLinkIndexMigration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - - Ibexa\Bundle\RepositoryInstaller\Migration\RenameSchemaTo5_0Migration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - - Ibexa\Bundle\RepositoryInstaller\Migration\ImportDataMigration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - - Ibexa\Bundle\RepositoryInstaller\Migration\FixLegacyIdentifiersMigration: - autowire: true - public: false - arguments: - $connection: '@ibexa.persistence.connection' - tags: - - { name: !php/const Ibexa\Contracts\DoctrineMigrations\Migrations\IbexaMigrationTag::TAG } - Ibexa\Bundle\RepositoryInstaller\Migration\TaggedMigrationsRunner: public: false arguments: From 0b58b3e7d803c376a1ea62070bd925244c3effd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Niedzielski?= Date: Thu, 30 Jul 2026 22:54:43 +0200 Subject: [PATCH 8/8] Fix SQLite-dialect bugs in InstallSchemaMigration/ImportDataMigration SQL install-schema-sqlite.sql and import-data-sqlite.sql were generated from the MySQL source without adapting to SQLite's stricter SQL semantics: - import-data-sqlite.sql used MySQL-style backslash escapes (\" and \n) inside string literals. SQLite (unlike MySQL) does not interpret backslash as an escape character at all, so these were stored as literal two-byte sequences, corrupting PHP-serialized content-type names/descriptions (unserialize() failures) and embedded XML field data (DOMDocument parse failures, e.g. the admin user's own ezimage field). - install-schema-sqlite.sql collapsed the composite primary keys on ezcontentclass, ezcontentclass_attribute and ezcontentobject_attribute (id, version) down to a single-column `id INTEGER PRIMARY KEY AUTOINCREMENT`, dropping the `version` component entirely -- unlike the mysql/postgresql variants, which both correctly declare `PRIMARY KEY(id, version)`. This made SQLite reject the second row (e.g. publishing a content-type draft, which legitimately reuses the same id with a different version/status) as a duplicate primary key. Both only affect the SQLite platform; MySQL and PostgreSQL were already correct. --- .../Migration/sql/import-data-sqlite.sql | 96 +++++++++++-------- .../Migration/sql/install-schema-sqlite.sql | 15 +-- 2 files changed, 66 insertions(+), 45 deletions(-) diff --git a/src/bundle/RepositoryInstaller/Migration/sql/import-data-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/import-data-sqlite.sql index 81b1803b4c..98a6a7d279 100644 --- a/src/bundle/RepositoryInstaller/Migration/sql/import-data-sqlite.sql +++ b/src/bundle/RepositoryInstaller/Migration/sql/import-data-sqlite.sql @@ -30,38 +30,38 @@ INSERT INTO `ezcontent_language` (`disabled`, `id`, `locale`, `name`) VALUES (0, 2, 'eng-GB', 'English (United Kingdom)'); -- ibexa:sql-statement-separator INSERT INTO `ezcontentclass` (`always_available`, `contentobject_name`, `created`, `creator_id`, `id`, `identifier`, `initial_language_id`, `is_container`, `language_mask`, `modified`, `modifier_id`, `remote_id`, `serialized_description_list`, `serialized_name_list`, `sort_field`, `sort_order`, `url_alias_name`, `version`) -VALUES (1,'',1024392098,14,1,'folder',2,1,2,1448831672,14,'a3d405b81be900468eb153d774f4f0d2','a:0:{}','a:1:{s:6:\"eng-GB\";s:6:\"Folder\";}',1,1,NULL,0), - (0,'',1024392098,14,2,'article',2,1,3,1082454989,14,'c15b600eb9198b1924063b5a68758232',NULL,'a:2:{s:6:\"eng-GB\";s:7:\"Article\";s:16:\"always-available\";s:6:\"eng-GB\";}',1,1,NULL,0), - (1,'',1024392098,14,3,'user_group',2,1,3,1048494743,14,'25b4268cdcd01921b808a0d854b877ef',NULL,'a:2:{s:6:\"eng-GB\";s:10:\"User group\";s:16:\"always-available\";s:6:\"eng-GB\";}',1,1,NULL,0), - (1,' ',1024392098,14,4,'user',2,0,3,1082018364,14,'40faa822edc579b02c25f6bb7beec3ad',NULL,'a:2:{s:6:\"eng-GB\";s:4:\"User\";s:16:\"always-available\";s:6:\"eng-GB\";}',1,1,NULL,0), - (1,'',1031484992,14,5,'image',2,0,3,1048494784,14,'f6df12aa74e36230eb675f364fccd25a',NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Image\";s:16:\"always-available\";s:6:\"eng-GB\";}',1,1,NULL,0), - (1,'',1052385472,14,12,'file',2,0,3,1052385669,14,'637d58bfddf164627bdfd265733280a0',NULL,'a:2:{s:6:\"eng-GB\";s:4:\"File\";s:16:\"always-available\";s:6:\"eng-GB\";}',1,1,NULL,0); +VALUES (1,'',1024392098,14,1,'folder',2,1,2,1448831672,14,'a3d405b81be900468eb153d774f4f0d2','a:0:{}','a:1:{s:6:"eng-GB";s:6:"Folder";}',1,1,NULL,0), + (0,'',1024392098,14,2,'article',2,1,3,1082454989,14,'c15b600eb9198b1924063b5a68758232',NULL,'a:2:{s:6:"eng-GB";s:7:"Article";s:16:"always-available";s:6:"eng-GB";}',1,1,NULL,0), + (1,'',1024392098,14,3,'user_group',2,1,3,1048494743,14,'25b4268cdcd01921b808a0d854b877ef',NULL,'a:2:{s:6:"eng-GB";s:10:"User group";s:16:"always-available";s:6:"eng-GB";}',1,1,NULL,0), + (1,' ',1024392098,14,4,'user',2,0,3,1082018364,14,'40faa822edc579b02c25f6bb7beec3ad',NULL,'a:2:{s:6:"eng-GB";s:4:"User";s:16:"always-available";s:6:"eng-GB";}',1,1,NULL,0), + (1,'',1031484992,14,5,'image',2,0,3,1048494784,14,'f6df12aa74e36230eb675f364fccd25a',NULL,'a:2:{s:6:"eng-GB";s:5:"Image";s:16:"always-available";s:6:"eng-GB";}',1,1,NULL,0), + (1,'',1052385472,14,12,'file',2,0,3,1052385669,14,'637d58bfddf164627bdfd265733280a0',NULL,'a:2:{s:6:"eng-GB";s:4:"File";s:16:"always-available";s:6:"eng-GB";}',1,1,NULL,0); -- ibexa:sql-statement-separator INSERT INTO `ezcontentclass_attribute` (`can_translate`, `category`, `contentclass_id`, `data_float1`, `data_float2`, `data_float3`, `data_float4`, `data_int1`, `data_int2`, `data_int3`, `data_int4`, `data_text1`, `data_text2`, `data_text3`, `data_text4`, `data_text5`, `data_type_string`, `id`, `identifier`, `is_information_collector`, `is_required`, `is_searchable`, `is_thumbnail`, `placement`, `serialized_data_text`, `serialized_description_list`, `serialized_name_list`, `version`) -VALUES (1,'',2,0,0,0,0,255,0,0,0,'New article','','','','','ezstring',1,'title',0,1,1,1,0,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Title\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',1,NULL,NULL,NULL,NULL,255,0,NULL,NULL,'Folder',NULL,NULL,NULL,NULL,'ezstring',4,'name',0,1,1,0,1,'N;','a:0:{}','a:1:{s:6:\"eng-GB\";s:4:\"Name\";}',0), - (1,'',3,0,0,0,0,255,0,0,0,'','','','',NULL,'ezstring',6,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:4:\"Name\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',3,0,0,0,0,255,0,0,0,'','','','',NULL,'ezstring',7,'description',0,0,1,0,2,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:11:\"Description\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',4,0,0,0,0,255,0,0,0,'','','','','','ezstring',8,'first_name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:10:\"First name\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',4,0,0,0,0,255,0,0,0,'','','','','','ezstring',9,'last_name',0,1,1,0,2,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:9:\"Last name\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (0,'',4,0,0,0,0,7,10,0,0,'','^[^@]+$','','','','ezuser',12,'user_account',0,1,0,0,3,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:12:\"User account\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',5,0,0,0,0,150,0,0,0,'','','','',NULL,'ezstring',116,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:4:\"Name\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',5,0,0,0,0,10,0,0,0,'','','','',NULL,'ezrichtext',117,'caption',0,0,1,0,2,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:7:\"Caption\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',5,10.0,0,0,0,0,0,0,0,'MB','','','',NULL,'ezimage',118,'image',0,0,1,1,3,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Image\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',1,NULL,NULL,NULL,NULL,5,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezrichtext',119,'short_description',0,0,1,0,3,'N;','a:0:{}','a:1:{s:6:\"eng-GB\";s:17:\"Short description\";}',0), - (1,'',2,0,0,0,0,10,0,0,0,'','','','','','ezrichtext',120,'intro',0,1,1,0,4,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Intro\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',2,0,0,0,0,20,0,0,0,'','','','','','ezrichtext',121,'body',0,0,1,0,5,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:4:\"Body\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (0,'',2,0,0,0,0,0,0,0,0,'','','','','','ezboolean',123,'enable_comments',0,0,0,0,6,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:15:\"Enable comments\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',12,0,0,0,0,0,0,0,0,'New file','','','',NULL,'ezstring',146,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:4:\"Name\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',12,0,0,0,0,10,0,0,0,'','','','',NULL,'ezrichtext',147,'description',0,0,1,0,2,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:11:\"Description\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',12,0,0,0,0,0,0,0,0,'','','','',NULL,'ezbinaryfile',148,'file',0,1,0,0,3,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:4:\"File\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',2,0,0,0,0,255,0,0,0,'','','','','','ezstring',152,'short_title',0,0,1,0,2,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:11:\"Short title\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',2,0,0,0,0,1,0,0,0,'','','','','','ezauthor',153,'author',0,0,0,0,3,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:6:\"Author\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',2,0,0,0,0,0,0,0,0,'','','','','','ezobjectrelation',154,'image',0,0,1,0,7,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Image\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',1,NULL,NULL,NULL,NULL,100,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezstring',155,'short_name',0,0,1,0,2,'N;','a:0:{}','a:1:{s:6:\"eng-GB\";s:10:\"Short name\";}',0), - (1,'',1,NULL,NULL,NULL,NULL,20,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezrichtext',156,'description',0,0,1,0,4,'N;','a:0:{}','a:1:{s:6:\"eng-GB\";s:11:\"Description\";}',0), - (1,'',4,0,0,0,0,10,0,0,0,'','','','','','eztext',179,'signature',0,0,1,0,4,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:9:\"Signature\";s:16:\"always-available\";s:6:\"eng-GB\";}',0), - (1,'',4,10.0,0,0,0,0,0,0,0,'MB','','','','','ezimage',180,'image',0,0,0,1,5,NULL,NULL,'a:2:{s:6:\"eng-GB\";s:5:\"Image\";s:16:\"always-available\";s:6:\"eng-GB\";}',0); +VALUES (1,'',2,0,0,0,0,255,0,0,0,'New article','','','','','ezstring',1,'title',0,1,1,1,0,NULL,NULL,'a:2:{s:6:"eng-GB";s:5:"Title";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',1,NULL,NULL,NULL,NULL,255,0,NULL,NULL,'Folder',NULL,NULL,NULL,NULL,'ezstring',4,'name',0,1,1,0,1,'N;','a:0:{}','a:1:{s:6:"eng-GB";s:4:"Name";}',0), + (1,'',3,0,0,0,0,255,0,0,0,'','','','',NULL,'ezstring',6,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:"eng-GB";s:4:"Name";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',3,0,0,0,0,255,0,0,0,'','','','',NULL,'ezstring',7,'description',0,0,1,0,2,NULL,NULL,'a:2:{s:6:"eng-GB";s:11:"Description";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',4,0,0,0,0,255,0,0,0,'','','','','','ezstring',8,'first_name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:"eng-GB";s:10:"First name";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',4,0,0,0,0,255,0,0,0,'','','','','','ezstring',9,'last_name',0,1,1,0,2,NULL,NULL,'a:2:{s:6:"eng-GB";s:9:"Last name";s:16:"always-available";s:6:"eng-GB";}',0), + (0,'',4,0,0,0,0,7,10,0,0,'','^[^@]+$','','','','ezuser',12,'user_account',0,1,0,0,3,NULL,NULL,'a:2:{s:6:"eng-GB";s:12:"User account";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',5,0,0,0,0,150,0,0,0,'','','','',NULL,'ezstring',116,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:"eng-GB";s:4:"Name";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',5,0,0,0,0,10,0,0,0,'','','','',NULL,'ezrichtext',117,'caption',0,0,1,0,2,NULL,NULL,'a:2:{s:6:"eng-GB";s:7:"Caption";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',5,10.0,0,0,0,0,0,0,0,'MB','','','',NULL,'ezimage',118,'image',0,0,1,1,3,NULL,NULL,'a:2:{s:6:"eng-GB";s:5:"Image";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',1,NULL,NULL,NULL,NULL,5,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezrichtext',119,'short_description',0,0,1,0,3,'N;','a:0:{}','a:1:{s:6:"eng-GB";s:17:"Short description";}',0), + (1,'',2,0,0,0,0,10,0,0,0,'','','','','','ezrichtext',120,'intro',0,1,1,0,4,NULL,NULL,'a:2:{s:6:"eng-GB";s:5:"Intro";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',2,0,0,0,0,20,0,0,0,'','','','','','ezrichtext',121,'body',0,0,1,0,5,NULL,NULL,'a:2:{s:6:"eng-GB";s:4:"Body";s:16:"always-available";s:6:"eng-GB";}',0), + (0,'',2,0,0,0,0,0,0,0,0,'','','','','','ezboolean',123,'enable_comments',0,0,0,0,6,NULL,NULL,'a:2:{s:6:"eng-GB";s:15:"Enable comments";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',12,0,0,0,0,0,0,0,0,'New file','','','',NULL,'ezstring',146,'name',0,1,1,0,1,NULL,NULL,'a:2:{s:6:"eng-GB";s:4:"Name";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',12,0,0,0,0,10,0,0,0,'','','','',NULL,'ezrichtext',147,'description',0,0,1,0,2,NULL,NULL,'a:2:{s:6:"eng-GB";s:11:"Description";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',12,0,0,0,0,0,0,0,0,'','','','',NULL,'ezbinaryfile',148,'file',0,1,0,0,3,NULL,NULL,'a:2:{s:6:"eng-GB";s:4:"File";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',2,0,0,0,0,255,0,0,0,'','','','','','ezstring',152,'short_title',0,0,1,0,2,NULL,NULL,'a:2:{s:6:"eng-GB";s:11:"Short title";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',2,0,0,0,0,1,0,0,0,'','','','','','ezauthor',153,'author',0,0,0,0,3,NULL,NULL,'a:2:{s:6:"eng-GB";s:6:"Author";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',2,0,0,0,0,0,0,0,0,'','','','','','ezobjectrelation',154,'image',0,0,1,0,7,NULL,NULL,'a:2:{s:6:"eng-GB";s:5:"Image";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',1,NULL,NULL,NULL,NULL,100,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezstring',155,'short_name',0,0,1,0,2,'N;','a:0:{}','a:1:{s:6:"eng-GB";s:10:"Short name";}',0), + (1,'',1,NULL,NULL,NULL,NULL,20,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ezrichtext',156,'description',0,0,1,0,4,'N;','a:0:{}','a:1:{s:6:"eng-GB";s:11:"Description";}',0), + (1,'',4,0,0,0,0,10,0,0,0,'','','','','','eztext',179,'signature',0,0,1,0,4,NULL,NULL,'a:2:{s:6:"eng-GB";s:9:"Signature";s:16:"always-available";s:6:"eng-GB";}',0), + (1,'',4,10.0,0,0,0,0,0,0,0,'MB','','','','','ezimage',180,'image',0,0,0,1,5,NULL,NULL,'a:2:{s:6:"eng-GB";s:5:"Image";s:16:"always-available";s:6:"eng-GB";}',0); -- ibexa:sql-statement-separator INSERT INTO `ezcontentclass_classgroup` (`contentclass_id`, `contentclass_version`, `group_id`, `group_name`) VALUES (1, 0, 1, 'Content'), @@ -116,29 +116,47 @@ VALUES (0,4,1,NULL,NULL,'Ibexa Platform','ezstring',1,'eng-GB',3,0,'ibexa platfo (0,9,14,0,0,'User','ezstring',29,'eng-GB',3,0,'user',3), (30,12,14,0,0,'','ezuser',30,'eng-GB',3,0,'',3), (0,4,41,0,0,'Media','ezstring',98,'eng-GB',3,0,'',1), - (0,119,41,0,1045487555,'\n
\n','ezrichtext',99,'eng-GB',3,0,'',1), + (0,119,41,0,1045487555,' +
+','ezrichtext',99,'eng-GB',3,0,'',1), (0,6,42,0,0,'Anonymous users','ezstring',100,'eng-GB',3,0,'anonymous users',1), (0,7,42,0,0,'User group for the anonymous user','ezstring',101,'eng-GB',3,0,'user group for the anonymous user',1), (0,155,1,NULL,NULL,'Ibexa Platform','ezstring',102,'eng-GB',3,0,'ibexa platform',9), (0,155,41,0,0,'','ezstring',103,'eng-GB',3,0,'',1), (0,156,1,NULL,NULL,'
This is the clean installation coming with Ibexa Platform.It''s a bare-bones setup of the Platform, an excellent foundation to build upon if you want to start your project from scratch.
','ezrichtext',104,'eng-GB',3,0,'',9), - (0,156,41,0,1045487555,'\n
\n','ezrichtext',105,'eng-GB',3,0,'',1), + (0,156,41,0,1045487555,' +
+','ezrichtext',105,'eng-GB',3,0,'',1), (0,4,49,0,0,'Images','ezstring',142,'eng-GB',3,0,'images',1), (0,155,49,0,0,'','ezstring',143,'eng-GB',3,0,'',1), - (0,119,49,0,1045487555,'\n
\n','ezrichtext',144,'eng-GB',3,0,'',1), - (0,156,49,0,1045487555,'\n
\n','ezrichtext',145,'eng-GB',3,0,'',1), + (0,119,49,0,1045487555,' +
+','ezrichtext',144,'eng-GB',3,0,'',1), + (0,156,49,0,1045487555,' +
+','ezrichtext',145,'eng-GB',3,0,'',1), (0,4,50,0,0,'Files','ezstring',147,'eng-GB',3,0,'files',1), (0,155,50,0,0,'','ezstring',148,'eng-GB',3,0,'',1), - (0,119,50,0,1045487555,'\n
\n','ezrichtext',149,'eng-GB',3,0,'',1), - (0,156,50,0,1045487555,'\n
\n','ezrichtext',150,'eng-GB',3,0,'',1), + (0,119,50,0,1045487555,' +
+','ezrichtext',149,'eng-GB',3,0,'',1), + (0,156,50,0,1045487555,' +
+','ezrichtext',150,'eng-GB',3,0,'',1), (0,4,51,0,0,'Multimedia','ezstring',152,'eng-GB',3,0,'multimedia',1), (0,155,51,0,0,'','ezstring',153,'eng-GB',3,0,'',1), - (0,119,51,0,1045487555,'\n
\n','ezrichtext',154,'eng-GB',3,0,'',1), - (0,156,51,0,1045487555,'\n
\n','ezrichtext',155,'eng-GB',3,0,'',1), + (0,119,51,0,1045487555,' +
+','ezrichtext',154,'eng-GB',3,0,'',1), + (0,156,51,0,1045487555,' +
+','ezrichtext',155,'eng-GB',3,0,'',1), (0,179,10,0,0,'','eztext',177,'eng-GB',3,0,'',2), (0,179,14,0,0,'','eztext',178,'eng-GB',3,0,'',3), (0,180,10,0,0,'','ezimage',179,'eng-GB',3,0,'',2), - (0,180,14,0,0,'\n\n','ezimage',180,'eng-GB',3,0,'',3); + (0,180,14,0,0,' + +','ezimage',180,'eng-GB',3,0,'',3); -- ibexa:sql-statement-separator INSERT INTO `ezcontentobject_name` (`content_translation`, `content_version`, `contentobject_id`, `language_id`, `name`, `real_translation`) VALUES ('eng-GB',9,1,2,'Ibexa Platform','eng-GB'), diff --git a/src/bundle/RepositoryInstaller/Migration/sql/install-schema-sqlite.sql b/src/bundle/RepositoryInstaller/Migration/sql/install-schema-sqlite.sql index 38c87c1365..899b6cf872 100644 --- a/src/bundle/RepositoryInstaller/Migration/sql/install-schema-sqlite.sql +++ b/src/bundle/RepositoryInstaller/Migration/sql/install-schema-sqlite.sql @@ -130,7 +130,7 @@ CREATE INDEX ezcontentbrowsebookmark_user ON ezcontentbrowsebookmark (user_id); CREATE INDEX ezcontentbrowsebookmark_user_location ON ezcontentbrowsebookmark (user_id, node_id); -- ibexa:sql-statement-separator CREATE TABLE ezcontentclass ( - id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + id INTEGER NOT NULL, version INTEGER DEFAULT 0 NOT NULL, always_available INTEGER DEFAULT 0 NOT NULL, contentobject_name VARCHAR(255) DEFAULT NULL, @@ -147,7 +147,8 @@ CREATE TABLE ezcontentclass ( serialized_name_list CLOB DEFAULT NULL, sort_field INTEGER DEFAULT 1 NOT NULL, sort_order INTEGER DEFAULT 1 NOT NULL, - url_alias_name VARCHAR(255) DEFAULT NULL + url_alias_name VARCHAR(255) DEFAULT NULL, + PRIMARY KEY(id, version) ); -- ibexa:sql-statement-separator CREATE INDEX ezcontentclass_version ON ezcontentclass (version); @@ -155,7 +156,7 @@ CREATE INDEX ezcontentclass_version ON ezcontentclass (version); CREATE INDEX ezcontentclass_identifier ON ezcontentclass (identifier, version); -- ibexa:sql-statement-separator CREATE TABLE ezcontentclass_attribute ( - id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + id INTEGER NOT NULL, version INTEGER DEFAULT 0 NOT NULL, can_translate INTEGER DEFAULT 1, category VARCHAR(25) DEFAULT '' NOT NULL, @@ -182,7 +183,8 @@ CREATE TABLE ezcontentclass_attribute ( placement INTEGER DEFAULT 0 NOT NULL, serialized_data_text CLOB DEFAULT NULL, serialized_description_list CLOB DEFAULT NULL, - serialized_name_list CLOB NOT NULL + serialized_name_list CLOB NOT NULL, + PRIMARY KEY(id, version) ); -- ibexa:sql-statement-separator CREATE INDEX ezcontentclass_attr_ccid ON ezcontentclass_attribute (contentclass_id); @@ -263,7 +265,7 @@ CREATE INDEX ezcontentobject_status ON ezcontentobject (status); CREATE UNIQUE INDEX ezcontentobject_remote_id ON ezcontentobject (remote_id); -- ibexa:sql-statement-separator CREATE TABLE ezcontentobject_attribute ( - id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + id INTEGER NOT NULL, version INTEGER DEFAULT 0 NOT NULL, attribute_original_id INTEGER DEFAULT 0, contentclassattribute_id INTEGER DEFAULT 0 NOT NULL, @@ -275,7 +277,8 @@ CREATE TABLE ezcontentobject_attribute ( language_code VARCHAR(20) DEFAULT '' NOT NULL, language_id BIGINT DEFAULT 0 NOT NULL, sort_key_int INTEGER DEFAULT 0 NOT NULL, - sort_key_string VARCHAR(255) DEFAULT '' NOT NULL + sort_key_string VARCHAR(255) DEFAULT '' NOT NULL, + PRIMARY KEY(id, version) ); -- ibexa:sql-statement-separator CREATE INDEX ezcontentobject_attribute_co_id_ver_lang_code ON ezcontentobject_attribute (contentobject_id, version, language_code);