private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema)
        {
            // Build metadata
            VectorOffset metadataVectorOffset = default;

            if (schema.HasMetadata)
            {
                Offset <Flatbuf.KeyValue>[] metadataOffsets = GetMetadataOffsets(schema.Metadata);
                metadataVectorOffset = Flatbuf.Schema.CreateCustomMetadataVector(Builder, metadataOffsets);
            }

            // Build fields
            var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count];

            for (int i = 0; i < fieldOffsets.Length; i++)
            {
                Field        field           = schema.GetFieldByIndex(i);
                StringOffset fieldNameOffset = Builder.CreateString(field.Name);
                ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field);

                VectorOffset fieldChildrenVectorOffset = GetChildrenFieldOffset(field);
                VectorOffset fieldMetadataVectorOffset = GetFieldMetadataOffset(field);

                fieldOffsets[i] = Flatbuf.Field.CreateField(Builder,
                                                            fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
        private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema)
        {
            // TODO: Serialize schema metadata

            // Build fields

            var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count];

            for (int i = 0; i < fieldOffsets.Length; i++)
            {
                Field        field           = schema.GetFieldByIndex(i);
                StringOffset fieldNameOffset = Builder.CreateString(field.Name);
                ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field);

                VectorOffset fieldChildrenVectorOffset = Builder.CreateVectorOfTables(GetChildrenFieldOffsets(field));

                fieldOffsets[i] = Flatbuf.Field.CreateField(Builder,
                                                            fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
Exemple #3
0
        private protected Offset <Flatbuf.Schema> SerializeSchema(Schema schema)
        {
            // Build metadata
            VectorOffset metadataVectorOffset = default;

            if (schema.HasMetadata)
            {
                Offset <Flatbuf.KeyValue>[] metadataOffsets = GetMetadataOffsets(schema.Metadata);
                metadataVectorOffset = Flatbuf.Schema.CreateCustomMetadataVector(Builder, metadataOffsets);
            }

            // Build fields
            var fieldOffsets = new Offset <Flatbuf.Field> [schema.Fields.Count];

            for (int i = 0; i < fieldOffsets.Length; i++)
            {
                Field        field           = schema.GetFieldByIndex(i);
                StringOffset fieldNameOffset = Builder.CreateString(field.Name);
                ArrowTypeFlatbufferBuilder.FieldType fieldType = _fieldTypeBuilder.BuildFieldType(field);

                VectorOffset fieldChildrenVectorOffset = GetChildrenFieldOffset(field);
                VectorOffset fieldMetadataVectorOffset = GetFieldMetadataOffset(field);
                Offset <Flatbuf.DictionaryEncoding> dictionaryOffset = GetDictionaryOffset(field);

                fieldOffsets[i] = Flatbuf.Field.CreateField(Builder,
                                                            fieldNameOffset, field.IsNullable, fieldType.Type, fieldType.Offset,
                                                            dictionaryOffset, fieldChildrenVectorOffset, fieldMetadataVectorOffset);
            }

            VectorOffset fieldsVectorOffset = Flatbuf.Schema.CreateFieldsVector(Builder, fieldOffsets);

            // Build schema

            Flatbuf.Endianness endianness = BitConverter.IsLittleEndian ? Flatbuf.Endianness.Little : Flatbuf.Endianness.Big;

            return(Flatbuf.Schema.CreateSchema(
                       Builder, endianness, fieldsVectorOffset, metadataVectorOffset));
        }