Hi hackers

In the postgresBeginForeignScan I see rather complex logic just before GetUserMapping call.

This is all about finding serverid.


    /*
     * Identify which user to do the remote access as.  This should match what
     * ExecCheckPermissions() does.
     */
    userid = OidIsValid(fsplan->checkAsUser) ? fsplan->checkAsUser : GetUserId();
    if (fsplan->scan.scanrelid > 0)
        rtindex = fsplan->scan.scanrelid;
    else
        rtindex = bms_next_member(fsplan->fs_base_relids, -1);
    rte = exec_rt_fetch(rtindex, estate);

    /* Get info about foreign table. */
    table = GetForeignTable(rte->relid);
    user = GetUserMapping(userid, table->serverid);


Seems like we have the required serverid in ForeignScan::fs_server already.

Why not to use it?


Best regards

Anton Ratundalov




Reply via email to