Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit29b5a18

Browse files
committed
Merge branch 'PGPROEE9_6' into PGPROEE9_6_sha2_scram_port_v3_task_CORE-416
2 parents5cb5893 +a45e506 commit29b5a18

File tree

209 files changed

+11529
-2510
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

209 files changed

+11529
-2510
lines changed

‎.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,6 @@ lib*.pc
4444
/contrib/*/results/
4545
/contrib/*/tmp_check/
4646
/contrib/pg_query_state/isolation_output/
47+
/contrib/pg_hint_plan/expected/ut-fdw.out
48+
/contrib/pg_hint_plan/sql/ut-fdw.sql
49+

‎.gitlab-ci.yml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@ test:ubuntu-16.04:
1515
only:
1616
-PGPROEE9_6
1717
before_script:
18-
-apt-get update && apt-get install -y sudo gcc make flex bison libreadline-dev zlib1g-dev openjadelibzstd0libzstd-dev opensp
18+
-apt-get update && apt-get install -y sudo gcc make flex bison libreadline-dev zlib1g-dev openjade libzstd-dev opensp docbook docbook-xml docbook-xsl libxml2-utils xsltproc python-dev libicu-dev
1919
script:
20-
-./configure --prefix=/opt/pgproee
20+
-./configure --prefix=/opt/pgproee --with-zstd --with-icu --with-python
2121
-make -j $CORES world
22-
-sudo make install-world
23-
-make check
24-
-cd contrib
25-
-make check
22+
-make check-world
2623
when:always

‎contrib/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ SUBDIRS = \
2929
oid2name\
3030
pageinspect\
3131
passwordcheck\
32+
pgpro_scheduler\
3233
pg_buffercache\
3334
pg_freespacemap\
3435
pg_prewarm\
3536
pg_query_state\
3637
pg_standby\
3738
pg_stat_statements\
39+
pg_transfer\
3840
pg_trgm\
3941
pgcrypto\
4042
pgrowlocks\

‎contrib/hstore/hstore_io.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -833,6 +833,7 @@ hstore_from_record(PG_FUNCTION_ARGS)
833833
ItemPointerSetInvalid(&(tuple.t_self));
834834
tuple.t_tableOid=InvalidOid;
835835
tuple.t_data=rec;
836+
HeapTupleSetInvalidEpoch(&tuple);
836837

837838
values= (Datum*)palloc(ncolumns*sizeof(Datum));
838839
nulls= (bool*)palloc(ncolumns*sizeof(bool));
@@ -978,6 +979,7 @@ hstore_populate_record(PG_FUNCTION_ARGS)
978979
ItemPointerSetInvalid(&(tuple.t_self));
979980
tuple.t_tableOid=InvalidOid;
980981
tuple.t_data=rec;
982+
HeapTupleSetInvalidEpoch(&tuple);
981983
}
982984

983985
/*

‎contrib/pageinspect/btreefuncs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ bt_page_stats(PG_FUNCTION_ARGS)
221221
values[j++]=psprintf("%d",stat.free_size);
222222
values[j++]=psprintf("%d",stat.btpo_prev);
223223
values[j++]=psprintf("%d",stat.btpo_next);
224-
values[j++]=psprintf("%d", (stat.type=='d') ?stat.btpo.xact :stat.btpo.level);
224+
values[j++]=psprintf(XID_FMT, (stat.type=='d') ?stat.btpo.xact :stat.btpo.level);
225225
values[j++]=psprintf("%d",stat.btpo_flags);
226226

227227
tuple=BuildTupleFromCStrings(TupleDescGetAttInMetadata(tupleDesc),

‎contrib/pageinspect/heapfuncs.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,16 +192,19 @@ heap_page_items(PG_FUNCTION_ARGS)
192192
lp_offset==MAXALIGN(lp_offset)&&
193193
lp_offset+lp_len <=raw_page_size)
194194
{
195+
HeapTupleDatatup;
195196
HeapTupleHeadertuphdr;
196197
bytea*tuple_data_bytea;
197198
inttuple_data_len;
198199

199200
/* Extract information from the tuple header */
200201

201202
tuphdr= (HeapTupleHeader)PageGetItem(page,id);
203+
tup.t_data=tuphdr;
204+
HeapTupleCopyEpochFromPage(&tup,page);
202205

203-
values[4]=UInt32GetDatum(HeapTupleHeaderGetRawXmin(tuphdr));
204-
values[5]=UInt32GetDatum(HeapTupleHeaderGetRawXmax(tuphdr));
206+
values[4]=TransactionIdGetDatum(HeapTupleGetXmin(&tup));
207+
values[5]=TransactionIdGetDatum(HeapTupleGetRawXmax(&tup));
205208
/* shared with xvac */
206209
values[6]=UInt32GetDatum(HeapTupleHeaderGetRawCommandId(tuphdr));
207210
values[7]=PointerGetDatum(&tuphdr->t_ctid);

