274
Listing 13-13. ha_pmdk.cc – Deletes an entry from the linked list using
transactions
651 int ha_pmdk::deleteNodeFromSLL()
652 {
653
if (!prev) {
654
if (!current->next) { // When sll contains single node
655
TX_BEGIN(objtab) {
656
delete_persistent(current);
657
proot->rows = nullptr;
658
} TX_END
659
} else { // When deleting the first node of sll
660
TX_BEGIN(objtab) {
661
delete_persistent(current);
662
proot->rows = current->next;
663
current = nullptr;
664
} TX_END
665
}
666
} else {
667
if (!current->next) { // When deleting the last node of sll
668
prev->next = nullptr;
669
} else { // When deleting other nodes of sll
670
prev->next = current->next;
671
}
672
TX_BEGIN(objtab) {
673
delete_persistent(current);
674
current = nullptr;
675
} TX_END
676
}
677
return 0;
678 }
Chapter 13 enabling persistenCe Using a real-World appliCation
Listing 13-13. ha_pmdk.cc – Deletes an entry from the linked list using
transactions
651 int ha_pmdk::deleteNodeFromSLL()
652 {
653
if (!prev) {
654
if (!current->next) { // When sll contains single node
655
TX_BEGIN(objtab) {
656
delete_persistent
657
proot->rows = nullptr;
658
} TX_END
659
} else { // When deleting the first node of sll
660
TX_BEGIN(objtab) {
661
delete_persistent
662
proot->rows = current->next;
663
current = nullptr;
664
} TX_END
665
}
666
} else {
667
if (!current->next) { // When deleting the last node of sll
668
prev->next = nullptr;
669
} else { // When deleting other nodes of sll
670
prev->next = current->next;
671
}
672
TX_BEGIN(objtab) {
673
delete_persistent
674
current = nullptr;
675
} TX_END
676
}
677
return 0;
678 }
Chapter 13 enabling persistenCe Using a real-World appliCation
