On 12/16/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: "Rajesh Kumar Mallah" <mallah.rajesh@gmail.com> writes:
> I have an index on upper(general.cat_url(category_id)) on a table.
> when i add a column *with* default value , a query that previously
> used to give result does not give results anymore. REINDEX'ing the
> table produces correct result.
Can you provide a self-contained example of this?
Hi,
thanks for the reply.
that was the first thing i was trying to do before the post
so far i have not been able to.
What PG version are
you using?
8.2.0
What is that nonstandard function you're using in the index?
Its declared immutable , it queries the same table , its recursive
and it queries another custom function also.
dumping the function def below , lemme know if there is anything
obvious.
Warm Regds
mallah.
CREATE OR REPLACE FUNCTION general.cat_url (integer) RETURNS varchar AS '
DECLARE v_category_id ALIAS FOR $1;
DECLARE tmp_record RECORD;
DECLARE tmp_name VARCHAR;
DECLARE tmp_code VARCHAR;
BEGIN
tmp_code := '''' ;
IF v_category_id = -1 THEN
RETURN ''NO SUCH CATEGORY'';
END IF;
SELECT INTO tmp_record name, category_id, parent_category_id from general.web_category_master join general.category_tree using(category_id) where category_id=v_category_id and link is false;
IF NOT FOUND THEN
RETURN '''';
END IF;
tmp_name := general.cat_url(tmp_record.parent_category_id) ;
IF tmp_record.category_id <> 0 THEN
tmp_code := tmp_name || ''/'' || general.dir_name(tmp_record.name) ;
END IF;
tmp_code = ltrim(tmp_code,''/'');
RETURN tmp_code;
END;
' LANGUAGE 'plpgsql' IMMUTABLE;
regards, tom lane