Skip to content

Commit 31374f8

Browse files
committed
ci: enable sanitizer
1 parent 3cf5963 commit 31374f8

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

.github/workflows/sanitizer_test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ jobs:
5050
- name: Run Tests
5151
working-directory: build
5252
env:
53-
ASAN_OPTIONS: log_path=out.log:detect_leaks=1:symbolize=1:strict_string_checks=1:halt_on_error=0:detect_container_overflow=0
53+
ASAN_OPTIONS: log_path=out.log:detect_leaks=1:symbolize=1:strict_string_checks=1:halt_on_error=1:detect_container_overflow=0
5454
LSAN_OPTIONS: suppressions=${{ github.workspace }}/.github/lsan-suppressions.txt
55-
UBSAN_OPTIONS: log_path=out.log:halt_on_error=0:print_stacktrace=1:suppressions=${{ github.workspace }}/.github/ubsan-suppressions.txt
55+
UBSAN_OPTIONS: log_path=out.log:halt_on_error=1:print_stacktrace=1:suppressions=${{ github.workspace }}/.github/ubsan-suppressions.txt
5656
run: |
5757
ctest --output-on-failure
5858
- name: Save the test output

src/iceberg/schema_internal.cc

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,9 @@ ArrowErrorCode ToArrowSchema(const Type& type, bool optional, std::string_view n
5050

5151
switch (type.type_id()) {
5252
case TypeId::kStruct: {
53-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_STRUCT));
54-
5553
const auto& struct_type = static_cast<const StructType&>(type);
5654
const auto& fields = struct_type.fields();
57-
NANOARROW_RETURN_NOT_OK(ArrowSchemaAllocateChildren(schema, fields.size()));
55+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeStruct(schema, fields.size()));
5856

5957
for (size_t i = 0; i < fields.size(); i++) {
6058
const auto& field = fields[i];
@@ -64,7 +62,7 @@ ArrowErrorCode ToArrowSchema(const Type& type, bool optional, std::string_view n
6462
}
6563
} break;
6664
case TypeId::kList: {
67-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_LIST));
65+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_LIST));
6866

6967
const auto& list_type = static_cast<const ListType&>(type);
7068
const auto& elem_field = list_type.fields()[0];
@@ -73,7 +71,7 @@ ArrowErrorCode ToArrowSchema(const Type& type, bool optional, std::string_view n
7371
schema->children[0]));
7472
} break;
7573
case TypeId::kMap: {
76-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_MAP));
74+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_MAP));
7775

7876
const auto& map_type = static_cast<const MapType&>(type);
7977
const auto& key_field = map_type.key();
@@ -86,61 +84,55 @@ ArrowErrorCode ToArrowSchema(const Type& type, bool optional, std::string_view n
8684
schema->children[0]->children[1]));
8785
} break;
8886
case TypeId::kBoolean:
89-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_BOOL));
87+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_BOOL));
9088
break;
9189
case TypeId::kInt:
92-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_INT32));
90+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_INT32));
9391
break;
9492
case TypeId::kLong:
95-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_INT64));
93+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_INT64));
9694
break;
9795
case TypeId::kFloat:
98-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_FLOAT));
96+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_FLOAT));
9997
break;
10098
case TypeId::kDouble:
101-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_DOUBLE));
99+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_DOUBLE));
102100
break;
103101
case TypeId::kDecimal: {
104-
ArrowSchemaInit(schema);
105102
const auto& decimal_type = static_cast<const DecimalType&>(type);
106103
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeDecimal(schema, NANOARROW_TYPE_DECIMAL128,
107104
decimal_type.precision(),
108105
decimal_type.scale()));
109106
} break;
110107
case TypeId::kDate:
111-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_DATE32));
108+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_DATE32));
112109
break;
113110
case TypeId::kTime: {
114-
ArrowSchemaInit(schema);
115111
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIME64,
116112
NANOARROW_TIME_UNIT_MICRO,
117113
/*timezone=*/nullptr));
118114
} break;
119115
case TypeId::kTimestamp: {
120-
ArrowSchemaInit(schema);
121116
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeDateTime(schema, NANOARROW_TYPE_TIMESTAMP,
122117
NANOARROW_TIME_UNIT_MICRO,
123118
/*timezone=*/nullptr));
124119
} break;
125120
case TypeId::kTimestampTz: {
126-
ArrowSchemaInit(schema);
127121
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeDateTime(
128122
schema, NANOARROW_TYPE_TIMESTAMP, NANOARROW_TIME_UNIT_MICRO, "UTC"));
129123
} break;
130124
case TypeId::kString:
131-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_STRING));
125+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_STRING));
132126
break;
133127
case TypeId::kBinary:
134-
NANOARROW_RETURN_NOT_OK(ArrowSchemaInitFromType(schema, NANOARROW_TYPE_BINARY));
128+
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetType(schema, NANOARROW_TYPE_BINARY));
135129
break;
136130
case TypeId::kFixed: {
137-
ArrowSchemaInit(schema);
138131
const auto& fixed_type = static_cast<const FixedType&>(type);
139132
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeFixedSize(
140133
schema, NANOARROW_TYPE_FIXED_SIZE_BINARY, fixed_type.length()));
141134
} break;
142135
case TypeId::kUuid: {
143-
ArrowSchemaInit(schema);
144136
NANOARROW_RETURN_NOT_OK(ArrowSchemaSetTypeFixedSize(
145137
schema, NANOARROW_TYPE_FIXED_SIZE_BINARY, /*fixed_size=*/16));
146138
NANOARROW_RETURN_NOT_OK(
@@ -173,6 +165,8 @@ Status ToArrowSchema(const Schema& schema, ArrowSchema* out) {
173165
return InvalidArgument("Output Arrow schema cannot be null");
174166
}
175167

168+
ArrowSchemaInit(out);
169+
176170
if (ArrowErrorCode errorCode = ToArrowSchema(schema, /*optional=*/false, /*name=*/"",
177171
/*field_id=*/std::nullopt, out);
178172
errorCode != NANOARROW_OK) {

0 commit comments

Comments
 (0)