Skip to content

Commit

Permalink
postgres: add argument to calc page's check sum correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
Pavel Safonov committed Oct 7, 2022
1 parent 46e1e33 commit 4676590
Show file tree
Hide file tree
Showing 19 changed files with 77 additions and 35 deletions.
6 changes: 6 additions & 0 deletions format/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,12 @@ type PostgresIn struct {
Flavour string `doc:"PostgreSQL flavour: postgres14, pgproee14.., postgres10"`
}

type PostgresHeapIn struct {
Flavour string `doc:"PostgreSQL flavour: postgres14, pgproee14.., postgres10"`
PageNumber int `doc:"First page number in file, default is 0"`
SegmentNumber int `doc:"Segment file number (16790.1 is 1), default is 0"`
}

type PostgresWalIn struct {
Flavour string `doc:"PostgreSQL flavour: postgres14, pgproee14.., postgres10"`
Lsn string `doc:"Current LSN for WAL, use \"select pg_current_wal_lsn()\""`
Expand Down
1 change: 1 addition & 0 deletions format/postgres/common/checksum.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const (
fnvPrime = 16777619
nSumsSize = 4 * nSums
mainBlockLen = PageSize / nSumsSize
RelSegSize = 131072
)

var (
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgpro10/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package pgpro10

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgpro11/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgpro11

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -51,8 +52,9 @@ import (
//
/* total size (bytes): 12 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgpro12/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgpro12

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -52,8 +53,9 @@ import (
//
/* total size (bytes): 12 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgpro13/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgpro13

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -52,8 +53,9 @@ import (
//
/* total size (bytes): 12 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgpro14/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgpro14

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -52,8 +53,9 @@ import (
//
/* total size (bytes): 12 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgproee10/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgproee10

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/pgproee14/ee14"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -53,8 +54,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: ee14.DecodePageHeaderData,
DecodePageSpecial: ee14.DecodePageSpecial,
}
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgproee11/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgproee11

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/pgproee14/ee14"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -72,8 +73,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: ee14.DecodePageHeaderData,
DecodePageSpecial: ee14.DecodePageSpecial,
}
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgproee12/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgproee12

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/pgproee14/ee14"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -53,8 +54,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: ee14.DecodePageHeaderData,
DecodePageSpecial: ee14.DecodePageSpecial,
}
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgproee13/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgproee13

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/pgproee14/ee14"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -53,8 +54,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: ee14.DecodePageHeaderData,
DecodePageSpecial: ee14.DecodePageSpecial,
}
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/pgproee14/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package pgproee14

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/pgproee14/ee14"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -80,8 +81,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: ee14.DecodePageHeaderData,
DecodePageSpecial: ee14.DecodePageSpecial,
}
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/postgres10/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package postgres10

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/postgres11/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package postgres11

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -64,8 +65,9 @@ import (
//
/* total size (bytes): 6 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/postgres12/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package postgres12

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -64,8 +65,9 @@ import (
//
/* total size (bytes): 6 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/postgres13/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package postgres13

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand Down Expand Up @@ -45,8 +46,9 @@ import (
//
/* total size (bytes): 12 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down
5 changes: 4 additions & 1 deletion format/postgres/flavours/postgres14/common14/pg_heap.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package common14

import (
"fmt"
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/common"

"github.com/wader/fq/pkg/decode"
Expand Down Expand Up @@ -110,6 +111,8 @@ const SizeOfHeapTupleHeaderData = 24
/* total size (bytes): 6 */

type Heap struct {
Args format.PostgresHeapIn

// current Page
Page *HeapPage
// Page special data
Expand Down Expand Up @@ -142,7 +145,7 @@ func DecodeHeap(heap *Heap, d *decode.D) any {
}

func decodeHeapPages(heap *Heap, d *decode.D) {
blockNumber := uint32(0)
blockNumber := uint32(heap.Args.PageNumber + heap.Args.SegmentNumber*common.RelSegSize)
for {
if end, _ := d.TryEnd(); end {
return
Expand Down
4 changes: 3 additions & 1 deletion format/postgres/flavours/postgres14/pg_heap.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package postgres14

import (
"github.com/wader/fq/format"
"github.com/wader/fq/format/postgres/flavours/postgres14/common14"
"github.com/wader/fq/pkg/decode"
)
Expand All @@ -18,8 +19,9 @@ import (
//
/* total size (bytes): 24 */

func DecodeHeap(d *decode.D) any {
func DecodeHeap(d *decode.D, args format.PostgresHeapIn) any {
heap := &common14.Heap{
Args: args,
DecodePageHeaderData: common14.DecodePageHeader,
}
return common14.DecodeHeap(heap, d)
Expand Down

0 comments on commit 4676590

Please sign in to comment.