-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ARROW-6244: [C++][Dataset] Add partition key to DataSource interface #5221
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you dissect so we don't merge other stuff:
- Remove the RecordBatchProjector stuff
- Remove the fuse of ScanOptions/ScanContext
f4a8546
to
2fb8f96
Compare
Created https://issues.apache.org/jira/browse/ARROW-6398 for consolidating ScanContext and ScanOptions |
2fb8f96
to
77edc15
Compare
440e0d3
to
3e913c1
Compare
f1fb4de
to
771ad42
Compare
@bkietz still a C++ error link error (MSCV). |
This PR needs to be rebased. |
9f8f404
to
8a3cc22
Compare
rebased |
Can you enable Appveyor at https://ci.appveyor.com/project/bkietz/arrow? |
Unfortunately my appveyor username is not "bkietz" https://ci.appveyor.com/project/BenjaminKietzman/arrow/builds/27316846 |
c92ae06
to
c6d9367
Compare
This change gives me a working local build. Let's see what happens in Appveyor |
Weird this issue is present with Visual Studio 2017 but not 2015 |
Well, this is awful. Having many DLLs and needing to share symbols across them is a big problem on Windows. I think we need to change the way we are building the library to produce a single "kitchen sink" shared library which is similar to the way that other large C++ projects do things. That shared library would also need to include the symbols current in parquet.dll, and probably also arrow_python.dll In the meantime, I think a workaround for this mess is to make sure that all |
cc @kou for ideas also, since this nightmarish situation also will affect our packaging |
That did it. @wesm @fsaintjacques what do you think? |
I don't test but can we use diff --git a/cpp/src/arrow/util/iterator.h b/cpp/src/arrow/util/iterator.h
index 328b8e946..8cd70f09a 100644
--- a/cpp/src/arrow/util/iterator.h
+++ b/cpp/src/arrow/util/iterator.h
@@ -32,7 +32,11 @@ namespace arrow {
template <typename T>
class Iterator {
public:
- virtual ~Iterator() = default;
+ // We can't use "= default" here to avoid using not inlined
+ // implementation with MSVC. If not inlined implementation is used,
+ // we need to export the not inlined implementation. It requires
+ // common DLL that provides the not inlined implementation.
+ virtual ~Iterator() {};
/// \brief Return the next element of the sequence, nullptr when the
/// iteration is completed |
@kou we tried that and a few other variations to no avail, unfortunately |
cpp/src/arrow/util/iterator.h
Outdated
template <typename HasNext> | ||
explicit Iterator(HasNext&& has_next) | ||
: Iterator(new Impl<HasNext>(std::forward<HasNext>(has_next)), | ||
"direct impl construction") {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pitrou here is the commit which changes Iterator from an abstract base to a type erased handle. I'll also extract to a separate pull request
Oh, I see. |
ac887bc
to
42e2ad3
Compare
Travis failure is unrelated, sphinx segfault. |
The condition is an expression guaranteed to evaluate true for all records in a DataSource. This provides some predicate push down funcitonality: DataSources whose condition precludes a filter expression will not yield any fragments (since those fragments would be filtered out anyway).
This patch does not implement evaluation of filter expressions against an in memory RecordBatch. It makes a half hearted attempt at API compatibility with #5157 which does implement this.