1. 24 1月, 2001 20 次提交
    • B
      Oops, got binary in there too. · 92681e97
      Bruce Momjian 提交于
      92681e97
    • B
      Add comment for getpwid() safety. · 3f0f30d1
      Bruce Momjian 提交于
      3f0f30d1
    • B
      Oops, had .o file in there. · 80d24370
      Bruce Momjian 提交于
      80d24370
    • B
      Update TODO list. · 64b53d74
      Bruce Momjian 提交于
      64b53d74
    • B
      attached is take-2 of a patch which fixes a bug related · 843657b0
      Bruce Momjian 提交于
      to the use of getpwuid when running in standalone mode.
      this patch allocates some persistent storage (using
      strdup) to store the username obtained with getpwuid
      in src/backend/main/main.c.  this is necessary because
      later on, getpwuid is called again (in ValidateBinary).
      
      the man pages for getpwuid on SCO OpenServer, FreeBSD,
      and Darwin all have words to this effect (this is from
      the SCO OpenServer man page):
      
        Note
        ====
        All information is contained in a static area, so it must
        be copied if it is to be saved. Otherwise, it may be
        overwritten on subsequent calls to these routines.
      
      in particular, on my platform, the storage used to hold
      the pw_name from the first call is overwritten such that
      it looks like an empty username.  this causes a problem
      later on in SetSessionUserIdFromUserName.
      
      i'd assume this isn't a problem on most platforms because
      getpwuid is called with the same UID both times, and the
      same thing ends up happening to that static storage each
      time.  however, that's not guaranteed, and is _not_ what
      happens on my platform (at least :).
      
      this is for the version of 7.1 available via anon cvs as
      of Tue Jan 23 15:14:00 2001 PST:
        .../src/backend/main/main.c,v 1.37 2000/12/31 18:04:35 tgl Exp
      
      -michael thornburgh, zenomt@armory.com
      843657b0
    • B
      I would like to do a interface change in pgcrypto. (Good · cb5427ee
      Bruce Momjian 提交于
      timing, I know :))  At the moment the digest() function returns
      hexadecimal coded hash, but I want it to return pure binary.  I
      have also included functions encode() and decode() which support
      'base64' and 'hex' encodings, so if anyone needs digest() in hex
      he can do encode(digest(...), 'hex').
      
      Main reason for it is "to do one thing and do it well" :)
      
      Another reason is if someone needs really lot of digesting, in
      the end he wants to store the binary not the hexadecimal result.
      It is really silly to convert it to hex then back to binary
      again.  As I said if someone needs hex he can get it.
      
      Well, and the real reason that I am doing encrypt()/decrypt()
      functions and _they_ return binary.  For testing I like to see
      it in hex occasionally, but it is really wrong to let them
      return hex.  Only now it caught my eye that hex-coding in
      digest() is wrong.  When doing digest() I thought about 'common
      case' but hacking with psql is probably _not_ the common case :)
      
      Marko Kreen
      cb5427ee
    • B
      Here is a patch to make the current snapshot compile on Win32 (native, libpq · bd0a767e
      Bruce Momjian 提交于
      and psql) again. Changes are:
      1) psql requires the includes of "io.h" and "fcntl.h" in command.c in order
      to make a call to open() work (io.h for _open(), fcntl.h for the O_xxx)
      2) PG_VERSION is no longer defined in version.h[.in], but in configure.in.
      Since we don't do configure on native win32, we need to put it in
      config.h.win32 :-(
      3) Added define of SYSCONFDIR to config.h.win32 - libpq won't compile
      without it. This functionality is *NOT* tested - it's just defined as "" for
      now. May work, may not.
      4) DEF_PGPORT renamed to DEF_PGPORT_STR
      
      I have done the "basic tests" on it - it connects to a database, and I can
      run queries. Haven't tested any of the fancier functions (yet).
      
      However, I stepped on a much bigger problem when fixing psql to work. It no
      longer works when linked against the .DLL version of libpq (which the
      Makefile does for it). I have left it linked against this version anyway,
      pending the comments I get on this mail :-)
      The problem is that there are strings being allocated from libpq.dll using
      PQExpBuffers (for example, initPQExpBuffer() on line 92 of input.c). These
      are being allocated using the malloc function used by libpq.dll. This
      function *may* be different from the malloc function used by psql.exe - only
      the resulting pointer must be valid. And with the default linking methods,
      it *WILL* be different. Later, psql.exe tries to free() this string, at
      which point it crashes because the free() function can't find the allocated
      block (it's on the allocated blocks list used by the runtime lib of
      libpq.dll).
      
      Shouldn't the right thing to do be to have psql call termPQExpBuffer() on
      the data instead? As it is now, gets_fromFile() will just return the pointer
      received from the PQExpBuffer.data (this may well be present at several
      places - this is the one I was bitten by so far). Isn't that kind of
      "accessing the internals of the PQExpBuffer structure" wrong? Instead,
      perhaps it shuold make a copy of the string, adn then termPQExpBuffer() it?
      In that case, the string will have been allocated from within the same
      library as the free() is called.
      
      I can get it to work just fine by doing this - changing from (around line
      100 of input.c):
      and the same a bit further down in the same function.
      
      But, as I said above, this may be at more places in the code? Perhaps
      someone more familiar to it could comment on that?
      
      
      What do you think shuld be done about this? Personally, I go by the "If you
      allocate a piece of memory using an interface, use the same interface to
      free it", but the question is how to make it work :-)
      
      
      Also, AFAIK this only affects psql.exe, so the changes made to the libpq
      this patch are required no matter how the other issue is handled.
      
      Regards,
       Magnus
      bd0a767e
    • B
      Update · a939e974
      Bruce Momjian 提交于
      a939e974
    • B
      Add oid2name. Add streaming option later. · 2c591cb8
      Bruce Momjian 提交于
      2c591cb8
    • H
      Removed a dangerours DropRelationBuffers() call. · a8b275e7
      Hiroshi Inoue 提交于
      a8b275e7
    • T
      Make functional index copy attstorage from the column data type, rather · 997ee516
      Tom Lane 提交于
      than forcing 'plain'.  This probably does not matter right now, but I
      think it needs to be consistent with the regular (not-functional) index
      case, where attstorage is copied from the underlying table.  Clean up
      some other dead and infelicitous code too.
      997ee516
    • T
      c654c69c
    • T
    • P
    • T
      Give 'a_expr ::= a_expr Op' production a slightly lower precedence than · f69ff0c4
      Tom Lane 提交于
      Op, so that the sequence 'a_expr Op Op a_expr' will be parsed as
      a_expr Op (Op a_expr) not (a_expr Op) Op a_expr as formerly.  In other
      words, prefer treating user-defined operators as prefix operators to
      treating them as postfix operators, when there is an ambiguity.
      Also clean up a couple of other infelicities in production priority
      assignment --- for example, BETWEEN wasn't being given the intended
      priority, but that of AND.
      f69ff0c4
    • B
      Subject: Bug in SQLForeignKeys() · edfca4b9
      Bruce Momjian 提交于
      
      Query used for checking foreign key triggers
      returns too many results when there're more than one foreign
      key in a table. It happens because only table's oid is used to
      link between pg_trigger with INSERT check and pg_trigger with
      UPDATE/DELETE check.
      
      I think there should be enough to add following conditions
      into WHERE clause of that query:
              AND     pt.tgconstrname = pg_trigger.tgconstrname
              AND     pt.tgconstrname = pg_trigger_1.tgconstrname
      
      /Constantin
      edfca4b9
    • P
      3de8407e
    • B
      Add · 6b3c8e31
      Bruce Momjian 提交于
      6b3c8e31
    • B
      Add email. · ab2c9051
      Bruce Momjian 提交于
      ab2c9051
    • B
      Update TODO list. · 04a843b2
      Bruce Momjian 提交于
      04a843b2
  2. 23 1月, 2001 20 次提交