jecsand838 commented on code in PR #8349:
URL: https://github.com/apache/arrow-rs/pull/8349#discussion_r2369123523


##########
arrow-avro/src/reader/record.rs:
##########
@@ -1193,88 +900,9 @@ impl Decoder {
                 let nanos = (millis as i64) * 1_000_000;
                 builder.append_value(IntervalMonthDayNano::new(months as i32, 
days as i32, nanos));
             }
-            Self::Union(fields, type_ids, offsets, encodings, encoding_counts, 
None) => {
-                let branch = buf.get_long()?;
-                if branch < 0 {
-                    return Err(ArrowError::ParseError(format!(
-                        "Negative union branch index {branch}"
-                    )));
-                }
-                let idx = branch as usize;
-                if idx >= encodings.len() {
-                    return Err(ArrowError::ParseError(format!(
-                        "Union branch index {idx} out of range ({} branches)",
-                        encodings.len()
-                    )));
-                }
-                let type_id = fields
-                    .iter()
-                    .nth(idx)
-                    .map(|(type_id, _)| type_id)
-                    .unwrap_or_else(|| i8::try_from(idx).unwrap_or(0));
-                type_ids.push(type_id);
-                offsets.push(encoding_counts[idx]);
-                encodings[idx].decode(buf)?;
-                encoding_counts[idx] += 1;
-            }
-            Self::Union(
-                _,
-                type_ids,
-                offsets,
-                encodings,
-                encoding_counts,
-                Some(union_resolution),
-            ) => match &mut union_resolution.kind {
-                UnionResolvedKind::Both {
-                    reader_type_codes, ..
-                } => {
-                    let (idx, action) = get_writer_union_action!(buf, 
union_resolution);
-                    match action {
-                        BranchDispatch::NoMatch => {
-                            return Err(ArrowError::ParseError(format!(
-                                "Union branch index {idx} not resolvable by 
reader schema"
-                            )));
-                        }
-                        BranchDispatch::ToReader {
-                            reader_idx,
-                            promotion,
-                        } => {
-                            let type_id = reader_type_codes[reader_idx];
-                            type_ids.push(type_id);
-                            offsets.push(encoding_counts[reader_idx]);
-                            encodings[reader_idx].decode_with_promotion(buf, 
promotion)?;
-                            encoding_counts[reader_idx] += 1;
-                        }
-                    }
-                }
-                UnionResolvedKind::ToSingle { target } => {
-                    let (idx, action) = get_writer_union_action!(buf, 
union_resolution);
-                    match action {
-                        BranchDispatch::NoMatch => {
-                            return Err(ArrowError::ParseError(format!(
-                                "Writer union branch {idx} does not resolve to 
reader type"
-                            )));
-                        }
-                        BranchDispatch::ToReader { promotion, .. } => {
-                            target.decode_with_promotion(buf, promotion)?;
-                        }
-                    }
-                }
-                UnionResolvedKind::FromSingle {
-                    reader_type_codes,
-                    target_reader_index,
-                    promotion,
-                    ..
-                } => {
-                    let type_id = reader_type_codes[*target_reader_index];
-                    type_ids.push(type_id);
-                    offsets.push(encoding_counts[*target_reader_index]);
-                    encodings[*target_reader_index].decode_with_promotion(buf, 
*promotion)?;
-                    encoding_counts[*target_reader_index] += 1;
-                }
-            },
+            Self::Union(u) => u.decode(buf)?,
             Self::Nullable(order, nb, encoding) => {
-                let branch = buf.get_long()?;
+                let branch = buf.read_vlq()?;

Review Comment:
   If you mean inside of the `Self::Nullable(order, nb, encoding) => {` 
branches, it ended up being a red herring I came across when debugging last 
week. I had forgotten to change it back.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to