| From: | Hao Zhang <zhrt1446384557(at)gmail(dot)com> |
|---|---|
| To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | Can we use parallel workers to create index without active/transaction snapshot? |
| Date: | 2024-07-19 07:11:25 |
| Message-ID: | CALY6Dr8OOopBedYaJ2Kc02XBETgkuSQ8J7T0u7DbdWOapjH9hQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi hackers,
I'm doing work related to creating an index with parallel workers. I found
that SnapshotAny
is 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);
}
...
}
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);
}
...
}
```
I would appreciate your help.
With Regards
Hao Zhang
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Laurenz Albe | 2024-07-19 07:44:21 | Re: Built-in CTYPE provider |
| Previous Message | Wen Yi | 2024-07-19 06:57:51 | How can udf c function return table, not the rows? |