@@ -170,7 +170,7 @@ void vertex_index_fetch_reset(struct IndexFetchTableData *data) {
170
170
* Release resources and deallocate index fetch.
171
171
*/
172
172
void vertex_index_fetch_end (struct IndexFetchTableData * data ) {
173
- ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
173
+ ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
174
174
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
175
175
176
176
@@ -204,7 +204,7 @@ bool vertex_index_fetch_tuple(struct IndexFetchTableData *scan,
204
204
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
205
205
206
206
207
- return false;
207
+ return false;
208
208
}
209
209
210
210
@@ -224,7 +224,7 @@ bool vertex_tuple_fetch_row_version(Relation rel, ItemPointer tid,
224
224
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
225
225
226
226
227
- return false;
227
+ return false;
228
228
}
229
229
230
230
/*
@@ -235,7 +235,7 @@ bool vertex_tuple_tid_valid(TableScanDesc scan, ItemPointer tid) {
235
235
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
236
236
237
237
238
- return false;
238
+ return false;
239
239
}
240
240
241
241
/*
@@ -255,7 +255,7 @@ void vertex_tuple_get_latest_tid(TableScanDesc scan, ItemPointer tid) {
255
255
*/
256
256
bool vertex_tuple_satisfies_snapshot (Relation rel , TupleTableSlot * slot ,
257
257
Snapshot snapshot ) {
258
- ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
258
+ ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
259
259
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
260
260
261
261
return false;
@@ -267,7 +267,7 @@ TransactionId vertex_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstat
267
267
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
268
268
269
269
270
- return NULL ;
270
+ return NULL ;
271
271
}
272
272
273
273
/* ------------------------------------------------------------------------
@@ -327,7 +327,7 @@ TM_Result vertex_tuple_delete(Relation rel, ItemPointer tid, CommandId cid,
327
327
328
328
329
329
330
- return 0 ;
330
+ return 0 ;
331
331
}
332
332
333
333
/* see table_tuple_update() for reference about parameters */
@@ -336,7 +336,7 @@ TM_Result vertex_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *sl
336
336
bool wait , TM_FailureData * tmfd , LockTupleMode * lockmode ,
337
337
bool * update_indexes ) {
338
338
339
- ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
339
+ ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
340
340
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
341
341
342
342
@@ -352,7 +352,7 @@ TM_Result vertex_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot,
352
352
353
353
354
354
355
- return 0 ;
355
+ return 0 ;
356
356
}
357
357
358
358
@@ -381,8 +381,33 @@ TM_Result vertex_tuple_lock(Relation rel, ItemPointer tid, Snapshot snapshot,
381
381
void vertex_relation_set_new_filenode (Relation rel , const RelFileNode * newrnode ,
382
382
char persistence , TransactionId * freezeXid ,
383
383
MultiXactId * minmulti ) {
384
- ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
385
- errmsg_internal ("vertex_relation_set_new_filenode not implemented" )));
384
+
385
+ SMgrRelation srel ;
386
+
387
+ if (persistence != RELPERSISTENCE_PERMANENT || rel -> rd_rel -> relkind != RELKIND_RELATION )
388
+ ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
389
+ errmsg_internal ("vertex am can only work on permenant tables" )));
390
+
391
+ /*
392
+ * Initialize to the minimum XID that could put tuples in the table. We
393
+ * know that no xacts older than RecentXmin are still running, so that
394
+ * will do.
395
+ */
396
+ * freezeXid = RecentXmin ;
397
+
398
+ /*
399
+ * Similarly, initialize the minimum Multixact to the first value that
400
+ * could possibly be stored in tuples in the table. Running transactions
401
+ * could reuse values from their local cache, so we are careful to
402
+ * consider all currently running multis.
403
+ *
404
+ * XXX this could be refined further, but is it worth the hassle?
405
+ */
406
+ * minmulti = GetOldestMultiXactId ();
407
+
408
+ srel = RelationCreateStorage (* newrnode , persistence );
409
+
410
+ smgrclose (srel );
386
411
}
387
412
388
413
/*
@@ -475,9 +500,7 @@ bool vertex_scan_analyze_next_block(TableScanDesc scan, BlockNumber blockno,
475
500
ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
476
501
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
477
502
478
-
479
-
480
- return false;
503
+ return false;
481
504
}
482
505
483
506
/*
@@ -495,7 +518,7 @@ bool vertex_scan_analyze_next_tuple(TableScanDesc scan, TransactionId OldestXmin
495
518
496
519
497
520
498
- return false;
521
+ return false;
499
522
}
500
523
501
524
/* see table_index_build_range_scan for reference about parameters */
@@ -510,7 +533,7 @@ double vertex_index_build_range_scan(Relation table_rel, Relation index_rel,
510
533
511
534
512
535
513
- return 0 ;
536
+ return 0 ;
514
537
}
515
538
516
539
/* see table_index_validate_scan for reference about parameters */
@@ -544,7 +567,7 @@ uint64 vertex_relation_size(Relation rel, ForkNumber forkNumber) {
544
567
545
568
546
569
547
- return 0 ;
570
+ return 0 ;
548
571
}
549
572
550
573
@@ -561,7 +584,7 @@ bool vertex_relation_needs_toast_table(Relation rel) {
561
584
562
585
563
586
564
- return false;
587
+ return false;
565
588
}
566
589
567
590
/*
@@ -575,7 +598,7 @@ Oid vertex_relation_toast_am(Relation rel) {
575
598
576
599
577
600
578
- return InvalidOid ;
601
+ return InvalidOid ;
579
602
}
580
603
581
604
/*
@@ -659,7 +682,7 @@ bool vertex_scan_bitmap_next_block(TableScanDesc scan, struct TBMIterateResult *
659
682
ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
660
683
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
661
684
662
- return false;
685
+ return false;
663
686
}
664
687
665
688
/*
@@ -674,11 +697,11 @@ bool vertex_scan_bitmap_next_block(TableScanDesc scan, struct TBMIterateResult *
674
697
* scan_bitmap_next_tuple need to exist, or neither.
675
698
*/
676
699
bool vertex_scan_bitmap_next_tuple (TableScanDesc scan , struct TBMIterateResult * tbmres ,
677
- TupleTableSlot * slot ) {
700
+ TupleTableSlot * slot ) {
678
701
ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
679
702
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
680
703
681
- return false;
704
+ return false;
682
705
}
683
706
684
707
/*
@@ -710,7 +733,7 @@ bool vertex_scan_sample_next_block(TableScanDesc scan, struct SampleScanState *s
710
733
ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
711
734
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
712
735
713
- return false;
736
+ return false;
714
737
}
715
738
716
739
/*
@@ -727,12 +750,12 @@ bool vertex_scan_sample_next_block(TableScanDesc scan, struct SampleScanState *s
727
750
* assumption somehow.
728
751
*/
729
752
bool vertex_scan_sample_next_tuple (TableScanDesc scan , struct SampleScanState * scanstate ,
730
- TupleTableSlot * slot ) {
731
-
753
+ TupleTableSlot * slot ) {
754
+
732
755
ereport (ERROR , (errcode (ERRCODE_FEATURE_NOT_SUPPORTED ),
733
756
errmsg_internal ("vertex_parallelscan_reinitialize not implemented" )));
734
757
735
- return false;
758
+ return false;
736
759
}
737
760
738
761
/* ------------------------------------------------------------------------
0 commit comments