diff --git a/matlab/src/matlab/featherwrite.m b/matlab/src/matlab/featherwrite.m index c59f7f42368..cc3f45e954a 100644 --- a/matlab/src/matlab/featherwrite.m +++ b/matlab/src/matlab/featherwrite.m @@ -23,21 +23,11 @@ function featherwrite(filename, t) % specific language governing permissions and limitations % under the License. -import arrow.util.table2mlarrow; + arguments + filename(1, 1) string {mustBeNonmissing, mustBeNonzeroLengthText} + t table + end -% Validate input arguments. -narginchk(2, 2); -filename = convertStringsToChars(filename); -if ~ischar(filename) - error('MATLAB:arrow:InvalidFilenameDatatype', ... - 'Filename must be a character vector or string scalar.'); -end -if ~istable(t) - error('MATLAB:arrow:InvalidInputTable', 't must be a table.'); -end - -[variables, metadata] = table2mlarrow(t); - -% Write the table to a Feather file. -arrow.cpp.call('featherwrite', filename, variables, metadata); + writer = arrow.internal.io.feather.Writer(filename); + writer.write(t); end diff --git a/matlab/test/tfeather.m b/matlab/test/tfeather.m index a32b78fdcd6..e4c988e1dda 100755 --- a/matlab/test/tfeather.m +++ b/matlab/test/tfeather.m @@ -164,7 +164,7 @@ function ErrorIfInvalidFilenameDatatype(testCase) t = createTable; - testCase.verifyError(@() featherwrite({filename}, t), 'MATLAB:arrow:InvalidFilenameDatatype'); + testCase.verifyError(@() featherwrite({table}, t), 'MATLAB:validation:UnableToConvert'); testCase.verifyError(@() featherread({filename}), 'MATLAB:arrow:InvalidFilenameDatatype'); end @@ -178,7 +178,7 @@ function ErrorIfTooManyInputs(testCase) end function ErrorIfTooFewInputs(testCase) - testCase.verifyError(@() featherwrite(), 'MATLAB:narginchk:notEnoughInputs'); + testCase.verifyError(@() featherwrite(), 'MATLAB:minrhs'); testCase.verifyError(@() featherread(), 'MATLAB:narginchk:notEnoughInputs'); end @@ -193,7 +193,7 @@ function ErrorIfMultiColVarExist(testCase) t = table(age, smoker, height, weight, bloodPressure); - testCase.verifyError(@() featherwrite(filename, t), 'MATLAB:arrow:UnsupportedVariableType'); + testCase.verifyError(@() featherwrite(filename, t), 'arrow:array:InvalidShape'); end function UnsupportedMATLABDatatypes(testCase) @@ -205,7 +205,7 @@ function UnsupportedMATLABDatatypes(testCase) calendarDuration(5, 3, 2)]; actualTable = addvars(actualTable, calendarDurationVariable); - testCase.verifyError(@() featherwrite(filename, actualTable) ,'MATLAB:arrow:UnsupportedVariableType'); + testCase.verifyError(@() featherwrite(filename, actualTable) ,'arrow:array:UnsupportedMATLABType'); end function NumericComplexUnsupported(testCase) @@ -216,8 +216,7 @@ function NumericComplexUnsupported(testCase) actualTable.double(2) = exp(9) + 5i; actualTable.int64(2) = 1.0418e+03; - expectedTable = featherRoundTrip(filename, actualTable); - testCase.verifyNotEqual(actualTable, expectedTable); + testCase.verifyError(@() featherwrite(filename, actualTable) ,'arrow:array:ComplexNumeric'); end end end