From 81704cba7ed4c564f21f30e2c12bf08b089ffee8 Mon Sep 17 00:00:00 2001 From: hernani Date: Thu, 22 Apr 2010 15:15:38 +0000 Subject: [PATCH] verify the correct installation of fts triggers at startup git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@63 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum_modules/pgfulltext/pg_fts_install.sql | 18 ++++++--------- forum_modules/pgfulltext/startup.py | 25 ++++++++++++--------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/forum_modules/pgfulltext/pg_fts_install.sql b/forum_modules/pgfulltext/pg_fts_install.sql index 9ac5db9..473085c 100644 --- a/forum_modules/pgfulltext/pg_fts_install.sql +++ b/forum_modules/pgfulltext/pg_fts_install.sql @@ -37,16 +37,11 @@ v :=(v || cv); END LOOP; END IF; - RAISE NOTICE '%', v; RETURN ts_rank_cd(v, plainto_tsquery('english', srch), 32); end $$ LANGUAGE plpgsql; -select node_ranking(50, 'free'); - - - CREATE OR REPLACE FUNCTION set_node_tsv() RETURNS TRIGGER AS $$ begin new.tsv := @@ -58,19 +53,20 @@ select node_ranking(50, 'free'); end $$ LANGUAGE plpgsql; - CREATE OR REPLACE FUNCTION public.create_tsv_noderevision_column () - RETURNS TEXT - AS $$ + CREATE OR REPLACE FUNCTION public.create_tsv_noderevision_column () RETURNS TEXT AS $$ + begin ALTER TABLE forum_noderevision ADD COLUMN tsv tsvector; + DROP TRIGGER IF EXISTS tsvectorupdate ON forum_noderevision; + CREATE TRIGGER tsvectorupdate BEFORE INSERT OR UPDATE ON forum_noderevision FOR EACH ROW EXECUTE PROCEDURE set_node_tsv(); CREATE INDEX noderevision_tsv ON forum_noderevision USING gin(tsv); - SELECT 'tsv column created'::TEXT; - $$ - LANGUAGE 'sql'; + RETURN 'tsv column created'::TEXT; + end + $$ LANGUAGE plpgsql; SELECT CASE WHEN (SELECT true::BOOLEAN FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = 'forum_noderevision') AND attname = 'tsv') diff --git a/forum_modules/pgfulltext/startup.py b/forum_modules/pgfulltext/startup.py index 14eea8e..32a7992 100644 --- a/forum_modules/pgfulltext/startup.py +++ b/forum_modules/pgfulltext/startup.py @@ -3,7 +3,7 @@ from forum.models import KeyValue from django.db import connection, transaction KEY = 'PG_FTSTRIGGERS_VERSION' -VERSION = 2 +VERSION = 3 install = False try: @@ -15,24 +15,27 @@ except: if install: + print 'install' f = open(os.path.join(os.path.dirname(__file__), 'pg_fts_install.sql'), 'r') try: cursor = connection.cursor() cursor.execute(f.read()) transaction.commit_unless_managed() - except: + + try: + kv = KeyValue.objects.get(key=KEY) + except: + kv = KeyValue(key=KEY) + + kv.value = VERSION + kv.save() + + except Exception, e: + import sys, traceback + traceback.print_exc(file=sys.stdout) pass finally: cursor.close() f.close() - - try: - kv = KeyValue.objects.get(key=KEY) - except: - kv = KeyValue(key=KEY) - - kv.value = VERSION - kv.save() - \ No newline at end of file -- 2.39.5