in rust/driver/dummy/src/lib.rs [399:635]
fn get_objects(
&self,
_depth: ObjectDepth,
_catalog: Option<&str>,
_db_schema: Option<&str>,
_table_name: Option<&str>,
_table_type: Option<Vec<&str>>,
_column_name: Option<&str>,
) -> Result<impl RecordBatchReader> {
let constraint_column_usage_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("fk_catalog", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["my_catalog"])) as ArrayRef,
),
(
Arc::new(Field::new("fk_db_schema", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["my_db_schema"])) as ArrayRef,
),
(
Arc::new(Field::new("fk_table", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["my_table"])) as ArrayRef,
),
(
Arc::new(Field::new("fk_column_name", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["my_column"])) as ArrayRef,
),
]);
let constraint_column_usage_array = ListArray::new(
Arc::new(Field::new("item", schemas::USAGE_SCHEMA.clone(), true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(constraint_column_usage_array_inner),
None,
);
let constraint_column_names_array = ListArray::new(
Arc::new(Field::new("item", DataType::Utf8, true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(StringArray::from(vec!["my_other_column"])),
None,
);
let table_constraints_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("constraint_name", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["my_constraint"])) as ArrayRef,
),
(
Arc::new(Field::new("constraint_type", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["FOREIGN KEY"])) as ArrayRef,
),
(
Arc::new(Field::new(
"constraint_column_names",
DataType::new_list(DataType::Utf8, true),
false,
)),
Arc::new(constraint_column_names_array) as ArrayRef,
),
(
Arc::new(Field::new(
"constraint_column_usage",
DataType::new_list(schemas::USAGE_SCHEMA.clone(), true),
true,
)),
Arc::new(constraint_column_usage_array) as ArrayRef,
),
]);
let table_columns_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("column_name", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["my_column"])) as ArrayRef,
),
(
Arc::new(Field::new("ordinal_position", DataType::Int32, true)),
Arc::new(Int32Array::from(vec![0])) as ArrayRef,
),
(
Arc::new(Field::new("remarks", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["Nice column!"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_data_type", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![0])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_type_name", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["my_type"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_column_size", DataType::Int32, true)),
Arc::new(Int32Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_decimal_digits", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_num_prec_radix", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_nullable", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_column_def", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["column_def"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_sql_data_type", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_datetime_sub", DataType::Int16, true)),
Arc::new(Int16Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_char_octet_length", DataType::Int32, true)),
Arc::new(Int32Array::from(vec![42])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_is_nullable", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["YES"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_scope_catalog", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["MyCatalog"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_scope_schema", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["MySchema"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_scope_table", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["MyTable"])) as ArrayRef,
),
(
Arc::new(Field::new("xdbc_is_autoincrement", DataType::Boolean, true)),
Arc::new(BooleanArray::from(vec![true])) as ArrayRef,
),
(
Arc::new(Field::new(
"xdbc_is_generatedcolumn",
DataType::Boolean,
true,
)),
Arc::new(BooleanArray::from(vec![true])) as ArrayRef,
),
]);
let table_columns_array = ListArray::new(
Arc::new(Field::new("item", schemas::COLUMN_SCHEMA.clone(), true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(table_columns_array_inner),
None,
);
let table_constraints_array = ListArray::new(
Arc::new(Field::new("item", schemas::CONSTRAINT_SCHEMA.clone(), true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(table_constraints_array_inner),
None,
);
let db_schema_tables_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("table_name", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["default"])) as ArrayRef,
),
(
Arc::new(Field::new("table_type", DataType::Utf8, false)),
Arc::new(StringArray::from(vec!["table"])) as ArrayRef,
),
(
Arc::new(Field::new(
"table_columns",
DataType::new_list(schemas::COLUMN_SCHEMA.clone(), true),
true,
)),
Arc::new(table_columns_array) as ArrayRef,
),
(
Arc::new(Field::new(
"table_constraints",
DataType::new_list(schemas::CONSTRAINT_SCHEMA.clone(), true),
true,
)),
Arc::new(table_constraints_array) as ArrayRef,
),
]);
let db_schema_tables_array = ListArray::new(
Arc::new(Field::new("item", schemas::TABLE_SCHEMA.clone(), true)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(db_schema_tables_array_inner),
None,
);
let catalog_db_schemas_array_inner = StructArray::from(vec![
(
Arc::new(Field::new("db_schema_name", DataType::Utf8, true)),
Arc::new(StringArray::from(vec!["default"])) as ArrayRef,
),
(
Arc::new(Field::new_list(
"db_schema_tables",
Arc::new(Field::new("item", schemas::TABLE_SCHEMA.clone(), true)),
true,
)),
Arc::new(db_schema_tables_array) as ArrayRef,
),
]);
let catalog_name_array = StringArray::from(vec!["default"]);
let catalog_db_schemas_array = ListArray::new(
Arc::new(Field::new(
"item",
schemas::OBJECTS_DB_SCHEMA_SCHEMA.clone(),
true,
)),
OffsetBuffer::new(ScalarBuffer::from(vec![0, 1])),
Arc::new(catalog_db_schemas_array_inner),
None,
);
let batch = RecordBatch::try_new(
schemas::GET_OBJECTS_SCHEMA.clone(),
vec![
Arc::new(catalog_name_array),
Arc::new(catalog_db_schemas_array),
],
)?;
let reader = SingleBatchReader::new(batch);
Ok(reader)
}