psql Feature request \set query
Hackers,
Just had a feature request from Wheeler, and I don't see why it shouldn't
go on our todo list.
Currently, in psql you can do:
\set myvar 2008-10-23
and you can do
\set myvar `date`
but you can't do
\set myvar "Select now()"
even though you could, bizarrely, do:
\set myvar `psql -c "SELECT now();"`
... provided you were willing to parse out the garbage in the output.
This seems inconsistent, and it seems like the ability to store the results
of a single-row-returning query in a psql variable would be useful for
testing. yes/no?
--
--Josh
Josh Berkus
PostgreSQL
San Francisco
Josh Berkus wrote:
Hackers,
Just had a feature request from Wheeler, and I don't see why it shouldn't
go on our todo list.
I think you're asking for more scriptability in psql. Personally I
think that would be a great idea, but we need a lot more than what's
being proposed here. We'll also need loops, conditionals, etc. We've
had patches for those submitted over the years, but one at a time they
are easily rejected because they're so obviously incomplete.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Josh Berkus <josh@agliodbs.com> writes:
but you can't do
\set myvar "Select now()"
That's a seriously ridiculous syntax.
If you want something like this, a variant of \g that squirts the
results to a variable instead of a file would be more usable:
no quoting problems and no restriction to a single-line query.
regards, tom lane
I think you're asking for more scriptability in psql. Personally I
think that would be a great idea, but we need a lot more than what's
being proposed here. We'll also need loops, conditionals, etc. We've
had patches for those submitted over the years, but one at a time they
are easily rejected because they're so obviously incomplete.
"We can't do anything unless we do everything" is a recipe for failure.
...Robert
On Wed, 22 Oct 2008 19:06:59 -0400
"Robert Haas" <robertmhaas@gmail.com> wrote:
I think you're asking for more scriptability in psql. Personally I
think that would be a great idea, but we need a lot more than what's
being proposed here. We'll also need loops, conditionals, etc.
We've had patches for those submitted over the years, but one at a
time they are easily rejected because they're so obviously
incomplete."We can't do anything unless we do everything" is a recipe for
failure.
True enough, but a car doesn't roll without at least four wheels.
...Robert
--
The PostgreSQL Company since 1997: http://www.commandprompt.com/
PostgreSQL Community Conference: http://www.postgresqlconference.org/
United States PostgreSQL Association: http://www.postgresql.us/
Tom,
If you want something like this, a variant of \g that squirts the
results to a variable instead of a file would be more usable:
no quoting problems and no restriction to a single-line query.
I don't care about syntax, and neither does David, I think. If we use \g
or \o, that's fine with me.
--
--Josh
Josh Berkus
PostgreSQL
San Francisco
True enough, but a car doesn't roll without at least four wheels.
True, but I'm not sure why we'd need three other wheels to make this
feature roll, or what those three wheels would be. Personally, I
would never write a complicated script in psql rather than perl, but I
can imagine using this interactively instead of cutting and pasting as
I presently do.
...Robert
On Wed, 22 Oct 2008 20:43:44 -0400
"Robert Haas" <robertmhaas@gmail.com> wrote:
True enough, but a car doesn't roll without at least four wheels.
True, but I'm not sure why we'd need three other wheels to make this
feature roll, or what those three wheels would be. Personally, I
would never write a complicated script in psql rather than perl, but I
can imagine using this interactively instead of cutting and pasting as
I presently do....Robert
So now that we have both agreed with each other, what do we do? :P
Joshua D. Drake
--
The PostgreSQL Company since 1997: http://www.commandprompt.com/
PostgreSQL Community Conference: http://www.postgresqlconference.org/
United States PostgreSQL Association: http://www.postgresql.us/
So now that we have both agreed with each other, what do we do? :P
Well, the original suggestion was to add it to the TODO list. That
seems reasonable to me.
...Robert
Joshua Drake <jd@commandprompt.com> writes:
"Robert Haas" <robertmhaas@gmail.com> wrote:
"We can't do anything unless we do everything" is a recipe for
failure.
True enough, but a car doesn't roll without at least four wheels.
Perhaps more to the point: you don't have to implement every part of a
set of features at the same time, but it's a good idea to design them
all together. Else you risk writing something that doesn't play nice
with the other parts; and by the time you find out, it's too late to
change without creating a backwards-compatibility problem.
regards, tom lane
Alvaro Herrera <alvherre@commandprompt.com> writes:
Josh Berkus wrote:
Hackers,
Just had a feature request from Wheeler, and I don't see why it shouldn't
go on our todo list.I think you're asking for more scriptability in psql. Personally I
think that would be a great idea, but we need a lot more than what's
being proposed here. We'll also need loops, conditionals, etc. We've
had patches for those submitted over the years, but one at a time they
are easily rejected because they're so obviously incomplete.
FWIW I disagree. I think that's a recipe for ending up with a hacky
turing-complete but awkward-as-hell language.
If you want a language to write arbitrary database driving code with loops,
conditionals, etc then I would recommend going with any of the existing fully
functional languages. You can write your scripts in perl, python, ruby, or
whatever.
If we do it ourselves we'll always have a terrible half-baked language.
Building a whole language with clean syntax and consistent semantics is a lot
of work.
--
Gregory Stark
EnterpriseDB http://www.enterprisedb.com
Ask me about EnterpriseDB's PostGIS support!
For making psql fully scriptable I would think it would be smarter to
embed a full well-supported existing language rather than trying to
invent a new one.
If we do want to to that I would suggest looking at lua which is
intended to be used this way.
greg
On 23 Oct 2008, at 05:45 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Show quoted text
Joshua Drake <jd@commandprompt.com> writes:
"Robert Haas" <robertmhaas@gmail.com> wrote:
"We can't do anything unless we do everything" is a recipe for
failure.True enough, but a car doesn't roll without at least four wheels.
Perhaps more to the point: you don't have to implement every part of a
set of features at the same time, but it's a good idea to design them
all together. Else you risk writing something that doesn't play nice
with the other parts; and by the time you find out, it's too late to
change without creating a backwards-compatibility problem.regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 23 okt 2008, at 00.48, Alvaro Herrera <alvherre@commandprompt.com>
wrote:
Josh Berkus wrote:
Hackers,
Just had a feature request from Wheeler, and I don't see why it
shouldn't
go on our todo list.I think you're asking for more scriptability in psql. Personally I
think that would be a great idea, but we need a lot more than what's
being proposed here. We'll also need loops, conditionals, etc. We've
had patches for those submitted over the years, but one at a time they
are easily rejected because they're so
If you want full scripting, look at pgscript, one of this summers gsoc
projects. It'll ship in the next pgadmin and is also available as a
standalone executable.
/Magnus
2008/10/23 Greg Stark <greg.stark@enterprisedb.com>:
For making psql fully scriptable I would think it would be smarter to embed
a full well-supported existing language rather than trying to invent a new
one.
plpgsql?
regards
Pavel
Show quoted text
If we do want to to that I would suggest looking at lua which is intended to
be used this way.greg
On 23 Oct 2008, at 05:45 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Joshua Drake <jd@commandprompt.com> writes:
"Robert Haas" <robertmhaas@gmail.com> wrote:
"We can't do anything unless we do everything" is a recipe for
failure.True enough, but a car doesn't roll without at least four wheels.
Perhaps more to the point: you don't have to implement every part of a
set of features at the same time, but it's a good idea to design them
all together. Else you risk writing something that doesn't play nice
with the other parts; and by the time you find out, it's too late to
change without creating a backwards-compatibility problem.regards, tom lane
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Pavel Stehule wrote:
2008/10/23 Greg Stark <greg.stark@enterprisedb.com>:
For making psql fully scriptable I would think it would be smarter to embed
a full well-supported existing language rather than trying to invent a new
one.plpgsql?
I think plpgsql is a pretty good example of the sort of disaster you get
when you invent a language from nearly scratch.
Magnus Hagander wrote:
If you want full scripting, look at pgscript, one of this summers gsoc
projects. It'll ship in the next pgadmin and is also available as a
standalone executable.
Yet another language?
What people asking for psql scriptability really want, in my estimate,
is the ability to write "SQL plus some control structures" anywhere, in
the server, in the client, or so that they don't have to know where.
Commercial vendors have that: Oracle has PL/SQL as server-side language
and client-side language. Microsoft has T-SQL. The others have similar
offerings.
What PostgreSQL has in one kind of extended SQL language in the
terminal, another kind of extended SQL language in the server (but
really two separate languages, one for functions, one outside of
functions), and now yet another kind of extended SQL language in the
GUI, each mutually wildly incompatible. And neither is based on a standard.
Something to think about ...
2008/10/23 Peter Eisentraut <peter_e@gmx.net>:
Magnus Hagander wrote:
If you want full scripting, look at pgscript, one of this summers gsoc
projects. It'll ship in the next pgadmin and is also available as a
standalone executable.Yet another language?
it is more crazy - pgscript is based on t-sql :).
I missing in pgsql mainly #ifdef and #endif - conditional execution.
Pavel
Show quoted text
What people asking for psql scriptability really want, in my estimate, is
the ability to write "SQL plus some control structures" anywhere, in the
server, in the client, or so that they don't have to know where. Commercial
vendors have that: Oracle has PL/SQL as server-side language and client-side
language. Microsoft has T-SQL. The others have similar offerings.What PostgreSQL has in one kind of extended SQL language in the terminal,
another kind of extended SQL language in the server (but really two separate
languages, one for functions, one outside of functions), and now yet another
kind of extended SQL language in the GUI, each mutually wildly incompatible.
And neither is based on a standard.Something to think about ...
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Wed, Oct 22, 2008 at 04:14:11PM -0700, Joshua Drake wrote:
True enough, but a car doesn't roll without at least four wheels.
I'm not sure I agree: http://en.wikipedia.org/wiki/Image:1885Benz.jpg
(Sorry, I couldn't resist.)
--
Andrew Sullivan
ajs@commandprompt.com
+1 503 667 4564 x104
http://www.commandprompt.com/
Everyone,
What people asking for psql scriptability really want, in my estimate,
is the ability to write "SQL plus some control structures" anywhere, in
the server, in the client, or so that they don't have to know where.
Commercial vendors have that: Oracle has PL/SQL as server-side language
and client-side language. Microsoft has T-SQL. The others have similar
offerings.
I'm *not* proposing to implement full scriptability in psql. Just one
obvious extension of the existing pgsql variable feature.
I agree that giving psql its own unique scripting language would be
stupid. We should use something existing. Ideally, we should make psql
pluggable with the Perl & Python debuggers.
--Josh