From c1dfb18e7c30c2e634540a951c02072ea11105d4 Mon Sep 17 00:00:00 2001 From: Kevin Gurney Date: Wed, 8 Apr 2026 13:42:59 -0400 Subject: [PATCH 1/4] Add Feather V1 deprecation warning to `featherwrite.m`. Co-authored-by: Sarah Gilmore --- matlab/src/matlab/featherwrite.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/matlab/src/matlab/featherwrite.m b/matlab/src/matlab/featherwrite.m index 27fa5dfbb389..337ba789620f 100644 --- a/matlab/src/matlab/featherwrite.m +++ b/matlab/src/matlab/featherwrite.m @@ -28,6 +28,9 @@ function featherwrite(filename, t) t table end + warning("arrow:io:feather:v1:FeatherWriteDeprecated", ... + "Writing to Feather V1 files is deprecated. Use arrow.io.ipc.RecordBatchFileWriter to write to Feather V2 (Arrow IPC) files."); + recordBatch = arrow.recordBatch(t); writer = arrow.internal.io.feather.Writer(filename); writer.write(recordBatch); From 1d139dd5aa67d434efa4e81e7c793fa8ecd89a0e Mon Sep 17 00:00:00 2001 From: Kevin Gurney Date: Wed, 8 Apr 2026 13:46:22 -0400 Subject: [PATCH 2/4] Add Feather V1 deprecation warning to `featherread.m`. Co-authored-by: Sarah Gilmore --- matlab/src/matlab/featherread.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/matlab/src/matlab/featherread.m b/matlab/src/matlab/featherread.m index 736fe832888c..b330b8943067 100644 --- a/matlab/src/matlab/featherread.m +++ b/matlab/src/matlab/featherread.m @@ -27,6 +27,10 @@ filename(1, 1) string {mustBeNonmissing, mustBeNonzeroLengthText} end + warning("arrow:io:feather:v1:FeatherReadDeprecated", ... + "Reading from Feather V1 files is deprecated. Use arrow.io.ipc.RecordBatchFileReader to read from Feather V2 (Arrow IPC) files."); + + typesToCast = [arrow.type.ID.UInt8, ... arrow.type.ID.UInt16, ... arrow.type.ID.UInt32, ... From e9c28250ea9346c613faba895744c690729ef93a Mon Sep 17 00:00:00 2001 From: Kevin Gurney Date: Thu, 9 Apr 2026 16:23:58 -0400 Subject: [PATCH 3/4] Suppress Feather V1 warnings in Feather tests. Co-authored-by: Sarah Gilmore --- matlab/test/arrow/io/feather/tRoundTrip.m | 9 +++++++++ matlab/test/tfeather.m | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/matlab/test/arrow/io/feather/tRoundTrip.m b/matlab/test/arrow/io/feather/tRoundTrip.m index 6fa88d155d9e..a1e576a03f58 100644 --- a/matlab/test/arrow/io/feather/tRoundTrip.m +++ b/matlab/test/arrow/io/feather/tRoundTrip.m @@ -16,6 +16,15 @@ % permissions and limitations under the License. classdef tRoundTrip < matlab.unittest.TestCase + methods(TestMethodSetup) + + function suppressFeatherV1Warnings(testCase) + import matlab.unittest.fixtures.SuppressedWarningsFixture + testCase.applyFixture(SuppressedWarningsFixture("arrow:io:feather:v1:FeatherReadDeprecated")); + end + + end + methods(Test) function Basic(testCase) import matlab.unittest.fixtures.TemporaryFolderFixture diff --git a/matlab/test/tfeather.m b/matlab/test/tfeather.m index b24b6b4af1de..fb5fda276d84 100755 --- a/matlab/test/tfeather.m +++ b/matlab/test/tfeather.m @@ -22,6 +22,12 @@ function setupTempWorkingDirectory(testCase) import matlab.unittest.fixtures.WorkingFolderFixture; testCase.applyFixture(WorkingFolderFixture); end + + function suppressFeatherV1Warnings(testCase) + import matlab.unittest.fixtures.SuppressedWarningsFixture + testCase.applyFixture(SuppressedWarningsFixture("arrow:io:feather:v1:FeatherReadDeprecated")); + testCase.applyFixture(SuppressedWarningsFixture("arrow:io:feather:v1:FeatherWriteDeprecated")); + end end From d0a9e8833e2587a18515999dae776f37de711fd6 Mon Sep 17 00:00:00 2001 From: Kevin Gurney Date: Fri, 10 Apr 2026 16:44:08 -0400 Subject: [PATCH 4/4] Add test cases to verify Feather V1 deprecation warnings. Co-authored-by: Sarah Gilmore --- matlab/test/tfeather.m | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/matlab/test/tfeather.m b/matlab/test/tfeather.m index fb5fda276d84..5d3b9c6f6396 100755 --- a/matlab/test/tfeather.m +++ b/matlab/test/tfeather.m @@ -273,6 +273,29 @@ function UnicodeVariableNames(testCase) testCase.verifyEqual(actualTable, expectedTable); end + function VerifyFeatherReadDeprecationWarning(testCase) + filename = fullfile(pwd, 'temp.feather'); + + t = array2table([1, 2, 3]); + featherwrite(filename, t); + + warning("on", "arrow:io:feather:v1:FeatherReadDeprecated"); + fcn = @() featherread(filename); + testCase.verifyWarning(fcn, "arrow:io:feather:v1:FeatherReadDeprecated") + warning("off", "arrow:io:feather:v1:FeatherReadDeprecated"); + end + + function VerifyFeatherWriteDeprecationWarning(testCase) + filename = fullfile(pwd, 'temp.feather'); + + t = array2table([1, 2, 3]); + + warning("on", "arrow:io:feather:v1:FeatherWriteDeprecated"); + fcn = @() featherwrite(filename, t); + testCase.verifyWarning(fcn, "arrow:io:feather:v1:FeatherWriteDeprecated") + warning("off", "arrow:io:feather:v1:FeatherReadDeprecated"); + end + end end