@@ -1032,40 +1032,42 @@ class ArrowArrayBuilder<ArrowType, arrow::enable_if_has_c_type<ArrowType>>
1032
1032
1033
1033
arrow::Status build_not_null (uint64_t iTuple, uint64_t iTupleEnd)
1034
1034
{
1035
- values_.resize (iTupleEnd - iTuple);
1036
- for (; iTuple < iTupleEnd; iTuple++)
1035
+ uint64_t n = iTupleEnd - iTuple;
1036
+ values_.resize (n);
1037
+ for (uint64_t i = 0 ; i < n; ++i)
1037
1038
{
1038
1039
bool isNull;
1039
- auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple],
1040
+ auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple + i ],
1040
1041
SPI_tuptable->tupdesc ,
1041
1042
iAttribute_ + 1 ,
1042
1043
&isNull);
1043
- values_[iTuple ] = convert_value<ArrowType>(datum);
1044
+ values_[i ] = convert_value<ArrowType>(datum);
1044
1045
}
1045
1046
return builder_->AppendValues (values_.data (), values_.size ());
1046
1047
}
1047
1048
1048
1049
arrow::Status build_may_null (uint64_t iTuple, uint64_t iTupleEnd)
1049
1050
{
1050
1051
bool haveNull = false ;
1051
- values_.resize (iTupleEnd - iTuple);
1052
- validBytes_.resize (iTupleEnd - iTuple);
1053
- for (; iTuple < iTupleEnd; iTuple++)
1052
+ uint64_t n = iTupleEnd - iTuple;
1053
+ values_.resize (n);
1054
+ validBytes_.resize (n);
1055
+ for (uint64_t i = 0 ; i < n; ++i)
1054
1056
{
1055
1057
bool isNull;
1056
- auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple],
1058
+ auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple + i ],
1057
1059
SPI_tuptable->tupdesc ,
1058
1060
iAttribute_ + 1 ,
1059
1061
&isNull);
1060
1062
if (isNull)
1061
1063
{
1062
1064
haveNull = true ;
1063
- validBytes_[iTuple ] = 0 ;
1065
+ validBytes_[i ] = 0 ;
1064
1066
}
1065
1067
else
1066
1068
{
1067
- validBytes_[iTuple ] = 1 ;
1068
- values_[iTuple ] = convert_value<ArrowType>(datum);
1069
+ validBytes_[i ] = 1 ;
1070
+ values_[i ] = convert_value<ArrowType>(datum);
1069
1071
}
1070
1072
}
1071
1073
if (haveNull)
@@ -1148,41 +1150,42 @@ class ArrowArrayBuilder<ArrowType, arrow::enable_if_base_binary<ArrowType>>
1148
1150
1149
1151
arrow::Status build_not_null (uint64_t iTuple, uint64_t iTupleEnd)
1150
1152
{
1151
- values_.resize (iTupleEnd - iTuple);
1152
- for (; iTuple < iTupleEnd; iTuple++)
1153
+ uint64_t n = iTupleEnd - iTuple;
1154
+ values_.resize (n);
1155
+ for (uint64_t i = 0 ; i < n; ++i)
1153
1156
{
1154
1157
bool isNull;
1155
- auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple],
1158
+ auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple + i ],
1156
1159
SPI_tuptable->tupdesc ,
1157
1160
iAttribute_ + 1 ,
1158
1161
&isNull);
1159
- values_[iTuple ] = std::string (VARDATA_ANY (datum), VARSIZE_ANY_EXHDR (datum));
1162
+ values_[i ] = std::string (VARDATA_ANY (datum), VARSIZE_ANY_EXHDR (datum));
1160
1163
}
1161
1164
return builder_->AppendValues (values_);
1162
1165
}
1163
1166
1164
1167
arrow::Status build_may_null (uint64_t iTuple, uint64_t iTupleEnd)
1165
1168
{
1166
1169
bool haveNull = false ;
1167
- values_.resize (iTupleEnd - iTuple);
1168
- validBytes_.resize (iTupleEnd - iTuple);
1169
- for (; iTuple < iTupleEnd; iTuple++)
1170
+ uint64_t n = iTupleEnd - iTuple;
1171
+ values_.resize (n);
1172
+ validBytes_.resize (n);
1173
+ for (uint64_t i = 0 ; i < n; ++i)
1170
1174
{
1171
1175
bool isNull;
1172
- auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple],
1176
+ auto datum = SPI_getbinval (SPI_tuptable->vals [iTuple + i ],
1173
1177
SPI_tuptable->tupdesc ,
1174
1178
iAttribute_ + 1 ,
1175
1179
&isNull);
1176
1180
if (isNull)
1177
1181
{
1178
1182
haveNull = true ;
1179
- validBytes_[iTuple ] = 0 ;
1183
+ validBytes_[i ] = 0 ;
1180
1184
}
1181
1185
else
1182
1186
{
1183
- validBytes_[iTuple] = 1 ;
1184
- values_[iTuple] =
1185
- std::string (VARDATA_ANY (datum), VARSIZE_ANY_EXHDR (datum));
1187
+ validBytes_[i] = 1 ;
1188
+ values_[i] = std::string (VARDATA_ANY (datum), VARSIZE_ANY_EXHDR (datum));
1186
1189
}
1187
1190
}
1188
1191
if (haveNull)
0 commit comments