On Thu, Oct 31, 2013 at 5:46 AM, Raphael Bauduin <rblists@xxxxxxxxx> wrote: > > Hi, > > I have a partitioned table events, with one partition for each month, eg > events_2013_03. The partition is done on the field timestamp, and > constraints are set, but insertion of data is done in the partition directly > (so not with a trigger on the events table) > The field event is of type json, and has a field '_id', which I can access: > > => select event->>'_id' from events limit 1; > ?column? > -------------------------- > 4f9a786f44650105b50aafc9 > > I created an index on each partition of the table, but not on the events > table itself: > create index events_${y}_${m}_event_id_index on events_${y}_${m} > ((event->>'_id')); > > Querying the max event_id from a partition works fine: > => select max(event->>'_id') from events_2013_03; > max > -------------------------- > 5158cdfe4465012cff522b74 > > > However, requesting on the parent table does return the whole json field, > and not only the '_id': > => select max(event->>'_id') from events; > {"_id":"526eb3ad4465013e3e131a43","origin":..... } > > An explain returns an error: > => explain select max(event->>'_id') from events; > ERROR: no tlist entry for key 2 > > This problem appeared when I created the indexes, and removing the index > make the explain work fine, but the plan implies a sequential scan on the > tables which is exactly what I wanted to avoid with the indexes. > > Does someone have an explanation, and possibly a way to solve this problem? wow, that looks like a bug. Can you post the specific postgres version? merlin -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general