1. 17 2月, 2017 10 次提交
  2. 16 2月, 2017 16 次提交
  3. 15 2月, 2017 14 次提交
    • H
      Tighten the checks for invalid "flavor" in url_* interface functions. · f71a061a
      Heikki Linnakangas 提交于
      There is no legitimate reason for these to be called with an invalid type.
      Turn the checks into ERRORs.
      f71a061a
    • H
      No need to destroy tuplesort state on error. · 84f5771d
      Heikki Linnakangas 提交于
      Tuplesorts take care of cleaning up any memory and temporary files on
      abort, no need to have PG_TRY()-PG_CATCH() blocks to do that. These blocks
      were introduced a long time ago, in a patch related to workfile caching,
      but we don't do workfile caching anymore anyway.
      84f5771d
    • H
      Remove unused field. · 39f58fea
      Heikki Linnakangas 提交于
      39f58fea
    • H
      Cosmetic changes to match upstream better. · 625e412e
      Heikki Linnakangas 提交于
      625e412e
    • D
      Fix optimizer output for trigger test ported from Bugbuster · d793e7f4
      Daniel Gustafsson 提交于
      Commit 74a1efd7 missed including the _optimizer expected output for
      the test ported from Bugbuster to ICW. This fixes by including the
      same hunks remembered in the planner output file.
      d793e7f4
    • D
      Port Bugbuster trigger test to ICW · 74a1efd7
      Daniel Gustafsson 提交于
      Since there is no GPDB specific trigger suite in ICW, and this bug
      was originally part of the Rio sprint back in the day, I added it
      to qp_misc_jiras. The suite already contained a version of the test
      so extended it to to include the segment redistribution check as
      well rather than duplicating for essentially the same test. This
      test relies on the rows being allocated to segment id 0, which
      should hold true for test setups with 2/3 segments. Should this be
      a problem going forward the test should be rewritten to check for
      all rows being co-located on a single segment but for now the more
      readable version is kept.
      
      It's worth noting that the expected output in the Bugbuster suite
      has the incorrect behaviour remembered, but inside ignore blocks
      so this bug has never actually been tested for.
      74a1efd7
    • H
      Simplify error handling while setting up CURL handle. · cfa446cb
      Heikki Linnakangas 提交于
      Use a macro to encapsulate the pattern of calling curl_easy_setopt(), and
      ereporting if it fails.
      cfa446cb
    • H
      Use Resource Owners to close external tables on abort. · df050f9b
      Heikki Linnakangas 提交于
      There was a rather ugly mechanism in fileam.c, to ensure that the
      utl_fclose() function was called for any still-open external table, on
      abort. That relied on a global variable and assumed that there can be only
      one external table open at a time, which seems like a shaky assumption.
      
      With this patch, utl_file() is no longer guaranteed to be called on abort.
      Instead, make the UTL_FILE implementations responsible for cleaning up any
      low-level resources, like file descriptors or handles to external libraries
      (like libcurl), themselves. Use the ResourceOwner mechanism for that.
      
      For curl- and EXECUTE-style external tables, register a new ResourceOwner
      hook to close with the libcurl handles, and launched subprocesses, on
      abort. For file external tables, modify fstream.c to open the underlying
      file with OpenTransientFile(), so that it gets closed automatically on
      abort.
      
      This changes the url_fopen() API, so that it never returns a NULL. Instead
      of returning NULL, and reporting an error in the *response_code/string
      arguments, make url_fopen() always report errors directly with ereport().
      That makes the callers simpler, and allows the implementations to flexibly
      report whatever details of the error they have available.
      df050f9b
    • H
      Backport OpenTransientFile from PostgreSQL 9.3. · 8eede15f
      Heikki Linnakangas 提交于
      OpenTransientFile() opens an arbitrary file, like open(), but will track
      the file descriptor by the resource owner mechanism, so that it is
      automatically closed on abort. We already had a similar mechanism for
      temporary files, and for files opened with fopen(), this fills the gap of
      when you want a plain file descriptor rather than a FILE *.
      
      I need this for the next commit, which will use this to automatically close
      files opened by the fstream.c on abort.
      
      This is a backport of upstream commit 1f67078e. I only backported the
      addition of the new function, not the changes to the various callers to
      use the new function, to minimize merge conflicts.
      8eede15f
    • H
      Split the UTL_FILE union, into common and implementation-specific parts · d9b4c330
      Heikki Linnakangas 提交于
      This moves all the implementation-specific parts of the big UTL_FILE struct
      out of the common url.h file, into the implementation-specific .c files.
      Makes the code more readable, as you have all the implementation-specific
      stuff in a single .c file now.
      d9b4c330
    • H
      Allocate UTL_FILE structs with palloc rather than malloc(). · 714e8f67
      Heikki Linnakangas 提交于
      To avoid memory leaks. The callers better be in a sufficiently long-lived
      memory context.
      714e8f67
    • H
      Avoid clearing 10 MB of memory when planning each query with ORCA. · 3e8a206c
      Heikki Linnakangas 提交于
      It's not necessary to clear the error buffer on every call. Also,
      GPOS_NEW_ARRAY() is a pretty slow way of clearing memory. This greatly
      reduces the overhead of planning simple queries with ORCA.
      
      On my laptop, this reduces the time for planning "SELECT 123;" from
      about 60 ms to 5 ms.
      3e8a206c
    • K
    • H
      Move more tests from bugbuster to main suite. · b82c1e60
      Heikki Linnakangas 提交于
      I'm not sure what exactly the purpose of each of these tests are, and they
      probably need more culling and cleanup, but for now, just move them out of
      bugbuster, so that we can get rid of bugbuster as a separate suite.
      b82c1e60