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 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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Wen Yi"
Дата:
Сообщение: How can udf c function return table, not the rows?
Следующее
От: Laurenz Albe
Дата:
Сообщение: Re: Built-in CTYPE provider