Repository: incubator-hawq Updated Branches: refs/heads/master 875067d63 -> ae38cfbd6
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/backend/optimizer/util/pathnode.c ---------------------------------------------------------------------- diff --git a/src/backend/optimizer/util/pathnode.c b/src/backend/optimizer/util/pathnode.c index bbb766c..2eca7ff 100644 --- a/src/backend/optimizer/util/pathnode.c +++ b/src/backend/optimizer/util/pathnode.c @@ -254,9 +254,6 @@ pathnode_walk_kids(Path *path, case T_BitmapHeapScan: v = pathnode_walk_node(((BitmapHeapPath *)path)->bitmapqual, walker, context); break; - case T_BitmapAppendOnlyScan: - v = pathnode_walk_node(((BitmapAppendOnlyPath *)path)->bitmapqual, walker, context); - break; case T_BitmapAnd: v = pathnode_walk_list(((BitmapAndPath *)path)->bitmapquals, walker, context); break; @@ -1373,73 +1370,6 @@ create_bitmap_heap_path(PlannerInfo *root, } /* - * create_bitmap_appendonly_path - * Creates a path node for a bitmap Append-Only row table scan. - * - * 'bitmapqual' is a tree of IndexPath, BitmapAndPath, and BitmapOrPath nodes. - * - * If this is a join inner indexscan path, 'outer_rel' is the outer relation, - * and all the component IndexPaths should have been costed accordingly. - * - * NOTE: This is mostly the same as the create_bitmap_heap_path routine. - */ -BitmapAppendOnlyPath * -create_bitmap_appendonly_path(PlannerInfo *root, - RelOptInfo *rel, - Path *bitmapqual, - RelOptInfo *outer_rel, - bool isAORow) -{ - BitmapAppendOnlyPath *pathnode = makeNode(BitmapAppendOnlyPath); - - pathnode->path.pathtype = T_BitmapAppendOnlyScan; - pathnode->path.parent = rel; - pathnode->path.pathkeys = NIL; /* always unordered */ - - /* Distribution is same as the base table. */ - pathnode->path.locus = cdbpathlocus_from_baserel(root, rel); - pathnode->path.motionHazard = false; - pathnode->path.rescannable = true; - - pathnode->bitmapqual = bitmapqual; - pathnode->isjoininner = (outer_rel != NULL); - pathnode->isAORow = isAORow; - - if (pathnode->isjoininner) - { - /* - * We must compute the estimated number of output rows for the - * indexscan. This is less than rel->rows because of the additional - * selectivity of the join clauses. We make use of the selectivity - * estimated for the bitmap to do this; this isn't really quite right - * since there may be restriction conditions not included in the - * bitmap ... - */ - Cost indexTotalCost; - Selectivity indexSelectivity; - - cost_bitmap_tree_node(bitmapqual, &indexTotalCost, &indexSelectivity); - pathnode->rows = rel->tuples * indexSelectivity; - if (pathnode->rows > rel->rows) - pathnode->rows = rel->rows; - /* Like costsize.c, force estimate to be at least one row */ - pathnode->rows = clamp_row_est(pathnode->rows); - } - else - { - /* - * The number of rows is the same as the parent rel's estimate, since - * this isn't a join inner indexscan. - */ - pathnode->rows = rel->rows; - } - - cost_bitmap_appendonly_scan(&pathnode->path, root, rel, bitmapqual, outer_rel); - - return pathnode; -} - -/* * create_bitmap_and_path * Creates a path node representing a BitmapAnd. */ http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/backend/optimizer/util/walkers.c ---------------------------------------------------------------------- diff --git a/src/backend/optimizer/util/walkers.c b/src/backend/optimizer/util/walkers.c index 90d58bc..6f1ee51 100644 --- a/src/backend/optimizer/util/walkers.c +++ b/src/backend/optimizer/util/walkers.c @@ -928,7 +928,6 @@ plan_tree_walker(Node *node, case T_DynamicTableScan: case T_ParquetScan: case T_BitmapHeapScan: - case T_BitmapAppendOnlyScan: case T_BitmapTableScan: case T_FunctionScan: case T_TableFunctionScan: http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/backend/tcop/utility.c ---------------------------------------------------------------------- diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index ae42d6c..372d664 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -23,7 +23,6 @@ #include "catalog/namespace.h" #include "catalog/toasting.h" #include "catalog/aoseg.h" -#include "catalog/aoblkdir.h" #include "commands/alter.h" #include "commands/async.h" #include "commands/cluster.h" @@ -944,13 +943,6 @@ ProcessUtility(Node *parsetree, ((CreateStmt *) parsetree)->oidInfo.aosegIndexOid, &(((CreateStmt *) parsetree)->oidInfo.aosegComptypeOid), ((CreateStmt *) parsetree)->is_part_child); - - if (((CreateStmt *)parsetree)->buildAoBlkdir) - AlterTableCreateAoBlkdirTableWithOid(relOid, - ((CreateStmt *) parsetree)->oidInfo.aoblkdirOid, - ((CreateStmt *) parsetree)->oidInfo.aoblkdirIndexOid, - &(((CreateStmt *) parsetree)->oidInfo.aoblkdirComptypeOid), - ((CreateStmt *)parsetree)->is_part_child); } CommandCounterIncrement(); /* http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/backend/utils/misc/guc.c ---------------------------------------------------------------------- diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index cc3ece5..b75dcb0 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -100,7 +100,6 @@ #include "cdb/cdbvars.h" #include "cdb/cdbdisp.h" #include "cdb/dispatcher.h" -#include "cdb/cdbappendonlyblockdirectory.h" #include "cdb/cdbquerycontextdispatching.h" #include "cdb/memquota.h" #include "utils/vmem_tracker.h" @@ -5971,27 +5970,6 @@ static struct config_int ConfigureNamesInt[] = }, { - {"gp_blockdirectory_entry_min_range", PGC_USERSET, GP_ARRAY_TUNING, - gettext_noop("Minimal range in bytes one block directory entry covers."), - gettext_noop("Used to reduce the size of a block directory."), - GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT - }, - &gp_blockdirectory_entry_min_range, - 0, 0, INT_MAX, NULL, NULL - }, - - { - {"gp_blockdirectory_minipage_size", PGC_USERSET, GP_ARRAY_TUNING, - gettext_noop("Number of entries one row in a block directory table contains."), - gettext_noop("Use smaller value in non-bulk load cases."), - GUC_NO_SHOW_ALL | GUC_NOT_IN_SAMPLE | GUC_GPDB_ADDOPT - }, - &gp_blockdirectory_minipage_size, - NUM_MINIPAGE_ENTRIES, 1, NUM_MINIPAGE_ENTRIES, NULL, NULL - }, - - - { {"gp_segworker_relative_priority", PGC_POSTMASTER, RESOURCES_MGM, gettext_noop("Priority for the segworkers relative to the postmaster's priority."), NULL, http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/aoblkdir.h ---------------------------------------------------------------------- diff --git a/src/include/catalog/aoblkdir.h b/src/include/catalog/aoblkdir.h deleted file mode 100644 index 84356e5..0000000 --- a/src/include/catalog/aoblkdir.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/*------------------------------------------------------------------------- - * - * aoblkdir.h - * - * This file contains some definitions to support creation of aoblkdir tables. - * - *------------------------------------------------------------------------- - */ -#ifndef AOBLKDIR_H -#define AOBLKDIR_H - -/* - * Macros to the attribute number for each attribute - * in the block directory relation. - */ -#define Natts_pg_aoblkdir 4 -#define Anum_pg_aoblkdir_segno 1 -#define Anum_pg_aoblkdir_columngroupno 2 -#define Anum_pg_aoblkdir_firstrownum 3 -#define Anum_pg_aoblkdir_minipage 4 - -extern void AlterTableCreateAoBlkdirTable(Oid relOid); -extern void AlterTableCreateAoBlkdirTableWithOid( - Oid relOid, Oid newOid, Oid newIndexOid, - Oid * comptypeOid, bool is_part_child); - -#endif http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/calico.pl ---------------------------------------------------------------------- diff --git a/src/include/catalog/calico.pl b/src/include/catalog/calico.pl index 61bc137..28612b0 100755 --- a/src/include/catalog/calico.pl +++ b/src/include/catalog/calico.pl @@ -3519,8 +3519,6 @@ sub more_header #include "catalog/gp_segment_config.h" #include "catalog/gp_san_config.h" -#include "catalog/gp_fastsequence.h" - #include "catalog/gp_master_mirroring.h" #include "catalog/gp_persistent.h" #include "catalog/gp_global_sequence.h" @@ -5075,7 +5073,6 @@ sub get_builtin_object_check_case_str() { my $str = ""; my @clist = ("GpPolicyRelationId, FormData_gp_policy *, localoid", - "FastSequenceRelationId, Form_gp_fastsequence, objid", "AggregateRelationId, Form_pg_aggregate, aggfnoid", "AccessMethodOperatorRelationId, Form_pg_amop, amopclaid", "AccessMethodProcedureRelationId, Form_pg_amproc, amopclaid", http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/gp_fastsequence.h ---------------------------------------------------------------------- diff --git a/src/include/catalog/gp_fastsequence.h b/src/include/catalog/gp_fastsequence.h deleted file mode 100644 index a4733cd..0000000 --- a/src/include/catalog/gp_fastsequence.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/*------------------------------------------------------------------------- - * - * gp_fastsequence.h - * a table maintaining a light-weight fast sequence number for a unique - * object. - * - * $Id: $ - * $Change: $ - * $DateTime: $ - * $Author: $ - *------------------------------------------------------------------------- - */ -#ifndef GP_FASTSEQUENCE_H -#define GP_FASTSEQUENCE_H - -#include "catalog/genbki.h" -#include "storage/itemptr.h" - -/* - * gp_fastsequence definition - */ - -/* TIDYCAT_BEGINFAKEDEF - - CREATE TABLE gp_fastsequence - with (camelcase=FastSequence, oid=false, relid=5043, reltype_oid=6453, content=SEGMENT_LOCAL) - ( - objid oid, - objmod bigint, - last_sequence bigint - contentid integer - ); - - create unique index on gp_fastsequence(objid, objmod, contentid) with (indexid=6067); - - alter table gp_fastsequence add fk objid on pg_class(oid); - - TIDYCAT_ENDFAKEDEF -*/ -#define FastSequenceRelationId 5043 - -CATALOG(gp_fastsequence,5043) BKI_WITHOUT_OIDS -{ - Oid objid; /* object oid */ - int8 objmod; /* object modifier */ - int8 last_sequence; /* the last sequence number used by the object */ - int4 contentid; /* content id */ -} FormData_gp_fastsequence; - - -/* ---------------- -* Form_gp_fastsequence corresponds to a pointer to a tuple with -* the format of gp_fastsequence relation. -* ---------------- -*/ -typedef FormData_gp_fastsequence *Form_gp_fastsequence; - -#define Natts_gp_fastsequence 4 -#define Anum_gp_fastsequence_objid 1 -#define Anum_gp_fastsequence_objmod 2 -#define Anum_gp_fastsequence_last_sequence 3 -#define Anum_gp_fastsequence_contentid 4 - -#define NUM_FAST_SEQUENCES 100 - -/* No initial content */ - -/* - * Insert a new light-weight fast sequence entry for a given object. - * - * The tid for the new entry is returned. - */ -extern void InsertFastSequenceEntry(Oid objid, int64 objmod, int64 lastSequence, - ItemPointer tid); - -/* - * GetFastSequences - * - * Get a list of consecutive sequence numbers. The starting sequence - * number is the maximal value between 'lastsequence' + 1 and minSequence. - * The length of the list is given. - * - * If there is not such an entry for objid in the table, create - * one here. - * - * The existing entry for objid in the table is updated with a new - * lastsequence value. - * - * The tuple id value for this entry is copied out to 'tid'. - */ -extern int64 GetFastSequences(Oid objid, int64 objmod, - int64 minSequence, int64 numSequences, - ItemPointer tid); - -/* - * GetFastSequencesByTid - * - * Same as GetFastSequences, except that the tuple tid is given, and the tuple id - * is not valid. - */ -extern int64 GetFastSequencesByTid(ItemPointer tid, - int64 minSequence, - int64 numSequences); - -/* - * RemoveFastSequenceEntry - * - * Remove all entries associated with the given object id. - * - * If the given objid is an invalid OID, this function simply - * returns. - * - * If the given valid objid does not have an entry in - * gp_fastsequence, this function errors out. - */ -extern void RemoveFastSequenceEntry(Oid objid); - -#endif http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/indexing.h ---------------------------------------------------------------------- diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index 73a69d1..f0d33e7 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -209,9 +209,6 @@ DECLARE_UNIQUE_INDEX(gp_policy_localoid_index, 6103, on gp_distribution_policy u DECLARE_UNIQUE_INDEX(pg_appendonly_relid_index, 5007, on pg_appendonly using btree(relid oid_ops)); #define AppendOnlyRelidIndexId 5007 -DECLARE_UNIQUE_INDEX(gp_fastsequence_objid_objmod_contentid_index, 6067, on gp_fastsequence using btree(objid oid_ops, objmod int8_ops, contentid int4_ops)); -#define FastSequenceObjidObjmodContentidIndexId 6067 - DECLARE_UNIQUE_INDEX(pg_appendonly_alter_column_relid_index, 5031, on pg_appendonly_alter_column using btree(relid oid_ops, changenum int4_ops)); #define AppendOnlyAlterColumnRelidIndexId 5031 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/pg_tidycat.h ---------------------------------------------------------------------- diff --git a/src/include/catalog/pg_tidycat.h b/src/include/catalog/pg_tidycat.h index 9f969c8..7d96d0c 100644 --- a/src/include/catalog/pg_tidycat.h +++ b/src/include/catalog/pg_tidycat.h @@ -27,7 +27,6 @@ #include "catalog/gp_configuration.h" -#include "catalog/gp_fastsequence.h" #include "catalog/gp_global_sequence.h" #include "catalog/gp_id.h" #include "catalog/gp_master_mirroring.h" http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/catalog/pg_type.h ---------------------------------------------------------------------- diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index c356f14..4960bdb 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -721,9 +721,6 @@ DATA(insert OID = 6444 ( gp_san_configuration PGNSP PGUID -1 f c t \054 5035 /* relation id: 5039 - gp_fault_strategy 20101104 */ DATA(insert OID = 6443 ( gp_fault_strategy PGNSP PGUID -1 f c t \054 5039 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); #define GP_FAULT_STRATEGY_RELTYPE_OID 6443 -/* relation id: 5043 - gp_fastsequence 20101104 */ -DATA(insert OID = 6453 ( gp_fastsequence PGNSP PGUID -1 f c t \054 5043 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); -#define GP_FASTSEQUENCE_RELTYPE_OID 6453 /* relation id: 5096 - gp_global_sequence 20101104 */ DATA(insert OID = 6995 ( gp_global_sequence PGNSP PGUID -1 f c t \054 5096 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); #define GP_GLOBAL_SEQUENCE_RELTYPE_OID 6995 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/cdb/cdbappendonlyam.h ---------------------------------------------------------------------- diff --git a/src/include/cdb/cdbappendonlyam.h b/src/include/cdb/cdbappendonlyam.h index 8b984f3..5a6129a 100644 --- a/src/include/cdb/cdbappendonlyam.h +++ b/src/include/cdb/cdbappendonlyam.h @@ -56,7 +56,6 @@ #include "cdb/cdbappendonlystoragelayer.h" #include "cdb/cdbappendonlystorageread.h" #include "cdb/cdbappendonlystoragewrite.h" -#include "cdb/cdbappendonlyblockdirectory.h" #include "cdb/cdbquerycontextdispatching.h" @@ -85,14 +84,11 @@ typedef struct AppendOnlyInsertDescData float8 insertCount; float8 varblockCount; int64 rowCount; /* total row count before insert */ - int64 numSequences; /* total number of available sequences */ - int64 lastSequence; /* last used sequence */ BlockNumber cur_segno; AppendOnlyEntry *aoEntry; FileSegInfo *fsInfo; VarBlockMaker varBlockMaker; int64 bufferCount; - int64 blockFirstRowNum; bool shouldCompress; bool usingChecksum; bool useNoToast; @@ -122,10 +118,6 @@ typedef struct AppendOnlyInsertDescData uint8 *nonCompressedData; - /* The block directory for the appendonly relation. */ - AppendOnlyBlockDirectory blockDirectory; - - QueryContextDispatchingSendBack sendback; } AppendOnlyInsertDescData; @@ -214,15 +206,6 @@ typedef struct AppendOnlyScanDescData AppendOnlyEntry *aoEntry; - /* - * The block directory info. - * - * For AO tables that are upgraded from pre-3.4 release, the block directory - * built during the first index creation. - */ - bool buildBlockDirectory; /* Indicate whether to build block directory while scanning */ - AppendOnlyBlockDirectory *blockDirectory; - List *splits; bool toCloseFile; @@ -230,90 +213,6 @@ typedef struct AppendOnlyScanDescData typedef AppendOnlyScanDescData *AppendOnlyScanDesc; -/* - * Statistics on the latest fetch. - */ -typedef struct AppendOnlyFetchDetail -{ - int64 rangeFileOffset; - int64 rangeFirstRowNum; - int64 rangeAfterFileOffset; - int64 rangeLastRowNum; - /* - * The range covered by the Block Directory. - */ - - int64 skipBlockCount; - /* - * Number of blocks skipped since the previous block processed in - * the range. - */ - - int64 blockFileOffset; - int32 blockOverallLen; - int64 blockFirstRowNum; - int64 blockLastRowNum; - bool isCompressed; - bool isLargeContent; - /* - * The last block processed. - */ - -} AppendOnlyFetchDetail; - - -/* - * Used for fetch individual tuples from specified by TID of append only relations - * using the AO Block Directory, BufferedRead and VarBlocks - */ -typedef struct AppendOnlyFetchDescData -{ - Relation relation; - Snapshot appendOnlyMetaDataSnapshot; - - MemoryContext initContext; - - AppendOnlyStorageAttributes storageAttributes; - AppendOnlyStorageRead storageRead; - - char *title; - /* - * A phrase that better describes the purpose of the this open. - * - * We manage the storage for this. - */ - - - int totalSegfiles; - FileSegInfo **segmentFileInfo; - - AppendOnlyEntry *aoEntry; - - char *segmentFileName; - int segmentFileNameMaxLen; - - int32 usableBlockSize; - - AppendOnlyBlockDirectory blockDirectory; - - AppendOnlyExecutorReadBlock executorReadBlock; - - CurrentSegmentFile currentSegmentFile; - - int64 scanNextFileOffset; - int64 scanNextRowNum; - - int64 scanAfterFileOffset; - int64 scanLastRowNum; - - CurrentBlock currentBlock; - - int64 skipBlockCount; - -} AppendOnlyFetchDescData; - -typedef AppendOnlyFetchDescData *AppendOnlyFetchDesc; - /* ---------------- * function prototypes for appendonly access method * ---------------- @@ -328,17 +227,6 @@ extern void appendonly_endscan(AppendOnlyScanDesc scan); extern MemTuple appendonly_getnext(AppendOnlyScanDesc scan, ScanDirection direction, TupleTableSlot *slot); -extern AppendOnlyFetchDesc appendonly_fetch_init( - Relation relation, - Snapshot appendOnlyMetaDataSnapshot); -extern bool appendonly_fetch( - AppendOnlyFetchDesc aoFetchDesc, - AOTupleId *aoTid, - TupleTableSlot *slot); -extern void appendonly_fetch_detail( - AppendOnlyFetchDesc aoFetchDesc, - AppendOnlyFetchDetail *aoFetchDetail); -extern void appendonly_fetch_finish(AppendOnlyFetchDesc aoFetchDesc); extern AppendOnlyInsertDesc appendonly_insert_init(Relation rel, ResultRelSegFileInfo *segfileinfo); extern void appendonly_insert( AppendOnlyInsertDesc aoInsertDesc, http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/cdb/cdbappendonlyblockdirectory.h ---------------------------------------------------------------------- diff --git a/src/include/cdb/cdbappendonlyblockdirectory.h b/src/include/cdb/cdbappendonlyblockdirectory.h deleted file mode 100644 index c85488c..0000000 --- a/src/include/cdb/cdbappendonlyblockdirectory.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/*------------------------------------------------------------------------------ - * - * cdbappendonlyblockdirectory.h - * - * $Id: $ - * $Change: $ - * $DateTime: $ - * $Author: $ - *------------------------------------------------------------------------------ - */ -#ifndef APPENDONLYBLOCKDIRECTORY_H -#define APPENDONLYBLOCKDIRECTORY_H - -#include "access/aosegfiles.h" -#include "access/appendonlytid.h" -#include "access/skey.h" - -extern int gp_blockdirectory_entry_min_range; -extern int gp_blockdirectory_minipage_size; - -typedef struct AppendOnlyBlockDirectoryEntry -{ - /* - * The range of blocks covered by the Block Directory entry. - */ - struct range - { - int64 fileOffset; - int64 firstRowNum; - - int64 afterFileOffset; - int64 lastRowNum; - } range; - -} AppendOnlyBlockDirectoryEntry; - -/* - * The entry in the minipage. - */ -typedef struct MinipageEntry -{ - int64 firstRowNum; - int64 fileOffset; - int64 rowCount; -} MinipageEntry; - -/* - * Define a varlena type for a minipage. - */ -typedef struct Minipage -{ - /* Total length. Must be the first. */ - int32 _len; - int32 version; - uint32 nEntry; - - /* Varlena array */ - MinipageEntry entry[1]; -} Minipage; - -/* - * Define the relevant info for a minipage for each - * column group. - */ -typedef struct MinipagePerColumnGroup -{ - Minipage *minipage; - uint32 numMinipageEntries; - ItemPointerData tupleTid; -} MinipagePerColumnGroup; - -/* - * I don't know the ideal value here. But let us put approximate - * 8 minipages per heap page. - */ -#define NUM_MINIPAGE_ENTRIES (((MaxTupleSize)/8 - sizeof(HeapTupleHeaderData) - 64 * 3)\ - / sizeof(MinipageEntry)) - -/* - * Define a structure for the append-only relation block directory. - */ -typedef struct AppendOnlyBlockDirectory -{ - Relation aoRel; - Snapshot appendOnlyMetaDataSnapshot; - Relation blkdirRel; - Relation blkdirIdx; - int numColumnGroups; - - MemoryContext memoryContext; - - int totalSegfiles; - FileSegInfo **segmentFileInfo; - - /* - * Current segment file number. - */ - int currentSegmentFileNum; - FileSegInfo *currentSegmentFileInfo; - - /* - * Last minipage that contains an array of MinipageEntries. - */ - MinipagePerColumnGroup *minipages; - - /* - * Some temporary space to help form tuples to be inserted into - * the block directory, and to help the index scan. - */ - Datum *values; - bool *nulls; - int numScanKeys; - ScanKey scanKeys; - StrategyNumber *strategyNumbers; - -} AppendOnlyBlockDirectory; - - -typedef struct CurrentBlock -{ - AppendOnlyBlockDirectoryEntry blockDirectoryEntry; - - bool have; - - int64 fileOffset; - - int32 overallBlockLen; - - int64 firstRowNum; - int64 lastRowNum; - - bool isCompressed; - bool isLargeContent; - - bool gotContents; -} CurrentBlock; - -typedef struct CurrentSegmentFile -{ - bool isOpen; - - int num; - - int64 logicalEof; -} CurrentSegmentFile; - -extern void AppendOnlyBlockDirectoryEntry_GetBeginRange( - AppendOnlyBlockDirectoryEntry *directoryEntry, - int64 *fileOffset, - int64 *firstRowNum); -extern void AppendOnlyBlockDirectoryEntry_GetEndRange( - AppendOnlyBlockDirectoryEntry *directoryEntry, - int64 *afterFileOffset, - int64 *lastRowNum); -extern bool AppendOnlyBlockDirectoryEntry_RangeHasRow( - AppendOnlyBlockDirectoryEntry *directoryEntry, - int64 checkRowNum); -extern bool AppendOnlyBlockDirectory_GetEntry( - AppendOnlyBlockDirectory *blockDirectory, - AOTupleId *aoTupleId, - int columnGroupNo, - AppendOnlyBlockDirectoryEntry *directoryEntry); -extern void AppendOnlyBlockDirectory_Init_forInsert( - AppendOnlyBlockDirectory *blockDirectory, - AppendOnlyEntry *aoEntry, - Snapshot appendOnlyMetaDataSnapshot, - FileSegInfo *segmentFileInfo, - int64 lastSequence, - Relation aoRel, - int segno, - int numColumnGroups); -extern void AppendOnlyBlockDirectory_Init_forSearch( - AppendOnlyBlockDirectory *blockDirectory, - AppendOnlyEntry *aoEntry, - Snapshot appendOnlyMetaDataSnapshot, - FileSegInfo **segmentFileInfo, - int totalSegfiles, - Relation aoRel, - int numColumnGroups); -extern bool AppendOnlyBlockDirectory_InsertEntry( - AppendOnlyBlockDirectory *blockDirectory, - int columnGroupNo, - int64 firstRowNum, - int64 fileOffset, - int64 rowCount); -extern void AppendOnlyBlockDirectory_End_forInsert( - AppendOnlyBlockDirectory *blockDirectory); -extern void AppendOnlyBlockDirectory_End_forSearch( - AppendOnlyBlockDirectory *blockDirectory); - -#endif http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/cdb/cdbappendonlystoragewrite.h ---------------------------------------------------------------------- diff --git a/src/include/cdb/cdbappendonlystoragewrite.h b/src/include/cdb/cdbappendonlystoragewrite.h index 7c2edd5..cc8e111 100644 --- a/src/include/cdb/cdbappendonlystoragewrite.h +++ b/src/include/cdb/cdbappendonlystoragewrite.h @@ -120,16 +120,6 @@ typedef struct AppendOnlyStorageWrite * The number of blocks written since the beginning of the segment file. */ - bool isFirstRowNumSet; - /* - * When true, the first row number for the next block has - * been explicitly set and will be stored in the Append-Only - * Storage Header. - */ - - int64 firstRowNum; - /* Explicitly set first row number for the next block. */ - int64 lastWriteBeginPosition; /* The beginning of the write buffer for the last write. */ @@ -510,16 +500,6 @@ extern void AppendOnlyStorageWrite_Content( * new overhead length. */ - -/* - * Set the first row value for the next Append-Only Storage - * Block to be written. Only applies to the next block. - */ -extern void AppendOnlyStorageWrite_SetFirstRowNum( - AppendOnlyStorageWrite *storageWrite, - int64 firstRowNum); - - extern char *AppendOnlyStorageWrite_ContextStr( AppendOnlyStorageWrite *storageWrite); http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/cdb/cdbquerycontextdispatching.h ---------------------------------------------------------------------- diff --git a/src/include/cdb/cdbquerycontextdispatching.h b/src/include/cdb/cdbquerycontextdispatching.h index 0760925..815f21f 100644 --- a/src/include/cdb/cdbquerycontextdispatching.h +++ b/src/include/cdb/cdbquerycontextdispatching.h @@ -90,8 +90,6 @@ struct QueryContextDispatchingSendBackData int32 numfiles; int64 *eof; int64 *uncompressed_eof; - - int64 nextFastSequence; }; typedef struct QueryContextDispatchingSendBackData * QueryContextDispatchingSendBack; http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/executor/executor.h ---------------------------------------------------------------------- diff --git a/src/include/executor/executor.h b/src/include/executor/executor.h index f1ce5aa..a6ff148 100644 --- a/src/include/executor/executor.h +++ b/src/include/executor/executor.h @@ -366,22 +366,6 @@ extern void BitmapHeapScanEnd(ScanState *scanState); extern void BitmapHeapScanReScan(ScanState *scanState); /* - * prototypes from functions in execBitmapAOScan.c - */ -extern TupleTableSlot *BitmapAOScanNext(ScanState *scanState); -extern void BitmapAOScanBegin(ScanState *scanState); -extern void BitmapAOScanEnd(ScanState *scanState); -extern void BitmapAOScanReScan(ScanState *scanState); - -/* - * prototypes from functions in execBitmapParquetScan.c - */ -extern TupleTableSlot *BitmapParquetScanNext(ScanState *scanState); -extern void BitmapParquetScanBegin(ScanState *scanState); -extern void BitmapParquetScanEnd(ScanState *scanState); -extern void BitmapParquetScanReScan(ScanState *scanState); - -/* * prototypes from functions in execBitmapTableScan.c */ extern void initGpmonPktForBitmapTableScan(Plan *planNode, gpmon_packet_t *gpmon_pkt, EState *estate); http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/executor/nodeBitmapAppendOnlyscan.h ---------------------------------------------------------------------- diff --git a/src/include/executor/nodeBitmapAppendOnlyscan.h b/src/include/executor/nodeBitmapAppendOnlyscan.h deleted file mode 100755 index 76a10ff..0000000 --- a/src/include/executor/nodeBitmapAppendOnlyscan.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/*------------------------------------------------------------------------- - * - * nodeBitmapAppendOnlyscan.h - * - * - * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * Portions Copyright (c) 2008-2009, Greenplum Inc. - * - * - *------------------------------------------------------------------------- - */ -#ifndef NODEBITMAPAPPENDONLYSCAN_H -#define NODEBITMAPAPPENDONLYSCAN_H - -#include "nodes/execnodes.h" - -extern int ExecCountSlotsBitmapAppendOnlyScan(BitmapAppendOnlyScan *node); -extern BitmapAppendOnlyScanState *ExecInitBitmapAppendOnlyScan(BitmapAppendOnlyScan *node, EState *estate, int eflags); -extern TupleTableSlot *ExecBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node); -extern void ExecEndBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node); -extern void ExecBitmapAppendOnlyReScan(BitmapAppendOnlyScanState *node, ExprContext *exprCtxt); -extern void ExecEagerFreeBitmapAppendOnlyScan(BitmapAppendOnlyScanState *node); - -enum -{ - GPMON_BITMAPAPPENDONLYSCAN_PAGE = GPMON_QEXEC_M_NODE_START, - GPMON_BITMAPAPPENDONLYSCAN_RESCAN, - GPMON_BITMAPAPPENDONLYSCAN_TOTAL -}; - -static inline gpmon_packet_t * GpmonPktFromBitmapAppendOnlyScanState(BitmapAppendOnlyScanState *node) -{ - return &node->ss.ps.gpmon_pkt; -} - -#endif /* NODEBITMAPAPPENDONLYSCAN_H */ - http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/nodes/nodes.h ---------------------------------------------------------------------- diff --git a/src/include/nodes/nodes.h b/src/include/nodes/nodes.h index a31be24..a01aaa6 100644 --- a/src/include/nodes/nodes.h +++ b/src/include/nodes/nodes.h @@ -90,7 +90,6 @@ typedef enum NodeTag T_DynamicIndexScan, T_BitmapIndexScan, T_BitmapHeapScan, - T_BitmapAppendOnlyScan, T_BitmapTableScan, T_TidScan, T_SubqueryScan, @@ -148,7 +147,6 @@ typedef enum NodeTag T_DynamicIndexScanState, T_BitmapIndexScanState, T_BitmapHeapScanState, - T_BitmapAppendOnlyScanState, T_BitmapTableScanState, T_TidScanState, T_SubqueryScanState, http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/include/optimizer/pathnode.h ---------------------------------------------------------------------- diff --git a/src/include/optimizer/pathnode.h b/src/include/optimizer/pathnode.h index fce497e..2684291 100644 --- a/src/include/optimizer/pathnode.h +++ b/src/include/optimizer/pathnode.h @@ -77,11 +77,6 @@ extern BitmapHeapPath *create_bitmap_heap_path(PlannerInfo *root, RelOptInfo *rel, Path *bitmapqual, RelOptInfo *outer_rel); -extern BitmapAppendOnlyPath *create_bitmap_appendonly_path(PlannerInfo *root, - RelOptInfo *rel, - Path *bitmapqual, - RelOptInfo *outer_rel, - bool isAORow); extern BitmapTableScanPath *create_bitmap_table_scan_path(PlannerInfo *root, RelOptInfo *rel, Path *bitmapqual, http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/test/regress/expected/insert.out ---------------------------------------------------------------------- diff --git a/src/test/regress/expected/insert.out b/src/test/regress/expected/insert.out index b29534a..d254596 100644 --- a/src/test/regress/expected/insert.out +++ b/src/test/regress/expected/insert.out @@ -88,8 +88,3 @@ NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. INSERT INTO mpp14758 select * from generate_series(1,10); ABORT; -SELECT * from gp_fastsequence where objid not in (select oid from pg_class); - objid | objmod | last_sequence | contentid --------+--------+---------------+----------- -(0 rows) - http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/test/regress/expected/insert_optimizer.out ---------------------------------------------------------------------- diff --git a/src/test/regress/expected/insert_optimizer.out b/src/test/regress/expected/insert_optimizer.out index 48bd94a..58121e5 100755 --- a/src/test/regress/expected/insert_optimizer.out +++ b/src/test/regress/expected/insert_optimizer.out @@ -90,8 +90,3 @@ NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. INSERT INTO mpp14758 select * from generate_series(1,10); ABORT; -SELECT * from gp_fastsequence where objid not in (select oid from pg_class); - objid | objmod | last_sequence | contentid --------+--------+---------------+----------- -(0 rows) - http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/test/regress/sql/insert.sql ---------------------------------------------------------------------- diff --git a/src/test/regress/sql/insert.sql b/src/test/regress/sql/insert.sql index 97d627e..7e40a20 100644 --- a/src/test/regress/sql/insert.sql +++ b/src/test/regress/sql/insert.sql @@ -71,4 +71,3 @@ BEGIN; CREATE TABLE mpp14758(a int) with (appendonly=true); INSERT INTO mpp14758 select * from generate_series(1,10); ABORT; -SELECT * from gp_fastsequence where objid not in (select oid from pg_class); http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/src/test/unit/mock/mock_info.json ---------------------------------------------------------------------- diff --git a/src/test/unit/mock/mock_info.json b/src/test/unit/mock/mock_info.json index 92669e6..90275e0 100644 --- a/src/test/unit/mock/mock_info.json +++ b/src/test/unit/mock/mock_info.json @@ -2833,28 +2833,6 @@ "parameter": [], "return": "Oid" }, - "GetFastSequences": { - "filename": "src/backend/catalog/gp_fastsequence.c", - "header filename": "src/include/catalog/gp_fastsequence.h", - "parameter": [ - "objid", - "objmod", - "minSequence", - "numSequences", - "tid" - ], - "return": "int64" - }, - "GetFastSequencesByTid": { - "filename": "src/backend/catalog/gp_fastsequence.c", - "header filename": "src/include/catalog/gp_fastsequence.h", - "parameter": [ - "tid", - "minSequence", - "numSequences" - ], - "return": "int64" - }, "GetFreeIndexPage": { "filename": "src/backend/storage/freespace/freespace.c", "header filename": "src/include/storage/freespace.h", @@ -3504,17 +3482,6 @@ ], "return": "void" }, - "InsertFastSequenceEntry": { - "filename": "src/backend/catalog/gp_fastsequence.c", - "header filename": "src/include/catalog/gp_fastsequence.h", - "parameter": [ - "objid", - "objmod", - "lastSequence", - "tid" - ], - "return": "void" - }, "IsAbortInProgress": { "filename": "src/backend/access/transam/xact.c", "header filename": "src/include/access/xact.h", @@ -7053,14 +7020,6 @@ ], "return": "void" }, - "RemoveFastSequenceEntry": { - "filename": "src/backend/catalog/gp_fastsequence.c", - "header filename": "src/include/catalog/gp_fastsequence.h", - "parameter": [ - "objid" - ], - "return": "void" - }, "RemoveRelationAttributeEncoding": { "filename": "src/backend/catalog/pg_attribute_encoding.c", "header filename": "src/include/catalog/pg_attribute_encoding.h", http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ae38cfbd/tools/bin/gppylib/data/2.0.json ---------------------------------------------------------------------- diff --git a/tools/bin/gppylib/data/2.0.json b/tools/bin/gppylib/data/2.0.json index bd69df2..af8bede 100644 --- a/tools/bin/gppylib/data/2.0.json +++ b/tools/bin/gppylib/data/2.0.json @@ -280,99 +280,6 @@ "text" : "with (camelcase=GpPolicy, oid=false, relid=5002, content=MASTER_ONLY)" } }, - "gp_fastsequence" : { - "CamelCaseRelationId" : "FastSequenceRelationId", - "UppercaseReltypeOid" : "GP_FASTSEQUENCE_RELTYPE_OID", - "colh" : { - "contentid" : "int4", - "last_sequence" : "bigint", - "objid" : "Oid", - "objmod" : "bigint" - }, - "cols" : [ - { - "colname" : "objid", - "ctype" : "Oid", - "precomment" : "\n**TK_BLANK_LINE**", - "sqltype" : "oid" - }, - { - "colname" : "objmod", - "ctype" : "bigint", - "sqltype" : "bigint" - }, - { - "colname" : "last_sequence", - "ctype" : "bigint", - "sqltype" : "bigint" - }, - { - "colname" : "contentid", - "ctype" : "int4", - "sqltype" : "integer" - } - ], - "filename" : "gp_fastsequence.h", - "fk_list" : [ - { - "fkcols" : [ - "objid" - ], - "pkcols" : [ - "oid" - ], - "pktable" : "pg_class", - "type" : "scalar" - } - ], - "foreign_keys" : [ - [ - [ - "objid" - ], - "pg_class", - [ - "oid" - ] - ] - ], - "indexes" : [ - { - "CamelCaseIndexId" : "FastSequenceObjidObjmodContentidIndexId", - "cols" : [ - [ - "objid", - "oid_ops" - ], - [ - "objmod", - "bigint_ops" - ], - [ - "contentid", - "int4_ops" - ] - ], - "indexid" : "6067", - "unique" : "1", - "with" : { - "indexid" : "6067" - } - } - ], - "relid_comment_tag" : "/* relation id: 5043 - gp_fastsequence */\n", - "tabdef_text" : "\n CREATE TABLE gp_fastsequence\n with (camelcase=FastSequence, oid=false, relid=5043, reltype_oid=6453, content=SEGMENT_LOCAL)\n (\n objid oid,\n objmod bigint,\n last_sequence bigint\n contentid\tinteger\n )", - "with" : { - "bootstrap" : 0, - "camelcase" : "FastSequence", - "content" : "SEGMENT_LOCAL", - "oid" : "", - "relid" : "5043", - "reltype_oid" : "6453", - "shared" : 0, - "text" : "with (camelcase=FastSequence, oid=false, relid=5043, reltype_oid=6453, content=SEGMENT_LOCAL)" - } - }, "gp_fault_strategy" : { "CamelCaseRelationId" : "GpFaultStrategyRelationId", "UppercaseReltypeOid" : "GP_FAULT_STRATEGY_RELTYPE_OID",