‎contrib/pageinspect/pageinspect--1.5.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ CREATE FUNCTION page_header(IN page bytea,
2828
OUT specialsmallint,
2929
OUT pagesizesmallint,
3030
OUT versionsmallint,
31+
OUT xid_epoch xid,
32+
OUT multi_epoch xid,
3133
OUT prune_xid xid)
3234
AS'MODULE_PATHNAME','page_header'
3335
LANGUAGE C STRICT PARALLEL SAFE;

‎contrib/pageinspect/rawpage.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ page_header(PG_FUNCTION_ARGS)
175175

176176
Datumresult;
177177
HeapTupletuple;
178-
Datumvalues[9];
179-
boolnulls[9];
178+
Datumvalues[11];
179+
boolnulls[11];
180180

181181
PageHeaderpage;
182182
XLogRecPtrlsn;
@@ -225,7 +225,9 @@ page_header(PG_FUNCTION_ARGS)
225225
values[5]=UInt16GetDatum(page->pd_special);
226226
values[6]=UInt16GetDatum(PageGetPageSize(page));
227227
values[7]=UInt16GetDatum(PageGetPageLayoutVersion(page));
228-
values[8]=TransactionIdGetDatum(page->pd_prune_xid);
228+
values[8]=TransactionIdGetDatum(page->pd_xid_epoch);
229+
values[9]=TransactionIdGetDatum(page->pd_multi_epoch);
230+
values[10]=TransactionIdGetDatum(page->pd_prune_xid);
229231

230232
/* Build and return the tuple. */
231233

‎contrib/pg_probackup/.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
.deps
2020

2121
# Binaries
22-
/pg_arman
22+
/pg_probackup
2323

2424
# Generated by test suite
2525
/regression.diffs
@@ -30,3 +30,9 @@
3030
/datapagemap.c
3131
/datapagemap.h
3232
/xlogreader.c
33+
/logging.h
34+
/receivelog.c
35+
/receivelog.h
36+
/streamutil.c
37+
/streamutil.h
38+

‎contrib/pg_transfer/Makefile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# pg_transfer/Makefile
2+
MODULE_big = pg_transfer
3+
OBJS = pg_transfer.o
4+
EXTENSION = pg_transfer
5+
DATA = pg_transfer--1.0.sql
6+
7+
ifdefUSE_PGXS
8+
PG_CONFIG = pg_config
9+
PGXS :=$( shell$( PG_CONFIG) --pgxs)
10+
include$(PGXS)
11+
else
12+
subdir = contrib/pg_transfer
13+
top_builddir = ../..
14+
include$(top_builddir)/src/Makefile.global
15+
include$(top_srcdir)/contrib/contrib-global.mk
16+
endif

