From: | Paul Jungwirth <pj(at)illuminatedcomputing(dot)com> |
---|---|
To: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
Cc: | Gavin Flower <GavinFlower(at)archidevsys(dot)co(dot)nz>, Israel Brewster <israel(at)ravnalaska(dot)net>, "pgsql-general(at)postgresql(dot)org general" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Stored procedure workflow question |
Date: | 2014-12-11 03:07:56 |
Message-ID: | CA+6hpamUmc-DgRLJgh5PXgso1ZBqK0wF0BJOCG-XHy9fA=3p-g@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
How do you handle DDL changes in general? I would treat stored
procedures the same way. For instance Ruby on Rails has "database
migrations" where you write one method to apply the DDL change and
another to revert it, like this:
def up
add_column :employees, :manager_id, :integer
add_index :employees, :manager_id
end
def down
remove_column :employees, :manager_id
end
You could create stored procedures like:
def up
connection.execute <<-EOQ
CREATE OR REPLACE FUNCTION
...
EOQ
end
or even:
def up
connection.execute File.read(Rails.root + 'db' + 'procs' +
'my_function.sql')
end
That's how I'd do it in Rails. Maybe your development context has
something similar?
Paul
On Wed, Dec 10, 2014 at 5:53 PM, Adrian Klaver
<adrian(dot)klaver(at)aklaver(dot)com> wrote:
> On 12/10/2014 05:03 PM, Gavin Flower wrote:
>>
>> On 11/12/14 13:53, Israel Brewster wrote:
>>>
>>> Currently, when I need to create/edit a stored procedure in
>>> Postgresql, my workflow goes like the following:
>>>
>>> - Create/edit the desired function in my "DB Commands" text file
>>> - Copy and paste function into my development database
>>> - Test
>>> - repeat above until it works as desired
>>> - Copy and paste function into my production DB.
>>>
>>> To edit an existing function, the workflow is basically the same as
>>> above, but I first have to find the function in my file.
>>>
>>> This whole workflow just feels kludgy to me. Is there a better way? Or
>>> is that essentially the recommended procedure? Thanks.
>>> -----------------------------------------------
>>> Israel Brewster
>>> Systems Analyst II
>>> Ravn Alaska
>>> 5245 Airport Industrial Rd
>>> Fairbanks, AK 99709
>>> (907) 450-7293
>>> -----------------------------------------------
>>>
>>>
>>>
>>>
>>>
>> I create an SQL file using a text editer, and then execute it in psql
>> using the '\i' command from the appropriate directory:
>>
>> gavin=> \i bus.sql
>>
>> I your case I would test it in one environment and copy it to another.
>>
>> You could use git to track versions of the file and the nature of changes.
>>
>> Though, I am sure there are sophisticated ways of doing this!
>
>
> Two that come to mind:
>
> Sqitch
>
> http://sqitch.org/
>
> Alembic
>
> https://alembic.readthedocs.org/en/latest/
>
>>
>>
>> Cheers,
>> Gavin
>>
>>
>>
>
>
> --
> Adrian Klaver
> adrian(dot)klaver(at)aklaver(dot)com
>
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
--
_________________________________
Pulchritudo splendor veritatis.
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2014-12-11 03:38:37 | Re: I did some testing of GIST/GIN vs BTree indexing… |
Previous Message | Adrian Klaver | 2014-12-11 01:53:30 | Re: Stored procedure workflow question |