それが僕には楽しかったんです。

僕と MySQL と時々 MariaDB

SystemPage の実装

この記事は「けんつの1人 DBMS アドベントカレンダー Advent Calendar 2019 - Adventar」 18 日目の記事です。

はじめに

どうも、最近ダクソリマスタードRTA をやりはじめたけんつです。黒騎士斧槍めちゃ強いですね。
今回もめちゃくちゃ短いが、SystemPageの実装についてです。

SystemPage と言っているけどおそらく catalog といったほうがよくてテーブルの情報を持っているやつです

実装

import "encoding/json"

type SystemPage struct {
	MaxPageId   uint64   `json:"MaxPageId"`
	TableName   string   `json:"TableName"`
	ColumnTypes []string `json:"ColumnType"`
	ColumnNames []string `json:"ColumnName"`
}

func NewSystemPage(tableName string) *SystemPage {
	return &SystemPage{
		MaxPageId:   0,
		TableName:   tableName,
		ColumnTypes: []string{},
		ColumnNames: []string{},
	}
}

func SerializeSystemPage(s *SystemPage) []byte {
	buf, err := json.Marshal(*s)
	if err != nil {
		panic(err)
	}
	return buf
}

func DeserializeSystemPage(data []byte) (*SystemPage, error) {
	var sys SystemPage
	err := json.Unmarshal(data, &sys)
	if err != nil {
		return nil, err
	}
	return &sys, nil
}

これに関しては語ることがない。
テーブルの情報を持っていたかった。以上。

おわりに

こんな短くていいのか?