@@ -441,3 +441,44 @@ AND pg_get_constraintdef(oid) LIKE '%ON DELETE CASCADE%'
441441-- :doc Adds a cascading delete to delete st2actor entries when corresponding statements are deleted
442442ALTER TABLE statement_to_actor DROP CONSTRAINT statement_fk;
443443ALTER TABLE statement_to_actor ADD CONSTRAINT statement_fk FOREIGN KEY (statement_id) REFERENCES xapi_statement(statement_id) ON DELETE CASCADE ;
444+
445+ /* Migration 2024-05-29 - Universally Convert VARCHAR to TEXT */
446+
447+ -- :name query-varchar-exists
448+ -- :command :query
449+ -- :result :one
450+ -- :doc Query to see if varchar->text conversion has not happened yet.
451+ SELECT 1 FROM information_schema .columns WHERE table_name = ' xapi_statement' AND column_name = ' verb_iri' and data_type = ' character varying' ;
452+
453+ -- :name convert-varchars-to-text!
454+ -- :command :execute
455+ -- :doc Converts all known VARCHAR(255) fields into TEXT fields. Order of execution is critical for ifi constraints
456+ ALTER TABLE xapi_statement ALTER COLUMN verb_iri TYPE TEXT ;
457+
458+ -- Must drop constraints containing ifi (and rebuild after conversion) because conversion in place does not work for actor_fk or actor_idx composites
459+ ALTER TABLE statement_to_actor DROP CONSTRAINT actor_fk;
460+ ALTER TABLE actor DROP CONSTRAINT actor_idx;
461+ ALTER TABLE actor ALTER COLUMN actor_ifi TYPE TEXT ;
462+ ALTER TABLE actor ADD CONSTRAINT actor_idx UNIQUE (actor_ifi, actor_type);
463+ ALTER TABLE statement_to_actor ALTER COLUMN actor_ifi TYPE TEXT ;
464+ ALTER TABLE statement_to_actor ADD CONSTRAINT actor_fk FOREIGN KEY (actor_ifi, actor_type) REFERENCES actor(actor_ifi, actor_type);
465+
466+ ALTER TABLE activity ALTER COLUMN activity_iri TYPE TEXT ;
467+ ALTER TABLE attachment ALTER COLUMN attachment_sha TYPE TEXT ;
468+ ALTER TABLE attachment ALTER COLUMN content_type TYPE TEXT ;
469+ ALTER TABLE statement_to_activity ALTER COLUMN activity_iri TYPE TEXT ;
470+ ALTER TABLE state_document ALTER COLUMN state_id TYPE TEXT ;
471+ ALTER TABLE state_document ALTER COLUMN activity_iri TYPE TEXT ;
472+ ALTER TABLE state_document ALTER COLUMN agent_ifi TYPE TEXT ;
473+ ALTER TABLE state_document ALTER COLUMN content_type TYPE TEXT ;
474+ ALTER TABLE activity_profile_document ALTER COLUMN profile_id TYPE TEXT ;
475+ ALTER TABLE activity_profile_document ALTER COLUMN activity_iri TYPE TEXT ;
476+ ALTER TABLE activity_profile_document ALTER COLUMN content_type TYPE TEXT ;
477+ ALTER TABLE admin_account ALTER COLUMN username TYPE TEXT ;
478+ ALTER TABLE admin_account ALTER COLUMN passhash TYPE TEXT ;
479+ ALTER TABLE admin_account ALTER COLUMN oidc_issuer TYPE TEXT ;
480+ ALTER TABLE lrs_credential ALTER COLUMN api_key TYPE TEXT ;
481+ ALTER TABLE lrs_credential ALTER COLUMN secret_key TYPE TEXT ;
482+ ALTER TABLE credential_to_scope ALTER COLUMN api_key TYPE TEXT ;
483+ ALTER TABLE credential_to_scope ALTER COLUMN secret_key TYPE TEXT ;
484+ ALTER TABLE reaction ALTER COLUMN title TYPE TEXT ;
0 commit comments