Received: from localhost (maia-2.hub.org [200.46.204.187]) by postgresql.org (Postfix) with ESMTP id D70809FA1DA for ; Thu, 28 Dec 2006 14:21:02 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.187]) (amavisd-new, port 10024) with ESMTP id 57088-01 for ; Thu, 28 Dec 2006 14:20:50 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey-1.7.4 Received: from fafnir.androme.com (fafnir.androme.com [62.58.96.158]) by postgresql.org (Postfix) with ESMTP id 826B99F9F47 for ; Thu, 28 Dec 2006 14:20:57 -0400 (AST) Received: by fafnir.androme.com (Postfix, from userid 1003) id 31CC7B9B3D1; Thu, 28 Dec 2006 19:20:56 +0100 (CET) Message-ID: <45940B07.4010708@andromeiberica.com> Date: Thu, 28 Dec 2006 19:20:55 +0100 From: Arnau Reply-To: arnaulist@andromeiberica.com User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 CC: pgsql-sql@postgresql.org Subject: Re: help with version checking References: <000001c72aa7$e705f1e0$0b00a8c0@tedy> <45940403.4010909@andromeiberica.com> <21284.1167328587@sss.pgh.pa.us> <459409A2.9020103@andromeiberica.com> In-Reply-To: <459409A2.9020103@andromeiberica.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200612/181 X-Sequence-Number: 27137 Arnau wrote: > Tom Lane wrote: >> Arnau writes: >>> I don't want, if it's possible, to create a function. >> >> Unlike Oracle, PG makes a strong distinction between SQL and >> programmable languages (including plpgsql). You can't write >> plpgsql code without putting it into a function. >> >> regards, tom lane >> > > I've tried Daniel's suggestion but the Raise doesn't terminate the > script execution, so if doesn't do what I need. Notice the Update 1 > > arebassa@beowulf:~$ psql -d dermagier -f upgrade_agenda.sql > CREATE FUNCTION > psql:upgrade_agenda.sql:16: ERROR: This script needs Agenda version > 1.0.0.0, detected version 1.0.0.1 > UPDATE 1 > > I paste the script I have created: CREATE OR REPLACE FUNCTION check_version() RETURNS void AS ' DECLARE v_version VARCHAR; BEGIN SELECT version INTO v_version FROM agenda_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'; SELECT check_version(); UPDATE agenda_version set version = '1.0.0.1' where id = 1; -- Arnau