Hello All, I have a following question: I'm using some set of queries like: SELECT * FROM (SELECT my_function(ra, dec, 0.001) AS ipix1, ra1, dec1 FROM table1) AS jtable1, table2 WHERE table2.ipix>=ipix1[1] AND table2.ipix<=ipix1[2] ); ipix is bigint column, on which the Btree index is created or dinamically created selects containing a lot of OR'ed conditions like: select * from my_table WHERE (ipix < 44 AND ipix > 40) OR (ipix <88 AND ipix>66) OR .... ipix is bigint column,, on which the Btree index is created. I'm interested in simplifying those queries and introducing the operator doing something like this: my_operator(bigint x, bigint[] arr) checking the condition: ((x>arr[1]) AND (x<arr[2])) OR ((x>arr[3]) AND (x<arr[4])) So, the question: Is it possible to create such an operator and to preserve the Btree index/bitmap scans for previous queries. I understand it is possible to do with GIST indices (with intarray for example). But I'm interested whether it is possible with Btree ? Will the rewriting of index access methods help to do my task ? I've read a documentation, but the "Index Access Method Interface" subject is quite complicated, so currently I don't understand whether it will allow to solve my problem or not. And as I understand, the simple CREATE OPERATOR, CREATE OPERATOR CLASS machinery alone is not able to solve my problem, isn't it ? Thanks in advance for any advices, replies. With Best Regards, Sergey ***************************************************** Sergey E. Koposov Max-Planck Institut fuer Astronomie Web: http://lnfm1.sai.msu.ru/~math E-mail: math@xxxxxxxxxx ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org