From: | Craig Ringer <craig(at)postnewspapers(dot)com(dot)au> |
---|---|
To: | Adarsh Sharma <adarsh(dot)sharma(at)orkash(dot)com> |
Cc: | pgsql-general General <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: Memcached for Database server |
Date: | 2011-05-23 05:49:53 |
Message-ID: | 4DD9F581.7030201@postnewspapers.com.au |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 20/05/11 17:33, Adarsh Sharma wrote:
> Craig Ringer wrote:
>>
>> category_id Record_id fields
>> 78 21 {Village:adasrpur, SOI:media, Heading:CM dies
>>
>
> Yes , but slight modification , I want Village, SOI Heading as column
> names and adasrpur,media and CM dies their values as there may 1000 of
> rows of it.
You're out of luck, then. You want a view with dynamic columns, and
PostgreSQL does not support that.
You can have have a *function* with a dynamic record as output, but then
you have to name the columns in the query. That's how crosstab works.
You can also have a result where all your dynamic data - the stuff where
you don't know the keys in advance - is a single column of a data type
like 'hstore' that contains key/value mappings. From the above, you
don't seem to want that.
I suspect that in your case, your best bet would be a two-query
solution. Figure out your WHERE clause, then run a query to find out
what keys match he WHERE clause. Use that in your application to produce
a crosstab query with an appropriate column list.
If you really need to do this as a view, I think you're stuffed. You'll
never get dynamic column lists in a view.
> I read hstore first time & find it difficult to understand because I
> don't want the output in one column :
>
> CREATE TABLE test (col1 integer, col2 text, col3 text);
> INSERT INTO test VALUES (123, 'foo', 'bar');
>
> SELECT hstore(t) FROM test AS t;
> hstore
> ---------------------------------------------
> "col1"=>"123", "col2"=>"foo", "col3"=>"bar"
> (1 row)
Why not? Is the problem converting a hstore value into a set of values
client-side? Something else?
Maybe it would help if you took a step back and explained why you need
this exacty format - a view with dynamic columns. It's a weird
requirement, and it makes me wonder if you're really looking for
something else and have settled on a dynamic-column view as the "only"
solution when there migh tbe an easier way.
What constraints are you under? What app is involved? What language(s)?
Is it old/unmaintained code, or something new and under development?
What role do you play in it?
--
Craig Ringer
From | Date | Subject | |
---|---|---|---|
Next Message | Nick Raj | 2011-05-23 12:01:04 | disable seqscan |
Previous Message | Michael McInnis | 2011-05-23 03:44:08 | Where are plpy.execute python commands issued? |