Can we use parallel workers to create index without active/transaction snapshot?
От | Hao Zhang |
---|---|
Тема | Can we use parallel workers to create index without active/transaction snapshot? |
Дата | |
Msg-id | CALY6Dr8OOopBedYaJ2Kc02XBETgkuSQ8J7T0u7DbdWOapjH9hQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Can we use parallel workers to create index without active/transaction snapshot?
|
Список | pgsql-hackers |
Hi hackers,
I'm doing work related to creating an index with parallel workers. I found that SnapshotAnyis used in table_beginscan_parallel() when indexInfo->ii_Concurrent Is set to false. So can we
not pass the snapshot from the parallel worker creator to the parallel worker? like this:
```
InitializeParallelDSM()
{
...
if (is_concurrent == false)
{
/* Serialize the active snapshot. */
asnapspace = shm_toc_allocate(pcxt->toc, asnaplen);
SerializeSnapshot(active_snapshot, asnapspace);
shm_toc_insert(pcxt->toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, asnapspace);
}
{
/* Serialize the active snapshot. */
asnapspace = shm_toc_allocate(pcxt->toc, asnaplen);
SerializeSnapshot(active_snapshot, asnapspace);
shm_toc_insert(pcxt->toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, asnapspace);
}
...
}
ParallelWorkerMain()
{
...
if(is_concurrent == false)
{
asnapspace = shm_toc_lookup(toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, false);
tsnapspace = shm_toc_lookup(toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, true);
asnapshot = RestoreSnapshot(asnapspace);
tsnapshot = tsnapspace ? RestoreSnapshot(tsnapspace) : asnapshot;
RestoreTransactionSnapshot(tsnapshot,
fps->parallel_leader_pgproc);
PushActiveSnapshot(asnapshot);
}
{
asnapspace = shm_toc_lookup(toc, PARALLEL_KEY_ACTIVE_SNAPSHOT, false);
tsnapspace = shm_toc_lookup(toc, PARALLEL_KEY_TRANSACTION_SNAPSHOT, true);
asnapshot = RestoreSnapshot(asnapspace);
tsnapshot = tsnapspace ? RestoreSnapshot(tsnapspace) : asnapshot;
RestoreTransactionSnapshot(tsnapshot,
fps->parallel_leader_pgproc);
PushActiveSnapshot(asnapshot);
}
...
}
```
I would appreciate your help.
With Regards
Hao Zhang
В списке pgsql-hackers по дате отправления: