[HACKERS] Function transform optimizations versus reality
От | Tom Lane |
---|---|
Тема | [HACKERS] Function transform optimizations versus reality |
Дата | |
Msg-id | 18771.1484759439@sss.pgh.pa.us обсуждение исходный текст |
Ответы |
Re: [HACKERS] Function transform optimizations versus reality
|
Список | pgsql-hackers |
I looked into bug #14504, https://www.postgresql.org/message-id/20170118144828.1432.52823@wrigleys.postgresql.org The problem is that timestamp_zone_transform() has the cute idea that it can simplify timezone('UTC', timestamptzvalue) into a RelabelType that claims the timestamptzvalue is just type timestamp. Well, that's just too cute, because it confuses the index machinery completely. What _bt_first() sees is an equality comparison between an index column that it knows is timestamptz, and a RHS constant that it knows is timestamp, so it selects timestamptz_cmp_timestamp() as the comparison function to use. And that function will apply a timezone rotation, resulting in the wrong answers. You could blame this on the fact that the planner will ignore the RelabelType when trying to match the qual to indexes. But that hack has fifteen years' seniority on this one, and removing it would break (at least) use of indexes on varchar columns, so I'm not planning on fixing this that way. I think the only realistic fix is to disable this optimization in timestamp_zone_transform; certainly that's the only way I'd be comfortable with back-patching. (Another reason for being unhappy about this optimization is that EXPLAIN will print the resulting expression tree as timestamptzvalue::timestamp, which is a completely misleading description; an actual cast like that would not behave this way.) More generally, this is the second serious bug we've found in the last month in the "transform" optimizations (see also bug #14479 and commit f0774abde). I'm starting to get the feeling that that idea was an attractive nuisance --- at the very least, it would behoove us to go through all the transform functions with a gimlet eye. regards, tom lane
В списке pgsql-hackers по дате отправления: