Re: Recent updates

From: Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us>
To: lockhart(at)alumnus(dot)caltech(dot)edu (Thomas G(dot) Lockhart)
Cc: hackers(at)postgreSQL(dot)org
Subject: Re: Recent updates
Date: 1998-07-15 16:31:24
Message-ID: 199807151631.MAA12199@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > What does 'select null order by 1;' do now?
>
> postgres=> select null order by 1;
> ERROR: type id lookup of 0 failed
>
> Darn. That doesn't touch the UNION code, so will need to look elsewhere
> I guess.
>
> > I have renamed the append struct names just now as part of an EXPLAIN
> > fix. Should not affect you.
>
> OK.
>
> - Tom
>

It is from here:

#2 0x9aca9 in typeidType (id=0) at parse_type.c:69
#3 0x99d19 in oper (opname=0x8ce13 "<", ltypeId=0, rtypeId=0,
noWarnings=0 '\000') at parse_oper.c:614
#4 0x95a18 in transformSortClause (pstate=0x129f50, orderlist=0x130650,
sortlist=0x0, targetlist=0x130690, uniqueFlag=0x0) at parse_clause.c:330
#5 0x7daed in transformSelectStmt (pstate=0x129f50, stmt=0x2dfb90)
at analyze.c:802
#6 0x7cb99 in transformStmt (pstate=0x129f50, parseTree=0x2dfb90)
at analyze.c:190
#7 0x7c91c in parse_analyze (pl=0x130670, parentParseState=0x0)
at analyze.c:76

Looks easy to fix. The code is:

/* check for exact match on this operator... */
if (HeapTupleIsValid(tup = oper_exact(opname, ltypeId, rtypeId, NULL, NULL,$
{
}
/* try to find a match on likely candidates... */
else if (HeapTupleIsValid(tup = oper_inexact(opname, ltypeId, rtypeId, NULL$
{
}
else if (!noWarnings)
{
elog(ERROR, "Unable to find binary operator '%s' for types %s and %s",
opname, typeTypeName(typeidType(ltypeId)), typeTypeName(typeidType$
}

It can't find operators for NULL, and is bombing when trying to print
the error message. I think we need to handle this query properly,
because some sql's generated by other programs will auto-order by all
the fields. I think your fix that you did with sort perhaps can be done
here.

But actually, the call is coming from transformSortClause(), so parhaps
you can do a NULL test there and prevent oper() from even being called.

Glad you are back on-line.

--
Bruce Momjian | 830 Blythe Avenue
maillist(at)candle(dot)pha(dot)pa(dot)us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andreas Zeugswetter 1998-07-15 16:39:09 AW: [HACKERS] "internal error" triggered by EXISTS()
Previous Message Thomas G. Lockhart 1998-07-15 16:26:29 Re: Recent updates