taiyang-li commented on code in PR #2048:
URL: https://github.com/apache/orc/pull/2048#discussion_r1815888206


##########
c++/include/orc/Reader.hh:
##########
@@ -605,6 +612,26 @@ namespace orc {
      */
     virtual std::map<uint32_t, BloomFilterIndex> getBloomFilters(
         uint32_t stripeIndex, const std::set<uint32_t>& included) const = 0;
+
+    /**
+     * Get the input stream for the ORC file.
+     */
+    virtual InputStream* getStream() const = 0;
+
+    /**
+     * Get the footer of the ORC file.
+     */
+    virtual const proto::Footer* getFooter() const = 0;
+
+    /**
+     * Get the schema of the ORC file.
+     */
+    virtual const proto::Metadata* getMetadata() const = 0;
+
+    virtual void preBuffer(const std::vector<int>& stripes, const 
std::list<uint64_t>& includeTypes,

Review Comment:
   I think the `preBuffer` doesn't bother users because it is an optional 
operation. If users doesn't need to hide io, they can ignore it and the 
behavior is totally the same with previous versions. If users require higher 
performance and have the knowledge about which stripes and columns to read, 
they could prefetch the next stripe using `preBuffer` while processing current 
stripe. In conclusion, I think invoking `preBuffer` manually is necessary 
cognitive load for users to gain higher performance.
   
   Pls refer to my performance comparison in:  
https://github.com/ClickHouse/ClickHouse/pull/70534#issuecomment-2403754651 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to