Received: from localhost (maia-5.hub.org [200.46.204.182]) by postgresql.org (Postfix) with ESMTP id 2092C9F938C for ; Thu, 28 Dec 2006 14:45:13 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.182]) (amavisd-new, port 10024) with ESMTP id 58219-02 for ; Thu, 28 Dec 2006 14:44:53 -0400 (AST) X-Greylist: delayed 00:59:59.529994 by SQLgrey-1.7.4 Received: from relais.videotron.ca (relais.videotron.ca [24.201.245.36]) by postgresql.org (Postfix) with ESMTP id 8451B9F9F47 for ; Thu, 28 Dec 2006 14:45:05 -0400 (AST) Received: from tedy ([70.82.131.58]) by VL-MO-MR001.ip.videotron.ca (Sun Java System Messaging Server 6.2-2.05 (built Apr 28 2005)) with ESMTP id <0JAZ00CZKVZ4DBF0@VL-MO-MR001.ip.videotron.ca> for pgsql-sql@postgresql.org; Thu, 28 Dec 2006 12:45:05 -0500 (EST) Date: Thu, 28 Dec 2006 12:45:02 -0500 From: Daniel CAUNE Subject: Re: help with version checking In-reply-to: <4593FF4F.40706@andromeiberica.com> To: arnaulist@andromeiberica.com, pgsql-sql@postgresql.org Message-id: <000001c72aa7$e705f1e0$0b00a8c0@tedy> MIME-version: 1.0 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2900.3028 X-Mailer: Microsoft Office Outlook 11 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7BIT Thread-index: Accqphd3Irj5eeXwROKBdcKnYH1O9QAARGQg X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200612/183 X-Sequence-Number: 27139 > I tried to do the following in PostgreSQL: > > DECLARE > v_version VARCHAR; > > BEGIN > SELECT version INTO v_version FROM version WHERE id = 1; > > IF v_version <> ''1.0.0.0'' THEN > RAISE EXCEPTION ''This script needs Agenda version 1.0.0.0, > detected version %'', v_version; > END IF; > > END; > > //The upgrade stuff > > but when I execute it, gives a lot of errors: > > psql -d dermagier -f upgrade_agenda.sql > psql:upgrade_agenda.sql:2: ERROR: syntax error at or near "VARCHAR" at > character 21 > psql:upgrade_agenda.sql:5: ERROR: syntax error at or near "SELECT" at > character 9 > psql:upgrade_agenda.sql:8: ERROR: syntax error at or near "IF" at > character 3 > psql:upgrade_agenda.sql:9: ERROR: syntax error at or near "IF" at > character 7 > psql:upgrade_agenda.sql:11: WARNING: there is no transaction in progress > COMMIT > > > Anybody knows how I can do this or which is the best way to do it? > You should define a PL/PGSQL function such as: CREATE OR REPLACE FUNCTION check_version() RETURNS void AS $$ DECLARE v_version VARCHAR; BEGIN SELECT version INTO v_version FROM version WHERE id = 1; IF v_version <> '1.0.0.0' THEN RAISE EXCEPTION 'This script needs Agenda version 1.0.0.0, detected version %', v_version; END IF; END; $$ LANGUAGE PLPGSQL; Regards, -- Daniel