1. 10 8月, 2018 4 次提交
  2. 09 8月, 2018 5 次提交
    • H
      Remove obsolete comment. · 31e863a9
      Heikki Linnakangas 提交于
      31e863a9
    • D
      Fix version comparison bug · dd8230dd
      Daniel Gustafsson 提交于
      This was caused by a misplaced parenthesis which caused the check
      to always return false.
      dd8230dd
    • D
      Fix a few small leaks in pg_upgrade · 92d5946b
      Daniel Gustafsson 提交于
      If we don't find any AO tables we exit early, but we failed to close
      the PQExpBuffer we had for the query. Fix by destroying the buffer
      explicitly.
      
      Move the freeing of numeric_rels to be unconditionally since pg_free
      can cope with a NULL pointer.
      
      Save the quote_identifier() returned strings in a char * rather than
      passing them to fprint() so we can pg_free() them on the way out.
      92d5946b
    • D
      Plug some trivial memory leaks in pg_dump and pg_upgrade. · e4f36f46
      Daniel Gustafsson 提交于
      This is a partial backport of the below commit from upstream, with
      one hunk removed as it touches code yet in the future of this fork
      and another hunk massaged to account for path changes. Since we
      want the pg_upgrade hunk from this commit to silenve Coverity, we
      may as well grab all the hunks that are relevant and close those
      leaks ahead time in the fork.
      
        commit f712289f
        Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
        Date:   Thu Jul 2 20:58:51 2015 +0300
      
          Plug some trivial memory leaks in pg_dump and pg_upgrade.
      
          There's no point in trying to free every small allocation in these
          programs that are used in a one-shot fashion, but these ones seems like
          an improvement on readability grounds.
      
          Michael Paquier, per Coverity report.
      e4f36f46
    • D
      Fix typo in comment · 401a8d43
      Daniel Gustafsson 提交于
      401a8d43
  3. 08 8月, 2018 7 次提交
    • J
      Correctly detoast const datum during translation to array expr · c417d2b0
      Jesse Zhang and Melanie Plageman 提交于
      For a PL/pgSQL function like the following:
      
      set optimizer_trace_fallback to on;
      CREATE OR REPLACE FUNCTION boom()
      RETURNS bool AS $$
      DECLARE
      	mel bool;
      	sesh int[];
      BEGIN
      	sesh := '{42,1}'::int[]; -- query 1
      	select c = ANY (sesh) INTO mel FROM (values (42), (0)) nums(c); -- query 2
      	return mel;
      END
      $$
      LANGUAGE plpgsql VOLATILE;
      
      SELECT boom();
      
      With Orca enabled, the database crashes.  Starting in 9.2, PL/pgSQL
      supplies bound param values in more statement types to enable planner to
      fold constants in more cases. This is in contrast to leaving the param
      intact and waiting until execution to substitute it with its values.
      Previously, only dynamic execution ("EXECUTE 'SELECT $1' USING sesh")
      gets this treatment.  This revealed the bug because Orca would not have
      been able to plan queries whose query trees included params that were
      not in subplans (external params) and would just fall back.
      
      When query 1 is planned, it is translated into select '{42,1}'::int[];
      For uninteresting reasons, the planner-produced plan for query 1 is
      considered "simple", and the ORCA-produced plan is considered regular
      (not simple). PL/pgSQL has a fast-path for "simple" plans, minimally
      starting the executor via `ExecEvalExpr`. Regular plans are executed
      through SPI. During execution, SPI will pack (as part of
      `heap_form_tuple`) the 4-byte header datum into a 1-byte header datum.
      
      While planning query 2, we will attempt to substitute the param "sesh"
      with the actual const value during pre-processing.  Since Orca doesn't
      recognize const arrays as arrays, the translator will take the
      additional step of translating the const into an array expression.  When
      accessing the array-typed const, we need to "unpack"
      (`DatumGetArrayTypeP`) the datum.  This commit does that.
      Co-authored-by: NMelanie Plageman <mplageman@pivotal.io>
      c417d2b0
    • Y
      Improved handling of empty lines and comments in commands log · bcf1345c
      yanchaozhong 提交于
      There are a lot of blank lines in the 'gpinitsystem' log. These are
      read directly from the configuration file using commands 'cat'. The
      comments are turned into blank lines, but they are not removed:
      
        gpinitsystem:node:gp6-[INFO]:-Start Main
        gpinitsystem:node:gp6-[INFO]:-Command line options passed to utility = -c ../gpinitsystem_config
        gpinitsystem:node:gp6-[INFO]:-Start Function CHK_GPDB_ID
        ...
        gpinitsystem:node:gp6-[INFO]:-End Function CHK_FILE
        gpinitsystem:node:gp6-[INFO]:-Dumping gpinitsystem_config to logfile for reference
      
        ARRAY_NAME="EMC Greenplum DW"
      
        SEG_PREFIX=gpseg
      
        PORT_BASE=40300
      
      This extends the exclusion regex used when appending to the logfile
      to remove blank lines completely and to handle comments that doesn't
      start on column zero.
      Co-authored-by: NDaniel Gustafsson <dgustafsson@pivotal.io>
      Reviewed-by: NDaniel Gustafsson <dgustafsson@pivotal.io>
      bcf1345c
    • D
      Fix header file inclusion for PG_PRINTF_ATTRIBUTE in mapred · 795e0f09
      Daniel Gustafsson 提交于
      Commit 8e60838c22735fcacabc125170fc1d removed PG_PRINTF_ATTRIBUTE
      from pg_config_manual.h, which exposed the fact that gpmapreduce
      was erroneously including that header instead of the correct one.
      Instead include postgres_fe.h for now, as gpmapreduce is client
      side tool and not a separated extension, to fix compilation.
      Reviewed-by: NAsim R P <apraveen@pivotal.io>
      795e0f09
    • D
      doc: Remove all mentions of filerep GUCs · 7ac177ba
      Daniel Gustafsson 提交于
      The GUCs controlling filerep were removed when filerep was replaced
      by walrep, but the documentation hasn't caught up.  Remove mentions
      of filerep GUCs as they no longer exist.
      Reviewed-by: NAsim R P <apraveen@pivotal.io>
      Reviewed-by: NMel Kiyama <mkiyama@pivotal.io>
      7ac177ba
    • X
      Some fixes for externalgettup_custom() (#5391) · d65cd31e
      Xiaoran Wang 提交于
      1)Refactor function externalgettup_custom
        scan->raw_buf_done means there is no new data in the formatter->fmt_databuf( a block data) for the formatter to process. Maybe there is some data left in the fmt_databuf, but it is not a complete tuple and formatter can not  process it .pstate->fe_eof  means has no data left in the external file. When scan->raw_buf_done and pstate->fe_eof are both true, it means there is no new data for formatter to process.
        If there is no new data and still there is some data in the formatter->fmt_databuf, it means the external file is not complete.
      2) ereports WARNING instead of ERROR if the external file is not complete. If reports error, the transaction will rollback. To ignore the incomplete data at the end of file is better.
      d65cd31e
    • J
      Remove a fix in 'get_relation_by_qualified_name' (#5415) · 86e3c691
      Jinbao Chen 提交于
      Nowait could set false, when we get a object address
      86e3c691
    • L
      48cff86b
  4. 07 8月, 2018 9 次提交
  5. 06 8月, 2018 4 次提交
    • E
      Remove GPDB_90_MERGE_FIXME in cdblize.c · 198c64dd
      Ekta Khanna 提交于
      This commit removes the FIXME along with the code that was disabled as
      part of the FIXME, since it is no more relevant.
      
      Prior to the merge, this code was introduced to handle the following
      cases:
      1. In case of UPDATE, DELETE and INSERT, we would set all plans to
      `DISPATCH_PARALLEL` if the relation is either POLICYTYPE_REPLICATED or
      POLICYTYPE_PARTITIONED
      2. If UPDATE, DELETE and INSERT have returning as part of the sql and
      the relation is either `POLICYTYPE_REPLICATED` or `POLICYTYPE_PARTITIONED`,
      it should error out as `RETURNING` was not supported.
      
      Post merge,
      1. The dispatch for UPDATE, DELETE and INSERT plan is set to
      `DISPATCH_PARALLEL` in the function `prescan()`, called later in the
      code, based on `FLOW`
      Earlier, the checks were explicitly required before the `prescan()`
      as this function sets the `DISPATCH_PARALLEL` based on `FLOW` and the
      necessary `FLOW` information was not passed on for all cases.
      
      Now, for UPDATE, DELETE and INSERT plans, planner creates a
      `ModifyTable` plan node and the appropriate FLOW information is set for
      it in `adjust_modifytable_flow()`, including the case where the relation
      is either POLICYTYPE_PARTITIONED or POLICYTYPE_REPLICATED.
      Additionally, for case of no-op queries(as shown below), where we do not
      create a `ModifyTable` plan node, we do not need to set the plan dispatch
      as `DISPATCH_PARALLEL`
      ```
      CREATE TABLE target(a int, b int, c int)
       PARTITION BY RANGE(c) (START(0) END(6) EVERY(3));
      
      UPDATE target SET b=10 where c =10;
      ```
      
      2. As part of the merge, commit 8a736a5f enabled `RETURNING` support in
      GPDB, leaving case 2 above irrelevant.
      198c64dd
    • D
      Ensure to pass a format string literal · e3eabcb1
      Daniel Gustafsson 提交于
      To avoid format poisoning and possible exploitation (albetit unlileky),
      always pass a format string to gfile_printf_then_putc_newline(). This
      avoids compiler warnings like the following:
      
      	warning: format string is not a string literal (potentially insecure)
      	                gfile_printf_then_putc_newline(*response_string);
                                                     ^~~~~~~~~~~~~~~~
      Reviewed-by: NVenkatesh Raghavan <vraghavan@pivotal.io>
      e3eabcb1
    • Y
      Fix the version display error of gptransfer · 8d946469
      yanchaozhong 提交于
      gptransfer version shows an error because there is no replacement
      for the Revision placeholder text at compile time.
      
          $ gptransfer --version
          gptransfer version $Revision: #1 $
      
      Example of the expected right output:
      
          $ gpstart --version
          gpstart version 6.0.0 alpha.0+dev.7519.g6d629f7a build dev oss
          $ gpstop --version
          gpstop version 6.0.0 alpha.0+dev.7519.g6d629f7a build dev oss
      Reviewed-by: NDaniel Gustafsson <dgustafsson@pivotal.io>
      8d946469
    • A
      Remove a GPDB_90_MERGE_FIXME · f7b2d555
      Alexandra Wang 提交于
      This asserssion has been commented out for 6 months and ORCA works just fine
      without it.
      Authored-by: NAlexandra Wang <leiwangcheme@gmail.com>
      f7b2d555
  6. 05 8月, 2018 2 次提交
  7. 04 8月, 2018 3 次提交
    • B
      Fix Path for running ICG test · e9970741
      Bhuvnesh Chaudhary 提交于
      e9970741
    • A
      Add test case for UNION of setop queries · a890e22d
      Abhijit Subramanya 提交于
      Queries of the form would fail due to a tripped assertion
      ```
      explain (select a from foo except select a from foo order by a) UNION (select a from foo except select a from foo order by a);
      FATAL:  Unexpected internal error (analyze.c:2393)
      DETAIL:  FailedAssertion("!(pstate->p_setopTypes && pstate->p_setopTypmods)", File: "analyze.c", Line: 2393)
      HINT:  Process 98860 will wait for gp_debug_linger=120 seconds before termination.
      ```
      
      The commit 352362a6 which refactored the way the types of the columns are
      determined in UNION queries fixes the issue. This test is to ensure that the
      issue is fixed.
      a890e22d
    • J
      Check for zstandard compression during AO table creation · 46b21685
      Jimmy Yih 提交于
      An AO table should not be able to be created with zstandard
      compression if the build was not compiled with zstandard libraries.
      This is a small hack for now until we have refactored the way
      different compression types are plugged into our AO table logic.
      46b21685
  8. 03 8月, 2018 6 次提交