Getting rid of multiple table maps

This commit is contained in:
Zach Musgrave
2024-04-19 14:19:22 -07:00
parent c1ad6e58b0
commit 3f0396add5
3 changed files with 9 additions and 118 deletions
+6 -106
View File
@@ -144,14 +144,14 @@ func (rcv *RootValue) MutateCollation(n Collation) bool {
return rcv._tab.MutateUint16Slot(10, uint16(n))
}
func (rcv *RootValue) TrySchemaTables(obj *DatabaseSchemaTableStore, j int) (bool, error) {
func (rcv *RootValue) TrySchemas(obj *DatabaseSchema, j int) (bool, error) {
o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
if o != 0 {
x := rcv._tab.Vector(o)
x += flatbuffers.UOffsetT(j) * 4
x = rcv._tab.Indirect(x)
obj.Init(rcv._tab.Bytes, x)
if DatabaseSchemaTableStoreNumFields < obj.Table().NumFields() {
if DatabaseSchemaNumFields < obj.Table().NumFields() {
return false, flatbuffers.ErrTableHasUnknownFields
}
return true, nil
@@ -159,7 +159,7 @@ func (rcv *RootValue) TrySchemaTables(obj *DatabaseSchemaTableStore, j int) (boo
return false, nil
}
func (rcv *RootValue) SchemaTablesLength() int {
func (rcv *RootValue) SchemasLength() int {
o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
if o != 0 {
return rcv._tab.VectorLen(o)
@@ -190,10 +190,10 @@ func RootValueStartForeignKeyAddrVector(builder *flatbuffers.Builder, numElems i
func RootValueAddCollation(builder *flatbuffers.Builder, collation Collation) {
builder.PrependUint16Slot(3, uint16(collation), 0)
}
func RootValueAddSchemaTables(builder *flatbuffers.Builder, schemaTables flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(schemaTables), 0)
func RootValueAddSchemas(builder *flatbuffers.Builder, schemas flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(schemas), 0)
}
func RootValueStartSchemaTablesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
func RootValueStartSchemasVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
return builder.StartVector(4, numElems, 4)
}
func RootValueEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
@@ -251,103 +251,3 @@ func DatabaseSchemaAddName(builder *flatbuffers.Builder, name flatbuffers.UOffse
func DatabaseSchemaEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}
type DatabaseSchemaTableStore struct {
_tab flatbuffers.Table
}
func InitDatabaseSchemaTableStoreRoot(o *DatabaseSchemaTableStore, buf []byte, offset flatbuffers.UOffsetT) error {
n := flatbuffers.GetUOffsetT(buf[offset:])
return o.Init(buf, n+offset)
}
func TryGetRootAsDatabaseSchemaTableStore(buf []byte, offset flatbuffers.UOffsetT) (*DatabaseSchemaTableStore, error) {
x := &DatabaseSchemaTableStore{}
return x, InitDatabaseSchemaTableStoreRoot(x, buf, offset)
}
func TryGetSizePrefixedRootAsDatabaseSchemaTableStore(buf []byte, offset flatbuffers.UOffsetT) (*DatabaseSchemaTableStore, error) {
x := &DatabaseSchemaTableStore{}
return x, InitDatabaseSchemaTableStoreRoot(x, buf, offset+flatbuffers.SizeUint32)
}
func (rcv *DatabaseSchemaTableStore) Init(buf []byte, i flatbuffers.UOffsetT) error {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
if DatabaseSchemaTableStoreNumFields < rcv.Table().NumFields() {
return flatbuffers.ErrTableHasUnknownFields
}
return nil
}
func (rcv *DatabaseSchemaTableStore) Table() flatbuffers.Table {
return rcv._tab
}
func (rcv *DatabaseSchemaTableStore) TryDatabaseSchema(obj *DatabaseSchema) (*DatabaseSchema, error) {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
x := rcv._tab.Indirect(o + rcv._tab.Pos)
if obj == nil {
obj = new(DatabaseSchema)
}
obj.Init(rcv._tab.Bytes, x)
if DatabaseSchemaNumFields < obj.Table().NumFields() {
return nil, flatbuffers.ErrTableHasUnknownFields
}
return obj, nil
}
return nil, nil
}
func (rcv *DatabaseSchemaTableStore) Tables(j int) byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
a := rcv._tab.Vector(o)
return rcv._tab.GetByte(a + flatbuffers.UOffsetT(j*1))
}
return 0
}
func (rcv *DatabaseSchemaTableStore) TablesLength() int {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.VectorLen(o)
}
return 0
}
func (rcv *DatabaseSchemaTableStore) TablesBytes() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *DatabaseSchemaTableStore) MutateTables(j int, n byte) bool {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
a := rcv._tab.Vector(o)
return rcv._tab.MutateByte(a+flatbuffers.UOffsetT(j*1), n)
}
return false
}
const DatabaseSchemaTableStoreNumFields = 2
func DatabaseSchemaTableStoreStart(builder *flatbuffers.Builder) {
builder.StartObject(DatabaseSchemaTableStoreNumFields)
}
func DatabaseSchemaTableStoreAddDatabaseSchema(builder *flatbuffers.Builder, databaseSchema flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(databaseSchema), 0)
}
func DatabaseSchemaTableStoreAddTables(builder *flatbuffers.Builder, tables flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(tables), 0)
}
func DatabaseSchemaTableStoreStartTablesVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
return builder.StartVector(1, numElems, 1)
}
func DatabaseSchemaTableStoreEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}
+1 -1
View File
@@ -1510,7 +1510,7 @@ func serializeSchemaTableStore(databaseSchema string, amUnderEdit prolly.Address
serial.DatabaseSchemaStart(sb)
serial.DatabaseSchemaAddName(sb, nameOff)
schemaOff := serial.DatabaseSchemaEnd(sb)
serial.DatabaseSchemaTableStoreStart(sb)
serial.DatabaseSchemaTableStoreAddDatabaseSchema(sb, schemaOff)
serial.DatabaseSchemaTableStoreAddTables(sb, tablesOff)
+2 -11
View File
@@ -26,23 +26,14 @@ table RootValue {
collation:Collation;
// schema_tables is used for table storage in any non-default database schema. Databases with a single schema
// (the default) only use the normal tables field. Entries are stored in sorted order by schema name.
schema_tables:[DatabaseSchemaTableStore];
// TODO: the above is probably worse to serialize than just storing schema tables inline with some sort of marker
// schemas records the schemas in this database, which may be empty for a database with a single default schema
schemas:[DatabaseSchema];
}
table DatabaseSchema {
name:string;
}
table DatabaseSchemaTableStore {
database_schema:DatabaseSchema;
tables:[ubyte]; // Serialized AddressMap
}
// KEEP THIS IN SYNC WITH fileidentifiers.go
file_identifier "RTVL";