Christopher Kings-Lynne wrote:
> 
> > The only idea I have is to call oidin() to do the conversion from string
> > to oid.  I see this in copy.c:
> > 
> >                     loaded_oid = DatumGetObjectId(DirectFunctionCall1(oidin,
> >                                                CStringGetDatum(string)));
> >                     if (loaded_oid == InvalidOid)
> >                         ereport(ERROR,
> >                                 (errcode(ERRCODE_BAD_COPY_FILE_FORMAT),
> >                                  errmsg("invalid OID in COPY data")));
> > 
> > I would give that a try.
> 
> Yes but in this case, the Node is parsed like this:
> 
> | COMMENT ON LARGE OBJECT NumericOnly IS comment_text
> {
> 
>   ...
> 
> 
>   n->objname = makeList1(makeAConst($5));
> 
>   ...
> 
>   $$ = (Node *) n;
> }
> 
> So there is no CString to convert to a Datum...

But I see makeAConst as:
        
        static Node *
        makeAConst(Value *v)
        {
            Node *n;
        
            switch (v->type)
            {
                case T_Float:
                    n = makeFloatConst(v->val.str);
                    break;
        
                case T_Integer:
                    n = makeIntConst(v->val.ival);
                    break;
        
                case T_String:
                default:
                    n = makeStringConst(v->val.str, NULL);
                    break;
            }
        
            return n;
        }

which uses makeStringConst().

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to