mirror of
https://github.com/wader/fq.git
synced 2024-12-26 23:15:04 +03:00
postgres: fix compilation, fix tests
This commit is contained in:
parent
bb2659d442
commit
e5f15c5fed
@ -126,6 +126,9 @@ ogg_page OGG page
|
||||
opus_packet Opus packet
|
||||
pcap PCAP packet capture
|
||||
pcapng PCAPNG packet capture
|
||||
pg_btree PostgreSQL btree index file
|
||||
pg_control PostgreSQL control file
|
||||
pg_heap PostgreSQL heap file
|
||||
png Portable Network Graphics file
|
||||
prores_frame Apple ProRes frame
|
||||
protobuf Protobuf
|
||||
|
@ -112,9 +112,9 @@ var (
|
||||
Opus_Packet = &decode.Group{Name: "opus_packet"}
|
||||
PCAP = &decode.Group{Name: "pcap"}
|
||||
PCAPNG = &decode.Group{Name: "pcapng"}
|
||||
PG_BTREE = "pg_btree"
|
||||
PG_CONTROL = "pg_control"
|
||||
PG_HEAP = "pg_heap"
|
||||
PG_BTREE = &decode.Group{Name: "pg_btree"}
|
||||
PG_CONTROL = &decode.Group{Name: "pg_control"}
|
||||
PG_HEAP = &decode.Group{Name: "pg_heap"}
|
||||
PNG = &decode.Group{Name: "png"}
|
||||
Prores_Frame = &decode.Group{Name: "prores_frame"}
|
||||
Protobuf = &decode.Group{Name: "protobuf"}
|
||||
|
@ -272,7 +272,7 @@ func decodeIndexTuples(btree *BTree, d *decode.D) {
|
||||
d.FieldValueBool("has_nulls", hasNulls)
|
||||
d.FieldValueBool("has_var_widths", hasVarWidths)
|
||||
})
|
||||
d.FieldValueU("size", size)
|
||||
d.FieldValueUint("size", size)
|
||||
if size < IndexTupleDataSize {
|
||||
d.Fatalf("invalid size of tuple = %d\n", size)
|
||||
}
|
||||
|
@ -8,17 +8,18 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
//typedef enum DBState
|
||||
//{
|
||||
// DB_STARTUP = 0,
|
||||
// DB_SHUTDOWNED,
|
||||
// DB_SHUTDOWNED_IN_RECOVERY,
|
||||
// DB_SHUTDOWNING,
|
||||
// DB_IN_CRASH_RECOVERY,
|
||||
// DB_IN_ARCHIVE_RECOVERY,
|
||||
// DB_IN_PRODUCTION
|
||||
//} DBState;
|
||||
var DBState = scalar.UToScalar{
|
||||
// typedef enum DBState
|
||||
//
|
||||
// {
|
||||
// DB_STARTUP = 0,
|
||||
// DB_SHUTDOWNED,
|
||||
// DB_SHUTDOWNED_IN_RECOVERY,
|
||||
// DB_SHUTDOWNING,
|
||||
// DB_IN_CRASH_RECOVERY,
|
||||
// DB_IN_ARCHIVE_RECOVERY,
|
||||
// DB_IN_PRODUCTION
|
||||
// } DBState;
|
||||
var DBState = scalar.UintMap{
|
||||
0: {Sym: "DB_STARTUP"},
|
||||
1: {Sym: "DB_SHUTDOWNED"},
|
||||
2: {Sym: "DB_SHUTDOWNED_IN_RECOVERY"},
|
||||
@ -28,13 +29,14 @@ var DBState = scalar.UToScalar{
|
||||
6: {Sym: "DB_IN_PRODUCTION"},
|
||||
}
|
||||
|
||||
//typedef enum WalLevel
|
||||
//{
|
||||
// WAL_LEVEL_MINIMAL = 0,
|
||||
// WAL_LEVEL_REPLICA,
|
||||
// WAL_LEVEL_LOGICAL
|
||||
//} WalLevel;
|
||||
var WalLevel = scalar.SToScalar{
|
||||
// typedef enum WalLevel
|
||||
//
|
||||
// {
|
||||
// WAL_LEVEL_MINIMAL = 0,
|
||||
// WAL_LEVEL_REPLICA,
|
||||
// WAL_LEVEL_LOGICAL
|
||||
// } WalLevel;
|
||||
var WalLevel = scalar.SintMap{
|
||||
0: {Sym: "WAL_LEVEL_MINIMAL"},
|
||||
1: {Sym: "WAL_LEVEL_REPLICA"},
|
||||
2: {Sym: "WAL_LEVEL_LOGICAL"},
|
||||
@ -42,8 +44,9 @@ var WalLevel = scalar.SToScalar{
|
||||
|
||||
type icuVersionMapper struct{}
|
||||
|
||||
func (m icuVersionMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
a := s.ActualU()
|
||||
func (m icuVersionMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
s.ScalarActual()
|
||||
a := s.Actual
|
||||
major := a & 0xff
|
||||
minor := (a >> 8) & 0xff
|
||||
v1 := (a >> 16) & 0xff
|
||||
@ -56,8 +59,8 @@ var IcuVersionMapper = icuVersionMapper{}
|
||||
|
||||
type xLogRecPtrMapper struct{}
|
||||
|
||||
func (m xLogRecPtrMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
v := s.ActualU()
|
||||
func (m xLogRecPtrMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
v := s.Actual
|
||||
s.Sym = fmt.Sprintf("%X/%X", v>>32, uint32(v))
|
||||
return s, nil
|
||||
}
|
||||
@ -67,8 +70,8 @@ var LocPtrMapper = xLogRecPtrMapper{}
|
||||
|
||||
type nextFullXidMapper struct{}
|
||||
|
||||
func (m nextFullXidMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
v := s.ActualU()
|
||||
func (m nextFullXidMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
v := s.Actual
|
||||
s.Sym = fmt.Sprintf("%d:%d", v>>32, uint32(v))
|
||||
return s, nil
|
||||
}
|
||||
@ -77,8 +80,8 @@ var NextFullXidMapper = nextFullXidMapper{}
|
||||
|
||||
type timeMapper struct{}
|
||||
|
||||
func (m timeMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
ut := s.ActualS()
|
||||
func (m timeMapper) MapSint(s scalar.Sint) (scalar.Sint, error) {
|
||||
ut := s.Actual
|
||||
t := time.Unix(ut, 0)
|
||||
s.Sym = t.UTC().Format(time.RFC1123)
|
||||
return s, nil
|
||||
@ -87,12 +90,14 @@ func (m timeMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
var TimeMapper = timeMapper{}
|
||||
|
||||
// typedef enum
|
||||
//{
|
||||
// PG_UNKNOWN = 0xFFFF,
|
||||
// PG_ORIGINAL = 0,
|
||||
// PGPRO_STANDARD = ('P'<<8|'P'),
|
||||
// PGPRO_ENTERPRISE = ('P'<<8|'E'),
|
||||
//} PgEdition;
|
||||
//
|
||||
// {
|
||||
// PG_UNKNOWN = 0xFFFF,
|
||||
// PG_ORIGINAL = 0,
|
||||
// PGPRO_STANDARD = ('P'<<8|'P'),
|
||||
// PGPRO_ENTERPRISE = ('P'<<8|'E'),
|
||||
// } PgEdition;
|
||||
//
|
||||
//nolint:revive
|
||||
const (
|
||||
PG_UNKNOWN = 0xFFFF
|
||||
@ -108,8 +113,8 @@ const (
|
||||
|
||||
type versionMapper struct{}
|
||||
|
||||
func (m versionMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
v := s.ActualU()
|
||||
func (m versionMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
v := s.Actual
|
||||
v1, v2 := ParsePgProVersion(uint32(v))
|
||||
switch v1 {
|
||||
case PG_UNKNOWN:
|
||||
@ -134,8 +139,8 @@ func ParsePgProVersion(v uint32) (pgProVersion uint32, oriVer uint32) {
|
||||
|
||||
type hexMapper struct{}
|
||||
|
||||
func (m hexMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
v := s.ActualU()
|
||||
func (m hexMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
v := s.Actual
|
||||
s.Sym = fmt.Sprintf("%X", v)
|
||||
return s, nil
|
||||
}
|
||||
|
@ -21,8 +21,8 @@ func TransactionIDIsNormal(xid uint64) bool {
|
||||
|
||||
type lpFlagsMapper struct{}
|
||||
|
||||
func (m lpFlagsMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
switch s.ActualU() {
|
||||
func (m lpFlagsMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
switch s.Actual {
|
||||
case LP_UNUSED:
|
||||
s.Sym = "LP_UNUSED"
|
||||
case LP_NORMAL:
|
||||
@ -41,8 +41,8 @@ type Mask struct {
|
||||
Mask uint64
|
||||
}
|
||||
|
||||
func (m Mask) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
m1 := s.ActualU()
|
||||
func (m Mask) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
m1 := s.Actual
|
||||
v := IsMaskSet(m1, m.Mask)
|
||||
s.Actual = v
|
||||
return s, nil
|
||||
|
@ -92,9 +92,9 @@ func decodeItemIdsInternal(page *HeapPage, d *decode.D) {
|
||||
itemID.Flags = uint32((itemIDData >> 15) & 0x3)
|
||||
itemID.Len = uint32((itemIDData >> 17) & 0x7fff)
|
||||
|
||||
d.FieldValueU("lp_off", uint64(itemID.Off))
|
||||
d.FieldValueU("lp_flags", uint64(itemID.Flags), common.LpFlagsMapper)
|
||||
d.FieldValueU("lp_len", uint64(itemID.Len))
|
||||
d.FieldValueUint("lp_off", uint64(itemID.Off))
|
||||
d.FieldValueUint("lp_flags", uint64(itemID.Flags), common.LpFlagsMapper)
|
||||
d.FieldValueUint("lp_len", uint64(itemID.Len))
|
||||
|
||||
page.ItemIds = append(page.ItemIds, itemID)
|
||||
})
|
||||
|
@ -183,7 +183,7 @@ func decodeHeapPage(heap *Heap, d *decode.D, blockNumber uint32) {
|
||||
d.FieldStruct("page_header", func(d *decode.D) {
|
||||
heap.DecodePageHeaderData(page, d)
|
||||
|
||||
d.FieldValueU("pd_checksum_check", uint64(checkSum))
|
||||
d.FieldValueUint("pd_checksum_check", uint64(checkSum))
|
||||
sumEqual := page.PdChecksum == checkSum
|
||||
d.FieldValueBool("pd_checksum_check_equal", sumEqual)
|
||||
})
|
||||
@ -398,8 +398,8 @@ type TransactionMapper struct {
|
||||
Tuple *TupleD
|
||||
}
|
||||
|
||||
func (m TransactionMapper) MapScalar(s scalar.S) (scalar.S, error) {
|
||||
xid := s.ActualU()
|
||||
func (m TransactionMapper) MapUint(s scalar.Uint) (scalar.Uint, error) {
|
||||
xid := s.Actual
|
||||
|
||||
if m.Special.PdXidBase != 0 && m.Tuple.IsMulti && common.TransactionIDIsNormal(xid) {
|
||||
xid64 := xid + m.Special.PdXidBase
|
||||
|
@ -6,7 +6,7 @@ import (
|
||||
"github.com/wader/fq/pkg/scalar"
|
||||
)
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
d.FieldU64("system_identifier")
|
||||
d.FieldU32("pg_control_version", common.VersionMapper)
|
||||
d.FieldU32("catalog_version_no")
|
||||
|
@ -76,7 +76,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 80 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -76,7 +76,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 88 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -74,7 +74,7 @@ import (
|
||||
/* XXX 4-byte padding */
|
||||
|
||||
/* total size (bytes): 88 */
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -74,7 +74,7 @@ import (
|
||||
/* XXX 4-byte padding */
|
||||
//
|
||||
/* total size (bytes): 88 */
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -80,7 +80,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -81,7 +81,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -81,7 +81,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -78,7 +78,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -78,7 +78,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -76,7 +76,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 120 */
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -78,7 +78,7 @@ import (
|
||||
/* total size (bytes): 80 */
|
||||
//
|
||||
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -76,7 +76,7 @@ import (
|
||||
//
|
||||
/* total size (bytes): 80 */
|
||||
//
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -75,7 +75,7 @@ import (
|
||||
/* XXX 4-byte padding */
|
||||
//
|
||||
/* total size (bytes): 88 */
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -74,7 +74,7 @@ import (
|
||||
/* XXX 4-byte padding */
|
||||
//
|
||||
/* total size (bytes): 88 */
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -74,7 +74,7 @@ import (
|
||||
/* XXX 4-byte padding */
|
||||
//
|
||||
/* total size (bytes): 88 */
|
||||
func DecodePgControl(d *decode.D, in any) any {
|
||||
func DecodePgControl(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
/* 12 | 4 */ // uint32 catalog_version_no;
|
||||
|
@ -14,11 +14,10 @@ import (
|
||||
var pgBTreeFS embed.FS
|
||||
|
||||
func init() {
|
||||
interp.RegisterFormat(decode.Format{
|
||||
Name: format.PG_BTREE,
|
||||
interp.RegisterFormat(format.PG_BTREE, &decode.Format{
|
||||
Description: "PostgreSQL btree index file",
|
||||
DecodeFn: decodePgBTree,
|
||||
DecodeInArg: format.PostgresBTreeIn{
|
||||
DefaultInArg: format.PostgresBTreeIn{
|
||||
Page: 0,
|
||||
},
|
||||
RootArray: true,
|
||||
@ -27,10 +26,10 @@ func init() {
|
||||
interp.RegisterFS(pgBTreeFS)
|
||||
}
|
||||
|
||||
func decodePgBTree(d *decode.D, in any) any {
|
||||
func decodePgBTree(d *decode.D) any {
|
||||
d.Endian = decode.LittleEndian
|
||||
pgIn, ok := in.(format.PostgresBTreeIn)
|
||||
if !ok {
|
||||
var pgIn format.PostgresBTreeIn
|
||||
if !d.ArgAs(&pgIn) {
|
||||
d.Fatalf("DecodeInArg must be PostgresBTreeIn!\n")
|
||||
}
|
||||
return postgres.DecodePgBTree(d, pgIn)
|
||||
|
@ -29,11 +29,10 @@ import (
|
||||
var pgControlFS embed.FS
|
||||
|
||||
func init() {
|
||||
interp.RegisterFormat(decode.Format{
|
||||
Name: format.PG_CONTROL,
|
||||
interp.RegisterFormat(format.PG_CONTROL, &decode.Format{
|
||||
Description: "PostgreSQL control file",
|
||||
DecodeFn: decodePgControl,
|
||||
DecodeInArg: format.PostgresIn{
|
||||
DefaultInArg: format.PostgresIn{
|
||||
Flavour: "",
|
||||
},
|
||||
})
|
||||
@ -72,55 +71,55 @@ const (
|
||||
PG_FLAVOUR_PGPROEE15 = "pgproee15"
|
||||
)
|
||||
|
||||
func decodePgControl(d *decode.D, in any) any {
|
||||
func decodePgControl(d *decode.D) any {
|
||||
d.Endian = decode.LittleEndian
|
||||
|
||||
pgIn, ok := in.(format.PostgresIn)
|
||||
if !ok {
|
||||
var pgIn format.PostgresIn
|
||||
if !d.ArgAs(&pgIn) {
|
||||
d.Fatalf("DecodeInArg must be PostgresIn!\n")
|
||||
}
|
||||
|
||||
switch pgIn.Flavour {
|
||||
case PG_FLAVOUR_POSTGRES10:
|
||||
return postgres10.DecodePgControl(d, in)
|
||||
return postgres10.DecodePgControl(d)
|
||||
case PG_FLAVOUR_POSTGRES11:
|
||||
return postgres11.DecodePgControl(d, in)
|
||||
return postgres11.DecodePgControl(d)
|
||||
case PG_FLAVOUR_POSTGRES12:
|
||||
return postgres12.DecodePgControl(d, in)
|
||||
return postgres12.DecodePgControl(d)
|
||||
case PG_FLAVOUR_POSTGRES13:
|
||||
return postgres13.DecodePgControl(d, in)
|
||||
return postgres13.DecodePgControl(d)
|
||||
case PG_FLAVOUR_POSTGRES14, PG_FLAVOUR_POSTGRES15, PG_FLAVOUR_PGPRO15:
|
||||
return postgres14.DecodePgControl(d, in)
|
||||
return postgres14.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPRO10:
|
||||
return pgpro10.DecodePgControl(d, in)
|
||||
return pgpro10.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPRO11:
|
||||
return pgpro11.DecodePgControl(d, in)
|
||||
return pgpro11.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPRO12:
|
||||
return pgpro12.DecodePgControl(d, in)
|
||||
return pgpro12.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPRO13:
|
||||
return pgpro13.DecodePgControl(d, in)
|
||||
return pgpro13.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPRO14:
|
||||
return pgpro14.DecodePgControl(d, in)
|
||||
return pgpro14.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE10:
|
||||
return pgproee10.DecodePgControl(d, in)
|
||||
return pgproee10.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE11:
|
||||
return pgproee11.DecodePgControl(d, in)
|
||||
return pgproee11.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE12:
|
||||
return pgproee12.DecodePgControl(d, in)
|
||||
return pgproee12.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE13:
|
||||
return pgproee13.DecodePgControl(d, in)
|
||||
return pgproee13.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE14:
|
||||
return pgproee14.DecodePgControl(d, in)
|
||||
return pgproee14.DecodePgControl(d)
|
||||
case PG_FLAVOUR_PGPROEE15:
|
||||
return pgproee15.DecodePgControl(d, in)
|
||||
return pgproee15.DecodePgControl(d)
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
return probeForDecode(d, in)
|
||||
return probeForDecode(d)
|
||||
}
|
||||
|
||||
func probeForDecode(d *decode.D, in any) any {
|
||||
func probeForDecode(d *decode.D) any {
|
||||
/* 0 | 8 */ // uint64 system_identifier;
|
||||
/* 8 | 4 */ // uint32 pg_control_version;
|
||||
d.U64()
|
||||
@ -132,39 +131,39 @@ func probeForDecode(d *decode.D, in any) any {
|
||||
if pgProVersion == common.PG_ORIGINAL {
|
||||
switch oriVersion {
|
||||
case PG_CONTROL_VERSION_10:
|
||||
return postgres10.DecodePgControl(d, in)
|
||||
return postgres10.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_11:
|
||||
return postgres11.DecodePgControl(d, in)
|
||||
return postgres11.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_12:
|
||||
return postgres12.DecodePgControl(d, in)
|
||||
return postgres12.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_14:
|
||||
return postgres14.DecodePgControl(d, in)
|
||||
return postgres14.DecodePgControl(d)
|
||||
}
|
||||
}
|
||||
|
||||
if pgProVersion == common.PGPRO_STANDARD {
|
||||
switch oriVersion {
|
||||
case PG_CONTROL_VERSION_10:
|
||||
return pgpro10.DecodePgControl(d, in)
|
||||
return pgpro10.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_11:
|
||||
return pgpro11.DecodePgControl(d, in)
|
||||
return pgpro11.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_12:
|
||||
return pgpro12.DecodePgControl(d, in)
|
||||
return pgpro12.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_14:
|
||||
return pgpro14.DecodePgControl(d, in)
|
||||
return pgpro14.DecodePgControl(d)
|
||||
}
|
||||
}
|
||||
|
||||
if pgProVersion == common.PGPRO_ENTERPRISE {
|
||||
switch oriVersion {
|
||||
case PG_CONTROL_VERSION_10:
|
||||
return pgproee10.DecodePgControl(d, in)
|
||||
return pgproee10.DecodePgControl(d)
|
||||
case PGPRO_CONTROL_VERSION_11:
|
||||
return pgproee11.DecodePgControl(d, in)
|
||||
return pgproee11.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_12:
|
||||
return pgproee12.DecodePgControl(d, in)
|
||||
return pgproee12.DecodePgControl(d)
|
||||
case PG_CONTROL_VERSION_14:
|
||||
return pgproee14.DecodePgControl(d, in)
|
||||
return pgproee14.DecodePgControl(d)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,11 +18,10 @@ import (
|
||||
var pgHeapFS embed.FS
|
||||
|
||||
func init() {
|
||||
interp.RegisterFormat(decode.Format{
|
||||
Name: format.PG_HEAP,
|
||||
interp.RegisterFormat(format.PG_HEAP, &decode.Format{
|
||||
Description: "PostgreSQL heap file",
|
||||
DecodeFn: decodePgheap,
|
||||
DecodeInArg: format.PostgresHeapIn{
|
||||
DefaultInArg: format.PostgresHeapIn{
|
||||
Flavour: PG_FLAVOUR_POSTGRES14,
|
||||
Page: 0,
|
||||
Segment: 0,
|
||||
@ -33,11 +32,11 @@ func init() {
|
||||
interp.RegisterFS(pgHeapFS)
|
||||
}
|
||||
|
||||
func decodePgheap(d *decode.D, in any) any {
|
||||
func decodePgheap(d *decode.D) any {
|
||||
d.Endian = decode.LittleEndian
|
||||
|
||||
pgIn, ok := in.(format.PostgresHeapIn)
|
||||
if !ok {
|
||||
var pgIn format.PostgresHeapIn
|
||||
if !d.ArgAs(&pgIn) {
|
||||
d.Fatalf("DecodeInArg must be PostgresIn!\n")
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user