| 29 | constexpr int FIXED_LENGTH = 10; |
| 30 | |
| 31 | static std::shared_ptr<GroupNode> SetupSchema() { |
| 32 | parquet::schema::NodeVector fields; |
| 33 | // Create a primitive node named 'boolean_field' with type:BOOLEAN, |
| 34 | // repetition:REQUIRED |
| 35 | fields.push_back(PrimitiveNode::Make("boolean_field", Repetition::REQUIRED, |
| 36 | Type::BOOLEAN, ConvertedType::NONE)); |
| 37 | |
| 38 | // Create a primitive node named 'int32_field' with type:INT32, repetition:REQUIRED, |
| 39 | // logical type:TIME_MILLIS |
| 40 | fields.push_back(PrimitiveNode::Make("int32_field", Repetition::REQUIRED, Type::INT32, |
| 41 | ConvertedType::TIME_MILLIS)); |
| 42 | |
| 43 | // Create a primitive node named 'int64_field' with type:INT64, repetition:REPEATED |
| 44 | fields.push_back(PrimitiveNode::Make("int64_field", Repetition::REPEATED, Type::INT64, |
| 45 | ConvertedType::NONE)); |
| 46 | |
| 47 | fields.push_back(PrimitiveNode::Make("int96_field", Repetition::REQUIRED, Type::INT96, |
| 48 | ConvertedType::NONE)); |
| 49 | |
| 50 | fields.push_back(PrimitiveNode::Make("float_field", Repetition::REQUIRED, Type::FLOAT, |
| 51 | ConvertedType::NONE)); |
| 52 | |
| 53 | fields.push_back(PrimitiveNode::Make("double_field", Repetition::REQUIRED, Type::DOUBLE, |
| 54 | ConvertedType::NONE)); |
| 55 | |
| 56 | // Create a primitive node named 'ba_field' with type:BYTE_ARRAY, repetition:OPTIONAL |
| 57 | fields.push_back(PrimitiveNode::Make("ba_field", Repetition::OPTIONAL, Type::BYTE_ARRAY, |
| 58 | ConvertedType::NONE)); |
| 59 | |
| 60 | // Create a primitive node named 'flba_field' with type:FIXED_LEN_BYTE_ARRAY, |
| 61 | // repetition:REQUIRED, field_length = FIXED_LENGTH |
| 62 | fields.push_back(PrimitiveNode::Make("flba_field", Repetition::REQUIRED, |
| 63 | Type::FIXED_LEN_BYTE_ARRAY, ConvertedType::NONE, |
| 64 | FIXED_LENGTH)); |
| 65 | |
| 66 | // Create a GroupNode named 'schema' using the primitive nodes defined above |
| 67 | // This GroupNode is the root node of the schema tree |
| 68 | return std::static_pointer_cast<GroupNode>( |
| 69 | GroupNode::Make("schema", Repetition::REQUIRED, fields)); |
| 70 | } |