// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
int main (string[] args) {
var output_path = "/tmp/file.arrow";
if (args.length > 1) {
output_path = args[0];
}
var fields = new GLib.List();
fields.append(new GArrow.Field("uint8", new GArrow.UInt8DataType()));
fields.append(new GArrow.Field("uint16", new GArrow.UInt16DataType()));
fields.append(new GArrow.Field("uint32", new GArrow.UInt32DataType()));
fields.append(new GArrow.Field("uint64", new GArrow.UInt64DataType()));
fields.append(new GArrow.Field("int8", new GArrow.Int8DataType()));
fields.append(new GArrow.Field("int16", new GArrow.Int16DataType()));
fields.append(new GArrow.Field("int32", new GArrow.Int32DataType()));
fields.append(new GArrow.Field("int64", new GArrow.Int64DataType()));
fields.append(new GArrow.Field("float", new GArrow.FloatDataType()));
fields.append(new GArrow.Field("double", new GArrow.DoubleDataType()));
var schema = new GArrow.Schema(fields);
GArrow.FileOutputStream output;
try {
output = new GArrow.FileOutputStream(output_path, false);
} catch (Error error) {
stderr.printf("failed to open output path: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
GArrow.RecordBatchFileWriter writer;
try {
writer = new GArrow.RecordBatchFileWriter(output, schema);
} catch (Error error) {
stderr.printf("failed to create writer: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
var n_rows = 4;
var columns = new GLib.List();
try {
var builder = new GArrow.UInt8ArrayBuilder();
builder.append_values({1, 2, 4, 8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.UInt16ArrayBuilder();
builder.append_values({1, 2, 4, 8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.UInt32ArrayBuilder();
builder.append_values({1, 2, 4, 8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.UInt64ArrayBuilder();
builder.append_values({1, 2, 4, 8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.Int8ArrayBuilder();
builder.append_values({1, -2, 4, -8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.Int16ArrayBuilder();
builder.append_values({1, -2, 4, -8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.Int32ArrayBuilder();
builder.append_values({1, -2, 4, -8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.Int64ArrayBuilder();
builder.append_values({1, -2, 4, -8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.FloatArrayBuilder();
builder.append_values({1.1f, -2.2f, 4.4f, -8.8f}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var builder = new GArrow.DoubleArrayBuilder();
builder.append_values({1.1, -2.2, 4.4, -8.8}, null);
columns.append(builder.finish());
} catch (Error error) {
stderr.printf("failed to build an array: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
var record_batch = new GArrow.RecordBatch(schema, n_rows, columns);
writer.write_record_batch(record_batch);
} catch (Error error) {
stderr.printf("failed to build a record batch: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
try {
writer.close();
output.close();
} catch (Error error) {
stderr.printf("failed to close: %s\n", error.message);
return Posix.EXIT_FAILURE;
}
return Posix.EXIT_SUCCESS;
}