Skip to content

Commit 82821e5

Browse files
authored
arrow-ipc: Remove all abilities to preserve dict IDs (#7940)
# Which issue does this PR close? Does not yet close, but contributes towards: - #6356 - #5981 - #1206 # Rationale for this change See the above issues. And this is a follow up to * #6711 * #6873 This was also split out from: #7929 # What changes are included in this PR? This removes the API to allow preserving `dict_id` set in the `Schema`'s `Field` within arrow-ipc and arrow-flight. This is in an effort to remove the `dict_id` field entirely and make it an IPC/flight-only concern. # Are these changes tested? Yes, all existing tests continue to pass. # Are there any user-facing changes? Yes, these previously (in 54.0.0) deprecated functions/fields are removed: * `arrow_ipc::DictionaryTracker.set_dict_id` * `arrow_ipc::DictionaryTracker::new_with_preserve_dict_id` * `arrow_ipc::IpcWriteOptions.with_preserve_dict_id` * `arrow_ipc::IpcWriteOptions.preserve_dict_id` (function and field) * `arrow_ipc::schema_to_fb` * `arrow_ipc::schema_to_bytes`
1 parent 99eb1bc commit 82821e5

File tree

10 files changed

+55
-221
lines changed

10 files changed

+55
-221
lines changed

arrow-flight/src/encode.rs

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -535,15 +535,13 @@ fn prepare_field_for_flight(
535535
)
536536
.with_metadata(field.metadata().clone())
537537
} else {
538-
#[allow(deprecated)]
539-
let dict_id = dictionary_tracker.set_dict_id(field.as_ref());
540-
538+
dictionary_tracker.next_dict_id();
541539
#[allow(deprecated)]
542540
Field::new_dict(
543541
field.name(),
544542
field.data_type().clone(),
545543
field.is_nullable(),
546-
dict_id,
544+
0,
547545
field.dict_is_ordered().unwrap_or_default(),
548546
)
549547
.with_metadata(field.metadata().clone())
@@ -585,14 +583,13 @@ fn prepare_schema_for_flight(
585583
)
586584
.with_metadata(field.metadata().clone())
587585
} else {
588-
#[allow(deprecated)]
589-
let dict_id = dictionary_tracker.set_dict_id(field.as_ref());
586+
dictionary_tracker.next_dict_id();
590587
#[allow(deprecated)]
591588
Field::new_dict(
592589
field.name(),
593590
field.data_type().clone(),
594591
field.is_nullable(),
595-
dict_id,
592+
0,
596593
field.dict_is_ordered().unwrap_or_default(),
597594
)
598595
.with_metadata(field.metadata().clone())
@@ -654,16 +651,10 @@ struct FlightIpcEncoder {
654651

655652
impl FlightIpcEncoder {
656653
fn new(options: IpcWriteOptions, error_on_replacement: bool) -> Self {
657-
#[allow(deprecated)]
658-
let preserve_dict_id = options.preserve_dict_id();
659654
Self {
660655
options,
661656
data_gen: IpcDataGenerator::default(),
662-
#[allow(deprecated)]
663-
dictionary_tracker: DictionaryTracker::new_with_preserve_dict_id(
664-
error_on_replacement,
665-
preserve_dict_id,
666-
),
657+
dictionary_tracker: DictionaryTracker::new(error_on_replacement),
667658
}
668659
}
669660

@@ -1547,9 +1538,8 @@ mod tests {
15471538
async fn verify_flight_round_trip(mut batches: Vec<RecordBatch>) {
15481539
let expected_schema = batches.first().unwrap().schema();
15491540

1550-
#[allow(deprecated)]
15511541
let encoder = FlightDataEncoderBuilder::default()
1552-
.with_options(IpcWriteOptions::default().with_preserve_dict_id(false))
1542+
.with_options(IpcWriteOptions::default())
15531543
.with_dictionary_handling(DictionaryHandling::Resend)
15541544
.build(futures::stream::iter(batches.clone().into_iter().map(Ok)));
15551545

@@ -1575,8 +1565,7 @@ mod tests {
15751565
HashMap::from([("some_key".to_owned(), "some_value".to_owned())]),
15761566
);
15771567

1578-
#[allow(deprecated)]
1579-
let mut dictionary_tracker = DictionaryTracker::new_with_preserve_dict_id(false, true);
1568+
let mut dictionary_tracker = DictionaryTracker::new(false);
15801569

15811570
let got = prepare_schema_for_flight(&schema, &mut dictionary_tracker, false);
15821571
assert!(got.metadata().contains_key("some_key"));
@@ -1606,9 +1595,7 @@ mod tests {
16061595
options: &IpcWriteOptions,
16071596
) -> (Vec<FlightData>, FlightData) {
16081597
let data_gen = IpcDataGenerator::default();
1609-
#[allow(deprecated)]
1610-
let mut dictionary_tracker =
1611-
DictionaryTracker::new_with_preserve_dict_id(false, options.preserve_dict_id());
1598+
let mut dictionary_tracker = DictionaryTracker::new(false);
16121599

16131600
let (encoded_dictionaries, encoded_batch) = data_gen
16141601
.encoded_batch(batch, &mut dictionary_tracker, options)

arrow-flight/src/lib.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,7 @@ pub struct IpcMessage(pub Bytes);
149149

150150
fn flight_schema_as_encoded_data(arrow_schema: &Schema, options: &IpcWriteOptions) -> EncodedData {
151151
let data_gen = writer::IpcDataGenerator::default();
152-
#[allow(deprecated)]
153-
let mut dict_tracker =
154-
writer::DictionaryTracker::new_with_preserve_dict_id(false, options.preserve_dict_id());
152+
let mut dict_tracker = writer::DictionaryTracker::new(false);
155153
data_gen.schema_to_bytes_with_dictionary_tracker(arrow_schema, &mut dict_tracker, options)
156154
}
157155

arrow-flight/src/utils.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,7 @@ pub fn batches_to_flight_data(
9090
let mut flight_data = vec![];
9191

9292
let data_gen = writer::IpcDataGenerator::default();
93-
#[allow(deprecated)]
94-
let mut dictionary_tracker =
95-
writer::DictionaryTracker::new_with_preserve_dict_id(false, options.preserve_dict_id());
93+
let mut dictionary_tracker = writer::DictionaryTracker::new(false);
9694

9795
for batch in batches.iter() {
9896
let (encoded_dictionaries, encoded_batch) =

arrow-integration-testing/src/flight_client_scenarios/integration_test.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ async fn upload_data(
7272
let (mut upload_tx, upload_rx) = mpsc::channel(10);
7373

7474
let options = arrow::ipc::writer::IpcWriteOptions::default();
75-
#[allow(deprecated)]
76-
let mut dict_tracker =
77-
writer::DictionaryTracker::new_with_preserve_dict_id(false, options.preserve_dict_id());
75+
let mut dict_tracker = writer::DictionaryTracker::new(false);
7876
let data_gen = writer::IpcDataGenerator::default();
7977
let data = IpcMessage(
8078
data_gen

arrow-integration-testing/src/flight_server_scenarios/integration_test.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,7 @@ impl FlightService for FlightServiceImpl {
119119
.ok_or_else(|| Status::not_found(format!("Could not find flight. {key}")))?;
120120

121121
let options = arrow::ipc::writer::IpcWriteOptions::default();
122-
#[allow(deprecated)]
123-
let mut dictionary_tracker =
124-
writer::DictionaryTracker::new_with_preserve_dict_id(false, options.preserve_dict_id());
122+
let mut dictionary_tracker = writer::DictionaryTracker::new(false);
125123
let data_gen = writer::IpcDataGenerator::default();
126124
let data = IpcMessage(
127125
data_gen

arrow-ipc/src/convert.rs

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
2020
use arrow_buffer::Buffer;
2121
use arrow_schema::*;
22+
use core::panic;
2223
use flatbuffers::{
2324
FlatBufferBuilder, ForwardsUOffset, UnionWIPOffset, Vector, Verifiable, Verifier,
2425
VerifierOptions, WIPOffset,
@@ -127,12 +128,6 @@ impl<'a> IpcSchemaEncoder<'a> {
127128
}
128129
}
129130

130-
/// Serialize a schema in IPC format
131-
#[deprecated(since = "54.0.0", note = "Use `IpcSchemaConverter`.")]
132-
pub fn schema_to_fb(schema: &Schema) -> FlatBufferBuilder<'_> {
133-
IpcSchemaEncoder::new().schema_to_fb(schema)
134-
}
135-
136131
/// Push a key-value metadata into a FlatBufferBuilder and return [WIPOffset]
137132
pub fn metadata_to_fb<'a>(
138133
fbb: &mut FlatBufferBuilder<'a>,
@@ -530,24 +525,13 @@ pub(crate) fn build_field<'a>(
530525
match dictionary_tracker {
531526
Some(tracker) => Some(get_fb_dictionary(
532527
index_type,
533-
#[allow(deprecated)]
534-
tracker.set_dict_id(field),
535-
field
536-
.dict_is_ordered()
537-
.expect("All Dictionary types have `dict_is_ordered`"),
538-
fbb,
539-
)),
540-
None => Some(get_fb_dictionary(
541-
index_type,
542-
#[allow(deprecated)]
543-
field
544-
.dict_id()
545-
.expect("Dictionary type must have a dictionary id"),
528+
tracker.next_dict_id(),
546529
field
547530
.dict_is_ordered()
548531
.expect("All Dictionary types have `dict_is_ordered`"),
549532
fbb,
550533
)),
534+
None => panic!("IPC must no longer be used without dictionary tracker"),
551535
}
552536
} else {
553537
None

arrow-ipc/src/reader.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2007,8 +2007,7 @@ mod tests {
20072007
let mut writer = crate::writer::FileWriter::try_new_with_options(
20082008
&mut buf,
20092009
batch.schema_ref(),
2010-
#[allow(deprecated)]
2011-
IpcWriteOptions::default().with_preserve_dict_id(false),
2010+
IpcWriteOptions::default(),
20122011
)
20132012
.unwrap();
20142013
writer.write(&batch).unwrap();
@@ -2440,8 +2439,7 @@ mod tests {
24402439
.unwrap();
24412440

24422441
let gen = IpcDataGenerator {};
2443-
#[allow(deprecated)]
2444-
let mut dict_tracker = DictionaryTracker::new_with_preserve_dict_id(false, true);
2442+
let mut dict_tracker = DictionaryTracker::new(false);
24452443
let (_, encoded) = gen
24462444
.encoded_batch(&batch, &mut dict_tracker, &Default::default())
24472445
.unwrap();
@@ -2479,8 +2477,7 @@ mod tests {
24792477
.unwrap();
24802478

24812479
let gen = IpcDataGenerator {};
2482-
#[allow(deprecated)]
2483-
let mut dict_tracker = DictionaryTracker::new_with_preserve_dict_id(false, true);
2480+
let mut dict_tracker = DictionaryTracker::new(false);
24842481
let (_, encoded) = gen
24852482
.encoded_batch(&batch, &mut dict_tracker, &Default::default())
24862483
.unwrap();
@@ -2691,8 +2688,7 @@ mod tests {
26912688
let mut writer = crate::writer::StreamWriter::try_new_with_options(
26922689
&mut buf,
26932690
batch.schema().as_ref(),
2694-
#[allow(deprecated)]
2695-
crate::writer::IpcWriteOptions::default().with_preserve_dict_id(false),
2691+
crate::writer::IpcWriteOptions::default(),
26962692
)
26972693
.expect("Failed to create StreamWriter");
26982694
writer.write(&batch).expect("Failed to write RecordBatch");

arrow-ipc/src/reader/stream.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,7 @@ mod tests {
395395
let mut writer = StreamWriter::try_new_with_options(
396396
&mut buffer,
397397
&schema,
398-
#[allow(deprecated)]
399-
IpcWriteOptions::default().with_preserve_dict_id(false),
398+
IpcWriteOptions::default(),
400399
)
401400
.expect("Failed to create StreamWriter");
402401
writer.write(&batch).expect("Failed to write RecordBatch");

0 commit comments

Comments
 (0)