@@ -46,7 +46,7 @@ namespace dataset {
4646
4747// / \brief The path and filesystem where an actual file is located or a buffer which can
4848// / be read like a file
49- class ARROW_DS_EXPORT FileSource {
49+ class ARROW_DS_EXPORT FileSource : public util::EqualityComparable<FileSource> {
5050 public:
5151 FileSource (std::string path, std::shared_ptr<fs::FileSystem> filesystem,
5252 Compression::type compression = Compression::UNCOMPRESSED )
@@ -114,6 +114,9 @@ class ARROW_DS_EXPORT FileSource {
114114 Result<std::shared_ptr<io::InputStream>> OpenCompressed (
115115 util::optional<Compression::type> compression = util::nullopt ) const ;
116116
117+ // / \brief equality comparison with another FileSource
118+ bool Equals (const FileSource& other) const ;
119+
117120 private:
118121 static Result<std::shared_ptr<io::RandomAccessFile>> InvalidOpen () {
119122 return Status::Invalid (" Called Open() on an uninitialized FileSource" );
@@ -179,7 +182,8 @@ class ARROW_DS_EXPORT FileFormat : public std::enable_shared_from_this<FileForma
179182};
180183
181184// / \brief A Fragment that is stored in a file with a known format
182- class ARROW_DS_EXPORT FileFragment : public Fragment {
185+ class ARROW_DS_EXPORT FileFragment : public Fragment,
186+ public util::EqualityComparable<FileFragment> {
183187 public:
184188 Result<RecordBatchGenerator> ScanBatchesAsync (
185189 const std::shared_ptr<ScanOptions>& options) override ;
@@ -193,6 +197,8 @@ class ARROW_DS_EXPORT FileFragment : public Fragment {
193197 const FileSource& source () const { return source_; }
194198 const std::shared_ptr<FileFormat>& format () const { return format_; }
195199
200+ bool Equals (const FileFragment& other) const ;
201+
196202 protected:
197203 FileFragment (FileSource source, std::shared_ptr<FileFormat> format,
198204 compute::Expression partition_expression,
0 commit comments