Re: Using a Makefile during database development - Mailing list pgsql-general

From Tom Lane
Subject Re: Using a Makefile during database development
Date
Msg-id 5071.1074453027@sss.pgh.pa.us
Whole thread Raw
In response to Using a Makefile during database development  (Bill Moran <wmoran@potentialtech.com>)
Responses Re: Using a Makefile during database development
List pgsql-general
Bill Moran <wmoran@potentialtech.com> writes:
> The problem I'm hitting is this: how can I teach make to know when a
> particular file is newer than the data in the database?

AFAIK there's no direct way to do that; all of make's decisions are
based on existence and mod times of files, so you can't persuade it to
test directly for SQL-level conditions.

However, this sort of problem comes up in many contexts, and make users
have developed a standard solution: you create or touch an empty
"timestamp" file when you do an action such as updating the database
from a particular collection of source files.  The mod time of the
timestamp file can then serve as the comparison value telling make
whether to do it again.  A typical rule would look like:

    db_update.stamp: somefile.sql someotherfile.sql
        psql mydb -f somefile.sql
        psql mydb -f someotherfile.sql
        touch db_update.stamp

You make one stamp file for each action you might or might not need to
do, and then user-level targets look like

    update: db_update.stamp ...

            regards, tom lane

pgsql-general by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: computed field on a table
Next
From: Carlos Costa Portela
Date:
Subject: Great change (size of data dir) upgrading postgresql