You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/01/25 12:55:10 UTC

[08/50] ignite git commit: IGNITE-2223: Reading of decimal value is implemented.

IGNITE-2223: Reading of decimal value is implemented.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/7e32752f
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/7e32752f
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/7e32752f

Branch: refs/heads/ignite-1786
Commit: 7e32752feba55e6c8e88fe915c57ad22c4791e23
Parents: e5a2bfb
Author: isapego <is...@gridgain.com>
Authored: Mon Jan 11 21:29:28 2016 +0300
Committer: isapego <is...@gridgain.com>
Committed: Mon Jan 11 21:29:28 2016 +0300

----------------------------------------------------------------------
 .../odbc-driver/include/ignite/odbc/utility.h   | 10 +++++++++
 .../cpp/odbc/odbc-driver/src/utility.cpp        | 23 ++++++++++++++++++++
 2 files changed, 33 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7e32752f/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
index ddb7e51..dbaefc9 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
+++ b/modules/platforms/cpp/odbc/odbc-driver/include/ignite/odbc/utility.h
@@ -32,6 +32,8 @@
 #include "ignite/impl/binary/binary_reader_impl.h"
 #include "ignite/impl/binary/binary_writer_impl.h"
 
+#include "ignite/odbc/decimal.h"
+
 #ifdef ODBC_DEBUG
 
 extern FILE* log_file;
@@ -148,6 +150,14 @@ namespace ignite
         void WriteString(ignite::impl::binary::BinaryWriterImpl& writer, const std::string& str);
 
         /**
+         * Read decimal value using reader.
+         *
+         * @param reader Reader.
+         * @param decimal Decimal value.
+         */
+        void ReadDecimal(ignite::impl::binary::BinaryReaderImpl& reader, Decimal& decimal);
+
+        /**
          * Convert SQL string buffer to std::string.
          *
          * @param sqlStr SQL string buffer.

http://git-wip-us.apache.org/repos/asf/ignite/blob/7e32752f/modules/platforms/cpp/odbc/odbc-driver/src/utility.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/odbc/odbc-driver/src/utility.cpp b/modules/platforms/cpp/odbc/odbc-driver/src/utility.cpp
index 05347d8..3d30d43 100644
--- a/modules/platforms/cpp/odbc/odbc-driver/src/utility.cpp
+++ b/modules/platforms/cpp/odbc/odbc-driver/src/utility.cpp
@@ -15,6 +15,8 @@
  * limitations under the License.
  */
 
+#include <cassert>
+
 #include "ignite/odbc/utility.h"
 #include "ignite/odbc/system/odbc_constants.h"
 
@@ -59,6 +61,27 @@ namespace ignite
             writer.WriteString(str.data(), static_cast<int32_t>(str.size()));
         }
 
+        void ReadDecimal(ignite::impl::binary::BinaryReaderImpl& reader, Decimal& decimal)
+        {
+            int8_t hdr = reader.ReadInt8();
+
+            assert(hdr == ignite::impl::binary::IGNITE_TYPE_DECIMAL);
+
+            int32_t scale = reader.ReadInt32();
+
+            int32_t len = reader.ReadInt32();
+
+            std::vector<int8_t> mag;
+
+            mag.resize(len);
+
+            reader.ReadInt8Array(mag.data(), mag.size());
+
+            Decimal res(scale, mag.data(), mag.size());
+
+            swap(decimal, res);
+        }
+
         std::string SqlStringToString(const unsigned char* sqlStr, int32_t sqlStrLen)
         {
             std::string res;