‎contrib/pg_transfer/README.rus.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#pg_transfer
2+
3+
Модуль`pg_transfer` предоставляет возможность быстрого перемещения таблиц между инстансами PostgreSQL.
4+
5+
Расширение совместимо с PgPro9.6.? для*nix систем.
6+
7+
##Для чего нужен pg_transfer?
8+
9+
Для некоторых приложений узким местом является загрузка данных в базу, например, при переносе данных с региональных серверов в центральный. Стандартным методом является перенос схемы и данных при помощи утилит`pg_dump/pg_restore`. При этом большая часть нагрузки приходится на принимающий сервер. Загрузка данных осуществляется командами`INSERT` или`COPY`, что создаёт значительную загрузку дисковой подсистемы. Построение индексов и сбор статистики необходимо выполнить в новой базе уже после загрузки данных.
10+
11+
С помощью расширения`pg_transfer` можно подготовить таблицу (построить индексы и собрать статистику) отдельно от основных серверов и обеспечить фактически очень большую скорость добавления данных только для чтения. Модуль содержит дополнительные функции для использования утилитами`pg_dump/pg_restore`.
12+
13+
14+
##Установка
15+
Для установки расширения необходимо выполнить в psql команду.
16+
17+
```
18+
CREATE EXTENSION pg_transfer;
19+
```
20+
21+
##Основные опции
22+
23+
Флаги pg_dump:
24+
25+
***`--transfer-dir $TRANSFER_DIR_PATH`** - директория, в которую будут перемещены файлы таблицы, заданных на ней индексов и TOAST. По умолчанию создаётся жесткая ссылка на файлы в директории указанной в опции --transfer-dir.
26+
>**Будьте внимательны:** при удалении таблицы командой DROP такие ссылки станут невалидными.
27+
28+
***`--copy-mode-transfer`** - В случае когда файлы СУБД и transfer-dir расположены на разных файловых системах нужно использовать опцию --copy-mode-transfer для получения копии файлов.
29+
30+
Флаги pg_restore:
31+
32+
***`--transfer-dir $TRANSFER_DIR_PATH`** - директория, из которой будут перемещены файлы таблицы, заданных на ней индексов и TOAST. По умолчанию файлы перемещаются в базу командой rename().
33+
34+
***`--copy-mode-transfer`** - Копировать файлы из директории`transfer-dir` вместо перемещения.
35+
36+
***`--generate-wal`** - сгенерировать Xlog записи для всех файлов, для синхронизации с репликой. В случае, когда целевая СУБД реплицируется WAL-логами, флаг обязателен.
37+
38+
39+
##Процесс переноса данных.
40+
41+
Перед переносом таблицы необходимо пометить её как доступную только на чтение.
42+
43+
```
44+
ALTER TABLE tbl_name SET CONSTANT;
45+
```
46+
47+
А также выполнить`VACUUM (ANALYZE)` для удаления устаревших записей и обновления статистики.
48+
49+
```
50+
VACUUM (ANALYZE) tbl_name;
51+
```
52+
53+
Перенос таблицы осуществляется в два этапа. На первом этапе дамп схемы снимается на вспомогательном сервере и восстанавливается на основном. Затем данные на вспомогательном сервере необходимо подготовить к переносу, используя информацию о восстановленной схеме, и перенести данные. Если исходная и целевая база расположены на одной файловой системе нужно как минимум один раз (при`pg_dump` или`pg_restore`) использовать --copy-mode-transfer опцию, чтобы получить копию данных. Если целевая СУБД реплицируется WAL-логами, то при подключении файлов pg_restore обязательно нужно
54+
использовать опцию`--generate-wal`.
55+
56+
57+
>**Важно:** архитектура обеих систем и настройки инстанса PostgreSQL должны обеспечивать идентичность бинарного формата данных. При восстановлении выполняется проверка вывода`pg_control_init()` - выравнивание, размер блока, размер сегмента и т.д..
58+
59+
###Этап 1.
60+
61+
```
62+
pg_dump db -t tbl_name --schema-only -f $TRANSFER_DIR/archive.out
63+
pg_restore -d newdb --schema-only $TRANSFER_DIR/archive.out
64+
```
65+
66+
После восстановления схемы необходимо получить идентификатор TOAST таблицы.
67+
68+
```
69+
psql newdb -c select reltoastrelid from pg_class where relname='tbl_name'
70+
```
71+
72+
###Этап 2. В обеих базах должно быть установлено расширение`pg_transfer`.
73+
74+
Используя полученный в предыдущем шаге идентификатор TOAST таблицы, подготовить
75+
таблицу к переносу и выполнить сброс данных на диск.
76+
77+
```
78+
psql -d db -c select pg_transfer_freeze('tbl_name'::regclass::oid, reltoastrelid::oid);
79+
psql -d db -c checkpoint;
80+
```
81+
82+
Подготовка данных завершена. Теперь можно перенести данные в отдельную директорию, используя утилиту`pg_dump`.
83+
84+
```
85+
pg_dump db -Fc -t tbl_name --copy-mode-transfer --transfer-dir $TRANSFER_DIR/ -f $TRANSFER_DIR/archive.out
86+
```
87+
88+
И восстановить их на целевой базе данных.
89+
90+
```
91+
pg_restore -d newdb --data-only --transfer-dir $TRANSFER_DIR/ $TRANSFER_DIR/archive.out
92+
```
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
-- complain if script is sourced in psql, rather than via CREATE EXTENSION
2+
\echo Use ”CREATE EXTENSION pg_transfer” to load this file. \quit
3+
4+
CREATEFUNCTIONpg_transfer_wal(oid)
5+
RETURNS void
6+
AS'MODULE_PATHNAME','pg_transfer_wal'
7+
LANGUAGE C;
8+
9+
CREATEFUNCTIONpg_transfer_cleanup_shmem(oid)
10+
RETURNS void
11+
AS'MODULE_PATHNAME','pg_transfer_cleanup_shmem'
12+
LANGUAGE C;
13+
14+
CREATEFUNCTIONpg_transfer_freeze(oid,oid)
15+
RETURNS void
16+
AS'MODULE_PATHNAME','pg_transfer_freeze'
17+
LANGUAGE C;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp