Also can i use the testing tool reside at src/test/isolation.

or i should use the testing tool dtester from markus wanner

On Sat, Apr 1, 2017 at 7:33 PM, anant khandelwal <anantbie...@gmail.com>
wrote:

> Hi guys,
>
> My name is Anant Khandelwal currently i am pursuing masters from IIT -
> Delhi and previously i am a software engineer.
>
> I am particularly interested in working on the project "Explicitly support
> predicate locks in index access methods besides b tree".I have gone through
>
> http://hdl.handle.net/2123/5353
> http://drkp.net/papers/ssi-vldb12.pdf
>
> to understand how serializable implemented through the use of Snapshot
> isolation in PostgreSQL also gone through the codebase get some idea of
> different access methods for gin, gist, and hash indexes.
> I want to discuss my idea.Then i move to make the proposal
>
> Sorry for late i am busy with the academics.
>
> From my findings the dependencies which create the anomalies in Snapshot
> isolation are:
>
> *wr-dependencies*: if T1 writes a version of an object, and T2
> reads that version, then T1 appears to have executed before T2
> * ww-dependencies*: if T1 writes a version of some object, and
> T2 replaces that version with the next version, then T1 appears
> to have executed before T2
>  *ww-dependencies*: if T1 writes a version of some object, and
> T2 replaces that version with the next version, then T1 appears
> to have executed before T2
>
> where T1 and T2 are the transaction
>
> but due to the rw dependency caused by any insert into the index indexes
> other than the btree acquires relation level lock which causes
> serialization failure.So the main task is to implement page-level predicate
> locking in the remaining core index AMs
>
> * Gist Index
>
> B+tree index acquires predicate locks only on leaf pages as index tuples
> with record pointers are stored on leaf pages. But for Gist index, we have
> to consider locking at each index level as index tuples can be stored in
> buffers associated with internal pages or in leaf pages.
> So, the functions where we need to insert a call for
>
> 1. PredicateLockPage()
>
> ->gistScanPage()
> after acquiring a shared lock on a buffer
>
> 2.CheckForSerializableConflictIn()
>
> -> gistdoinsert()
> after acquiring an exclusive lock on a target buffer and before inserting a
> tuple
>
>
> 3. PredicateLockPageSplit()
>
> ->gistplacetopage()
>
> If there is not enough space for insertion, we need to copy predicate lock
> from an old page to all new pages generated after a successful split
> operation.
>
> PredicateLockPageSplit(Relation relation, BlockNumber oldblkno,
> BlockNumber
> a lot) is used by b+-tree where two pages are involved in a split
> operation. For  Gist index, we can define a similar function where more
> than one page can be generated after split operation.
>
> * Gin Index
>
> Gin index consists of a B-tree index over key values, where each key is an
> element of some indexed items and each tuple in a leaf page contains either
> a posting list if the list is small enough or a pointer to posting tree.
>
> 1. PredicateLockPage()
>
> ->startscanentry()
>    before calling collectMatchBitmap()
>
> ->scanPostingTree()
>    after acquiring a shared lock on a leaf page
>
> 2.CheckForSerializableConflictIn()
>
> -> ginentryinsert()
>
> ->gininsertitempointers()
>    in case of insertion in a posting tree
>
>
> 3. PredicateLockPageSplit()
>
> -> dataBeginPlacetoPageLeaf()
>
>  after calling dataPlacetoPageLeafSplit()
>
> * Hash Index
>
> 1. PredicateLockPage()
>
> ->hashgettuple()
> ->_hash_first()
> ->_hash_readnext()
> ->_hash_readprev()
>
> 2.CheckForSerializableConflictIn()
>
> -> _hash_doinsert()
>
> 3. PredicateLockPageSplit()
>
>
> This is just an idea also i understand that  Page level predicate locking
> exists in the btree AM, where it required the addition of 17 function calls
> to implement, but remains unimplemented in the gin, gist, spgist, brin, and
> hash index AMs. So we nned to insert function calls at other places also.
>
>  Also tell me can we evaluate the performance on PostgreSQL on the
> following workloads
>
>
>    - SIBENCH microbenchMark
>    - TPC-c++
>
>
>
>
>
>
>

Reply via email to