@@ -441,3 +441,44 @@ AND pg_get_constraintdef(oid) LIKE '%ON DELETE CASCADE%'
441
441
-- :doc Adds a cascading delete to delete st2actor entries when corresponding statements are deleted
442
442
ALTER TABLE statement_to_actor DROP CONSTRAINT statement_fk;
443
443
ALTER 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