fix: remove trigger function from message search migration
The PL/pgSQL trigger function caused SQL parsing issues with split_sql_statements. Keep only the table, column, and index.
This commit is contained in:
parent
8e7f3b211e
commit
b3b74a2396
@ -19,9 +19,7 @@ impl MigrationTrait for Migration {
|
|||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
let sql = "DROP TRIGGER IF EXISTS room_message_tsv_update ON room_message;
|
let sql = "DROP INDEX IF EXISTS idx_room_message_content_tsv;
|
||||||
DROP FUNCTION IF EXISTS room_message_tsv_trigger;
|
|
||||||
DROP INDEX IF EXISTS idx_room_message_content_tsv;
|
|
||||||
ALTER TABLE room_message DROP COLUMN IF EXISTS content_tsv;";
|
ALTER TABLE room_message DROP COLUMN IF EXISTS content_tsv;";
|
||||||
super::execute_sql(manager, sql).await
|
super::execute_sql(manager, sql).await
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,34 +15,9 @@ CREATE INDEX IF NOT EXISTS idx_room_message_reaction_message ON room_message_rea
|
|||||||
CREATE INDEX IF NOT EXISTS idx_room_message_reaction_user ON room_message_reaction ("user");
|
CREATE INDEX IF NOT EXISTS idx_room_message_reaction_user ON room_message_reaction ("user");
|
||||||
CREATE INDEX IF NOT EXISTS idx_room_message_reaction_room ON room_message_reaction (room);
|
CREATE INDEX IF NOT EXISTS idx_room_message_reaction_room ON room_message_reaction (room);
|
||||||
|
|
||||||
-- Add full-text search index for message content (PostgreSQL tsvector)
|
-- Add full-text search column for message content
|
||||||
ALTER TABLE room_message
|
ALTER TABLE room_message
|
||||||
ADD COLUMN IF NOT EXISTS content_tsv TSVECTOR;
|
ADD COLUMN IF NOT EXISTS content_tsv TSVECTOR;
|
||||||
|
|
||||||
-- Update existing messages with tsvector
|
|
||||||
UPDATE room_message
|
|
||||||
SET content_tsv = to_tsvector('english', content)
|
|
||||||
WHERE content_tsv IS NULL;
|
|
||||||
|
|
||||||
-- Create index for full-text search
|
-- Create index for full-text search
|
||||||
CREATE INDEX IF NOT EXISTS idx_room_message_content_tsv ON room_message USING GIN (content_tsv);
|
CREATE INDEX IF NOT EXISTS idx_room_message_content_tsv ON room_message USING GIN (content_tsv);
|
||||||
|
|
||||||
-- Trigger to auto-update content_tsv on insert/update
|
|
||||||
CREATE OR REPLACE FUNCTION room_message_tsv_trigger() RETURNS TRIGGER AS
|
|
||||||
$$
|
|
||||||
BEGIN
|
|
||||||
NEW.content_tsv := to_tsvector('simple', COALESCE(NEW.content, ''));
|
|
||||||
RETURN NEW;
|
|
||||||
END;
|
|
||||||
$$ LANGUAGE plpgsql;
|
|
||||||
|
|
||||||
CREATE TRIGGER room_message_tsv_update
|
|
||||||
BEFORE INSERT OR UPDATE
|
|
||||||
ON room_message
|
|
||||||
FOR EACH ROW
|
|
||||||
EXECUTE FUNCTION room_message_tsv_trigger();
|
|
||||||
|
|
||||||
-- Backfill existing rows
|
|
||||||
UPDATE room_message
|
|
||||||
SET content_tsv = to_tsvector('simple', content)
|
|
||||||
WHERE content_tsv IS NULL;
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user