[
https://issues.apache.org/jira/browse/ORC-178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16067806#comment-16067806
]
ASF GitHub Bot commented on ORC-178:
------------------------------------
Github user xndai commented on a diff in the pull request:
https://github.com/apache/orc/pull/128#discussion_r124718336
--- Diff: c++/include/orc/Writer.hh ---
@@ -0,0 +1,294 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ORC_WRITER_HH
+#define ORC_WRITER_HH
+
+#include "orc/Common.hh"
+#include "orc/orc-config.hh"
+#include "orc/Type.hh"
+#include "orc/Vector.hh"
+
+#include <memory>
+#include <string>
+#include <vector>
+
+namespace orc {
+
+ // classes that hold data members so we can maintain binary compatibility
+ struct WriterOptionsPrivate;
+
+ enum EncodingStrategy {
+ EncodingStrategy_SPEED = 0,
+ EncodingStrategy_COMPRESSION
+ };
+
+ enum CompressionStrategy {
+ CompressionStrategy_SPEED = 0,
+ CompressionStrategy_COMPRESSION
+ };
+
+ enum RleVersion {
+ RleVersion_1,
+ RleVersion_2
+ };
+
+ class Timezone;
+
+ /**
+ * Options for creating a Writer.
+ */
+ class WriterOptions {
+ private:
+ ORC_UNIQUE_PTR<WriterOptionsPrivate> privateBits;
+
+ public:
+ WriterOptions();
+ WriterOptions(const WriterOptions&);
+ WriterOptions(WriterOptions&);
+ WriterOptions& operator=(const WriterOptions&);
+ virtual ~WriterOptions();
+
+ /**
+ * Set the strip size.
+ */
+ WriterOptions& setStripeSize(uint64_t size);
+
+ /**
+ * Get the strip size.
+ * @return if not set, return default value.
+ */
+ uint64_t getStripeSize() const;
+
+ /**
+ * Set the block size.
+ */
+ WriterOptions& setBlockSize(uint64_t size);
+
+ /**
+ * Get the block size.
+ * @return if not set, return default value.
+ */
+ uint64_t getBlockSize() const;
+
+ /**
+ * Set row index stride.
+ */
+ WriterOptions& setRowIndexStride(uint64_t stride);
+
+ /**
+ * Get the index stride size.
+ * @return if not set, return default value.
+ */
+ uint64_t getRowIndexStride() const;
+
+ /**
+ * Set the buffer size.
+ */
+ WriterOptions& setBufferSize(uint64_t size);
+
+ /**
+ * Get the buffer size.
+ * @return if not set, return default value.
+ */
+ uint64_t getBufferSize() const;
+
+ /**
+ * Set the dictionary key size threshold.
+ * 0 to disable dictionary encoding.
+ * 1 to always enable dictionary encoding.
+ */
+ WriterOptions& setDictionaryKeySizeThreshold(double val);
+
+ /**
+ * Get the dictionary key size threshold.
+ */
+ double getDictionaryKeySizeThreshold() const;
+
+ /**
+ * Set whether or not to have block padding.
+ */
+ WriterOptions& setBlockPadding(bool padding);
--- End diff --
Sure. Will do.
> Implement Basic C++ Writer and Writer Option
> --------------------------------------------
>
> Key: ORC-178
> URL: https://issues.apache.org/jira/browse/ORC-178
> Project: ORC
> Issue Type: Sub-task
> Components: C++
> Reporter: Gang Wu
> Assignee: Xiening Dai
>
> 1. write orc file header, file footer, postscript, etc.
> 2. write columns of all types
> 3. write column statistics
> 4. write index stream in writer and reader seeks to row based on index
> information
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)