This is an automated email from the ASF dual-hosted git repository.

ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new b395b21855 IGNITE-19270 Thin 3.0: Streamline type codes (#1969)
b395b21855 is described below

commit b395b21855dd924e8bb2601a09c813bdbb5f62c5
Author: Pavel Tupitsyn <ptupit...@apache.org>
AuthorDate: Fri Apr 21 16:37:12 2023 +0300

    IGNITE-19270 Thin 3.0: Streamline type codes (#1969)
    
    Replace multiple sets of column types and codes used by the client protocol 
(`ColumnType`, `ClientDataType`, `ClientColumnTypeConverter`) with a single one 
- `ColumnType` from the public API.
---
 .../client/proto/ClientBinaryTupleUtils.java       |  79 +++----
 .../client/proto/ClientColumnTypeConverter.java    | 241 ---------------------
 .../internal/client/proto/ClientDataType.java      |  80 -------
 .../internal/client/proto/ColumnTypeConverter.java |  58 +++++
 .../proto/ClientColumnTypeConverterTest.java       |  38 ----
 .../client/proto/ColumnTypeConverterTest.java      |  64 ++++++
 .../requests/sql/ClientSqlExecuteRequest.java      |   3 +-
 .../handler/requests/table/ClientTableCommon.java  |  38 ++--
 .../client/handler/requests/table/ClientTuple.java |   4 +-
 .../internal/client/sql/ClientAsyncResultSet.java  |   3 +-
 .../internal/client/sql/ClientColumnMetadata.java  |   4 +-
 .../ignite/internal/client/table/ClientColumn.java |  21 +-
 .../ignite/internal/client/table/ClientSchema.java |  27 +--
 .../ignite/internal/client/table/ClientTable.java  |   3 +-
 .../ignite/internal/client/table/ClientTuple.java  |   3 +-
 .../client/table/ClientTupleSerializer.java        |  37 ++--
 .../org/apache/ignite/client/ClientTupleTest.java  |  46 ++--
 .../cpp/ignite/client/detail/client_data_type.h    | 190 ----------------
 .../ignite/client/detail/compute/compute_impl.cpp  |   3 +-
 .../cpp/ignite/client/detail/table/schema.h        |   4 +-
 .../platforms/cpp/ignite/client/detail/utils.cpp   |   6 +-
 .../SerializerHandlerBenchmarksBase.cs             |   8 +-
 .../dotnet/Apache.Ignite.Tests/FakeServer.cs       |  18 +-
 .../Linq/ResultSelectorCacheKeyTests.cs            |   6 +-
 .../Proto/BinaryTuple/BinaryTupleTests.cs          |  70 +++---
 .../Proto/ColocationHashTests.cs                   |  40 ++--
 ...nsionsTests.cs => ColumnTypeExtensionsTests.cs} |  26 +--
 .../Sql/IgniteDbDataReaderTests.cs                 |  30 +--
 .../dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs     |   2 +-
 .../Serialization/ObjectSerializerHandlerTests.cs  |   6 +-
 .../platforms/dotnet/Apache.Ignite.sln.DotSettings |   1 +
 .../Apache.Ignite/Internal/Linq/ResultSelector.cs  |   6 +-
 .../Proto/BinaryTuple/BinaryTupleBuilder.cs        |  69 +++---
 .../Proto/BinaryTuple/BinaryTupleReader.cs         |  40 ++--
 .../Apache.Ignite/Internal/Proto/ClientDataType.cs |  79 -------
 .../Internal/Proto/ClientDataTypeExtensions.cs     |  56 -----
 .../Internal/Proto/ClientOpExtensions.cs           |   3 +-
 .../Internal/Proto/MsgPack/MsgPackReader.cs        |   3 +-
 .../Apache.Ignite/Internal/Sql/ColumnMetadata.cs   |   2 +-
 .../Internal/Sql/ColumnTypeExtensions.cs           | 145 +++++++++++++
 .../dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs |   2 +-
 .../dotnet/Apache.Ignite/Internal/Sql/Sql.cs       |  38 ++--
 .../Internal/Sql/SqlColumnTypeExtensions.cs        | 143 ------------
 .../dotnet/Apache.Ignite/Internal/Table/Column.cs  |  31 ++-
 .../Table/Serialization/ObjectSerializerHandler.cs |  23 +-
 .../dotnet/Apache.Ignite/Internal/Table/Table.cs   |   3 +-
 .../Apache.Ignite/Internal/Table/TemporalTypes.cs  |   4 +-
 .../Sql/{SqlColumnType.cs => ColumnType.cs}        |   2 +-
 .../dotnet/Apache.Ignite/Sql/IColumnMetadata.cs    |   2 +-
 .../dotnet/Apache.Ignite/Sql/IgniteDbDataReader.cs |   9 +-
 .../runner/app/PlatformTestNodeRunner.java         |  34 +--
 .../internal/table/ItThinClientColocationTest.java |   2 +-
 52 files changed, 630 insertions(+), 1225 deletions(-)

diff --git 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientBinaryTupleUtils.java
 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientBinaryTupleUtils.java
index 279b1f048d..8232844980 100644
--- 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientBinaryTupleUtils.java
+++ 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientBinaryTupleUtils.java
@@ -17,25 +17,6 @@
 
 package org.apache.ignite.internal.client.proto;
 
-import static org.apache.ignite.internal.client.proto.ClientDataType.BITMASK;
-import static org.apache.ignite.internal.client.proto.ClientDataType.BOOLEAN;
-import static org.apache.ignite.internal.client.proto.ClientDataType.BYTES;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DATE;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DATETIME;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DECIMAL;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DOUBLE;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DURATION;
-import static org.apache.ignite.internal.client.proto.ClientDataType.FLOAT;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT16;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT32;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT64;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT8;
-import static org.apache.ignite.internal.client.proto.ClientDataType.NUMBER;
-import static org.apache.ignite.internal.client.proto.ClientDataType.PERIOD;
-import static org.apache.ignite.internal.client.proto.ClientDataType.STRING;
-import static org.apache.ignite.internal.client.proto.ClientDataType.TIME;
-import static org.apache.ignite.internal.client.proto.ClientDataType.TIMESTAMP;
-import static org.apache.ignite.internal.client.proto.ClientDataType.UUID;
 import static org.apache.ignite.lang.ErrorGroups.Client.PROTOCOL_ERR;
 
 import java.math.BigDecimal;
@@ -54,6 +35,7 @@ import java.util.UUID;
 import org.apache.ignite.internal.binarytuple.BinaryTupleBuilder;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
 import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.ColumnType;
 
 /**
  * Client binary tuple utils.
@@ -72,7 +54,8 @@ public class ClientBinaryTupleUtils {
             return null;
         }
 
-        int type = reader.intValue(index);
+        int typeCode = reader.intValue(index);
+        ColumnType type = ColumnTypeConverter.fromOrdinalOrThrow(typeCode);
         int valIdx = index + 2;
 
         switch (type) {
@@ -103,7 +86,7 @@ public class ClientBinaryTupleUtils {
             case STRING:
                 return reader.stringValue(valIdx);
 
-            case BYTES:
+            case BYTE_ARRAY:
                 return reader.bytesValue(valIdx);
 
             case BITMASK:
@@ -134,7 +117,7 @@ public class ClientBinaryTupleUtils {
                 return reader.periodValue(valIdx);
 
             default:
-                throw unsupportedTypeException(type);
+                throw unsupportedTypeException(typeCode);
         }
     }
 
@@ -150,88 +133,88 @@ public class ClientBinaryTupleUtils {
             builder.appendNull(); // Scale.
             builder.appendNull(); // Value.
         } else if (obj instanceof Byte) {
-            appendTypeAndScale(builder, INT8);
+            appendTypeAndScale(builder, ColumnType.INT8);
             builder.appendByte((Byte) obj);
         } else if (obj instanceof Short) {
-            appendTypeAndScale(builder, INT16);
+            appendTypeAndScale(builder, ColumnType.INT16);
             builder.appendShort((Short) obj);
         } else if (obj instanceof Integer) {
-            appendTypeAndScale(builder, INT32);
+            appendTypeAndScale(builder, ColumnType.INT32);
             builder.appendInt((Integer) obj);
         } else if (obj instanceof Long) {
-            appendTypeAndScale(builder, INT64);
+            appendTypeAndScale(builder, ColumnType.INT64);
             builder.appendLong((Long) obj);
         } else if (obj instanceof Float) {
-            appendTypeAndScale(builder, FLOAT);
+            appendTypeAndScale(builder, ColumnType.FLOAT);
             builder.appendFloat((Float) obj);
         } else if (obj instanceof Double) {
-            appendTypeAndScale(builder, DOUBLE);
+            appendTypeAndScale(builder, ColumnType.DOUBLE);
             builder.appendDouble((Double) obj);
         } else if (obj instanceof BigDecimal) {
             BigDecimal bigDecimal = (BigDecimal) obj;
-            appendTypeAndScale(builder, DECIMAL, bigDecimal.scale());
+            appendTypeAndScale(builder, ColumnType.DECIMAL, 
bigDecimal.scale());
             builder.appendDecimal(bigDecimal, bigDecimal.scale());
         } else if (obj instanceof java.util.UUID) {
-            appendTypeAndScale(builder, UUID);
+            appendTypeAndScale(builder, ColumnType.UUID);
             builder.appendUuid((UUID) obj);
         } else if (obj instanceof String) {
-            appendTypeAndScale(builder, STRING);
+            appendTypeAndScale(builder, ColumnType.STRING);
             builder.appendString((String) obj);
         } else if (obj instanceof byte[]) {
-            appendTypeAndScale(builder, BYTES);
+            appendTypeAndScale(builder, ColumnType.BYTE_ARRAY);
             builder.appendBytes((byte[]) obj);
         } else if (obj instanceof BitSet) {
-            appendTypeAndScale(builder, BITMASK);
+            appendTypeAndScale(builder, ColumnType.BITMASK);
             builder.appendBitmask((BitSet) obj);
         } else if (obj instanceof LocalDate) {
-            appendTypeAndScale(builder, DATE);
+            appendTypeAndScale(builder, ColumnType.DATE);
             builder.appendDate((LocalDate) obj);
         } else if (obj instanceof LocalTime) {
-            appendTypeAndScale(builder, TIME);
+            appendTypeAndScale(builder, ColumnType.TIME);
             builder.appendTime((LocalTime) obj);
         } else if (obj instanceof LocalDateTime) {
-            appendTypeAndScale(builder, DATETIME);
+            appendTypeAndScale(builder, ColumnType.DATETIME);
             builder.appendDateTime((LocalDateTime) obj);
         } else if (obj instanceof Instant) {
-            appendTypeAndScale(builder, TIMESTAMP);
+            appendTypeAndScale(builder, ColumnType.TIMESTAMP);
             builder.appendTimestamp((Instant) obj);
         } else if (obj instanceof Timestamp) {
-            appendTypeAndScale(builder, DATETIME);
+            appendTypeAndScale(builder, ColumnType.DATETIME);
             Timestamp timeStamp = (Timestamp) obj;
             LocalDateTime localDateTime = timeStamp.toLocalDateTime();
             builder.appendDateTime(localDateTime);
         } else if (obj instanceof Date) {
-            appendTypeAndScale(builder, DATE);
+            appendTypeAndScale(builder, ColumnType.DATE);
             Date date = (Date) obj;
             builder.appendDate(date.toLocalDate());
         } else if (obj instanceof Time) {
-            appendTypeAndScale(builder, TIME);
+            appendTypeAndScale(builder, ColumnType.TIME);
             Time time = (Time) obj;
             builder.appendTime(time.toLocalTime());
         } else if (obj instanceof BigInteger) {
-            appendTypeAndScale(builder, NUMBER);
+            appendTypeAndScale(builder, ColumnType.NUMBER);
             builder.appendNumber((BigInteger) obj);
         } else if (obj instanceof Boolean) {
-            appendTypeAndScale(builder, BOOLEAN);
+            appendTypeAndScale(builder, ColumnType.BOOLEAN);
             builder.appendByte((byte) ((Boolean) obj ? 1 : 0));
         } else if (obj instanceof Duration) {
-            appendTypeAndScale(builder, DURATION);
+            appendTypeAndScale(builder, ColumnType.DURATION);
             builder.appendDuration((Duration) obj);
         } else if (obj instanceof Period) {
-            appendTypeAndScale(builder, PERIOD);
+            appendTypeAndScale(builder, ColumnType.PERIOD);
             builder.appendPeriod((Period) obj);
         } else {
             throw unsupportedTypeException(obj.getClass());
         }
     }
 
-    private static void appendTypeAndScale(BinaryTupleBuilder builder, int 
type, int scale) {
-        builder.appendInt(type);
+    private static void appendTypeAndScale(BinaryTupleBuilder builder, 
ColumnType type, int scale) {
+        builder.appendInt(type.ordinal());
         builder.appendInt(scale);
     }
 
-    private static void appendTypeAndScale(BinaryTupleBuilder builder, int 
type) {
-        builder.appendInt(type);
+    private static void appendTypeAndScale(BinaryTupleBuilder builder, 
ColumnType type) {
+        builder.appendInt(type.ordinal());
         builder.appendInt(0);
     }
 
diff --git 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverter.java
 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverter.java
deleted file mode 100644
index de1577a3cc..0000000000
--- 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverter.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ignite.internal.client.proto;
-
-import org.apache.ignite.sql.ColumnType;
-
-/**
- * SQL column type utils.
- */
-public class ClientColumnTypeConverter {
-    /**
-     * Converts SQL column type to wire code.
-     *
-     * @param columnType Column type.
-     * @return Wire code.
-     */
-    public static int sqlColumnTypeToOrdinal(ColumnType columnType) {
-        switch (columnType) {
-            case BOOLEAN:
-                return 0;
-
-            case INT8:
-                return 1;
-
-            case INT16:
-                return 2;
-
-            case INT32:
-                return 3;
-
-            case INT64:
-                return 4;
-
-            case FLOAT:
-                return 5;
-
-            case DOUBLE:
-                return 6;
-
-            case DECIMAL:
-                return 7;
-
-            case DATE:
-                return 8;
-
-            case TIME:
-                return 9;
-
-            case DATETIME:
-                return 10;
-
-            case TIMESTAMP:
-                return 11;
-
-            case UUID:
-                return 12;
-
-            case BITMASK:
-                return 13;
-
-            case STRING:
-                return 14;
-
-            case BYTE_ARRAY:
-                return 15;
-
-            case PERIOD:
-                return 16;
-
-            case DURATION:
-                return 17;
-
-            case NUMBER:
-                return 18;
-
-            case NULL:
-                return 19;
-
-            default:
-                throw new IllegalArgumentException("Invalid column type: " + 
columnType);
-        }
-    }
-
-    /**
-     * Converts wire SQL type code to column type.
-     *
-     * @param ordinal Type code.
-     * @return Column type.
-     */
-    public static ColumnType ordinalToSqlColumnType(int ordinal) {
-        switch (ordinal) {
-            case 0:
-                return ColumnType.BOOLEAN;
-
-            case 1:
-                return ColumnType.INT8;
-
-            case 2:
-                return ColumnType.INT16;
-
-            case 3:
-                return ColumnType.INT32;
-
-            case 4:
-                return ColumnType.INT64;
-
-            case 5:
-                return ColumnType.FLOAT;
-
-            case 6:
-                return ColumnType.DOUBLE;
-
-            case 7:
-                return ColumnType.DECIMAL;
-
-            case 8:
-                return ColumnType.DATE;
-
-            case 9:
-                return ColumnType.TIME;
-
-            case 10:
-                return ColumnType.DATETIME;
-
-            case 11:
-                return ColumnType.TIMESTAMP;
-
-            case 12:
-                return ColumnType.UUID;
-
-            case 13:
-                return ColumnType.BITMASK;
-
-            case 14:
-                return ColumnType.STRING;
-
-            case 15:
-                return ColumnType.BYTE_ARRAY;
-
-            case 16:
-                return ColumnType.PERIOD;
-
-            case 17:
-                return ColumnType.DURATION;
-
-            case 18:
-                return ColumnType.NUMBER;
-
-            case 19:
-                return ColumnType.NULL;
-
-            default:
-                throw new IllegalArgumentException("Invalid column type code: 
" + ordinal);
-        }
-    }
-
-    /**
-     * Converts client data type ({@link ClientDataType}) code to column type.
-     *
-     * @param ordinal Type code.
-     * @return Column type.
-     */
-    public static ColumnType clientDataTypeToSqlColumnType(int ordinal) {
-        switch (ordinal) {
-            case ClientDataType.BOOLEAN:
-                return ColumnType.BOOLEAN;
-
-            case ClientDataType.INT8:
-                return ColumnType.INT8;
-
-            case ClientDataType.INT16:
-                return ColumnType.INT16;
-
-            case ClientDataType.INT32:
-                return ColumnType.INT32;
-
-            case ClientDataType.INT64:
-                return ColumnType.INT64;
-
-            case ClientDataType.FLOAT:
-                return ColumnType.FLOAT;
-
-            case ClientDataType.DOUBLE:
-                return ColumnType.DOUBLE;
-
-            case ClientDataType.DECIMAL:
-                return ColumnType.DECIMAL;
-
-            case ClientDataType.DATE:
-                return ColumnType.DATE;
-
-            case ClientDataType.TIME:
-                return ColumnType.TIME;
-
-            case ClientDataType.DATETIME:
-                return ColumnType.DATETIME;
-
-            case ClientDataType.TIMESTAMP:
-                return ColumnType.TIMESTAMP;
-
-            case ClientDataType.UUID:
-                return ColumnType.UUID;
-
-            case ClientDataType.BITMASK:
-                return ColumnType.BITMASK;
-
-            case ClientDataType.STRING:
-                return ColumnType.STRING;
-
-            case ClientDataType.BYTES:
-                return ColumnType.BYTE_ARRAY;
-
-            case ClientDataType.PERIOD:
-                return ColumnType.PERIOD;
-
-            case ClientDataType.DURATION:
-                return ColumnType.DURATION;
-
-            case ClientDataType.NUMBER:
-                return ColumnType.NUMBER;
-
-            default:
-                throw new IllegalArgumentException("Invalid ClientDataType 
code: " + ordinal);
-        }
-    }
-}
diff --git 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientDataType.java
 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientDataType.java
deleted file mode 100644
index f75a31100e..0000000000
--- 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ClientDataType.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ignite.internal.client.proto;
-
-/**
- * Client data types.
- */
-public class ClientDataType {
-    /** Byte. */
-    public static final int INT8 = 1;
-
-    /** Short. */
-    public static final int INT16 = 2;
-
-    /** Int. */
-    public static final int INT32 = 3;
-
-    /** Long. */
-    public static final int INT64 = 4;
-
-    /** Float. */
-    public static final int FLOAT = 5;
-
-    /** Double. */
-    public static final int DOUBLE = 6;
-
-    /** Decimal. */
-    public static final int DECIMAL = 7;
-
-    /** UUID. */
-    public static final int UUID = 8;
-
-    /** String. */
-    public static final int STRING = 9;
-
-    /** Byte array. */
-    public static final int BYTES = 10;
-
-    /** BitMask. */
-    public static final int BITMASK = 11;
-
-    /** Date. */
-    public static final int DATE = 12;
-
-    /** Time. */
-    public static final int TIME = 13;
-
-    /** DateTime. */
-    public static final int DATETIME = 14;
-
-    /** Timestamp. */
-    public static final int TIMESTAMP = 15;
-
-    /** Number. */
-    public static final int NUMBER = 16;
-
-    /** Boolean. */
-    public static final int BOOLEAN = 17;
-
-    /** Duration. */
-    public static final int DURATION = 18;
-
-    /** Period. */
-    public static final int PERIOD = 19;
-}
diff --git 
a/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ColumnTypeConverter.java
 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ColumnTypeConverter.java
new file mode 100644
index 0000000000..2863cfb7ba
--- /dev/null
+++ 
b/modules/client-common/src/main/java/org/apache/ignite/internal/client/proto/ColumnTypeConverter.java
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.client.proto;
+
+import org.apache.ignite.lang.ErrorGroups.Client;
+import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.ColumnType;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Column type utils.
+ */
+public class ColumnTypeConverter {
+    /** Enum values. */
+    private static final ColumnType[] VALS = ColumnType.values();
+
+    /**
+     * Converts wire SQL type code to column type.
+     *
+     * @param ordinal Type code.
+     * @return Column type.
+     */
+    public static ColumnType fromOrdinalOrThrow(int ordinal) {
+        var columnType = fromOrdinal(ordinal);
+
+        if (columnType == null) {
+            throw new IgniteException(Client.PROTOCOL_ERR, "Invalid column 
type code: " + ordinal);
+        }
+
+        return columnType;
+    }
+
+    /**
+     * Efficiently gets enumerated value from its ordinal.
+     *
+     * @param ord Ordinal value.
+     * @return Enumerated value.
+     */
+    @Nullable
+    private static ColumnType fromOrdinal(int ord) {
+        return ord >= 0 && ord < VALS.length ? VALS[ord] : null;
+    }
+}
diff --git 
a/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverterTest.java
 
b/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverterTest.java
deleted file mode 100644
index 3bec9d388a..0000000000
--- 
a/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ClientColumnTypeConverterTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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.
- */
-
-package org.apache.ignite.internal.client.proto;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import org.apache.ignite.sql.ColumnType;
-import org.junit.jupiter.api.Test;
-
-/**
- * Tests column type converter.
- */
-public class ClientColumnTypeConverterTest {
-    @Test
-    public void testConvertAllTypes() {
-        for (ColumnType columnType : ColumnType.values()) {
-            int ordinal = 
ClientColumnTypeConverter.sqlColumnTypeToOrdinal(columnType);
-            ColumnType resColumnType = 
ClientColumnTypeConverter.ordinalToSqlColumnType(ordinal);
-
-            assertEquals(columnType, resColumnType);
-        }
-    }
-}
diff --git 
a/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ColumnTypeConverterTest.java
 
b/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ColumnTypeConverterTest.java
new file mode 100644
index 0000000000..17d4934165
--- /dev/null
+++ 
b/modules/client-common/src/test/java/org/apache/ignite/internal/client/proto/ColumnTypeConverterTest.java
@@ -0,0 +1,64 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.client.proto;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.apache.ignite.sql.ColumnType;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Column type converter tests.
+ */
+public class ColumnTypeConverterTest {
+    /**
+     * Client protocol relies on this order of column types. Do not change.
+     * If a change to ColumnType enum is required, fix ColumnTypeConverter.
+     */
+    private static final ColumnType[] EXPECTED_VALS = {
+            ColumnType.BOOLEAN,
+            ColumnType.INT8,
+            ColumnType.INT16,
+            ColumnType.INT32,
+            ColumnType.INT64,
+            ColumnType.FLOAT,
+            ColumnType.DOUBLE,
+            ColumnType.DECIMAL,
+            ColumnType.DATE,
+            ColumnType.TIME,
+            ColumnType.DATETIME,
+            ColumnType.TIMESTAMP,
+            ColumnType.UUID,
+            ColumnType.BITMASK,
+            ColumnType.STRING,
+            ColumnType.BYTE_ARRAY,
+            ColumnType.PERIOD,
+            ColumnType.DURATION,
+            ColumnType.NUMBER
+    };
+
+    @Test
+    public void testColumnTypeConverter() {
+        for (int i = 0; i < EXPECTED_VALS.length; i++) {
+            ColumnType expectedVal = EXPECTED_VALS[i];
+            ColumnType actualVal = ColumnTypeConverter.fromOrdinalOrThrow(i);
+
+            assertEquals(expectedVal, actualVal);
+        }
+    }
+}
diff --git 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
index 3375b703ef..b68da2fc36 100644
--- 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
+++ 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
@@ -31,7 +31,6 @@ import org.apache.ignite.client.handler.ClientResource;
 import org.apache.ignite.client.handler.ClientResourceRegistry;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
 import org.apache.ignite.internal.client.proto.ClientBinaryTupleUtils;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
 import org.apache.ignite.internal.client.proto.ClientMessagePacker;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.util.ArrayUtils;
@@ -194,7 +193,7 @@ public class ClientSqlExecuteRequest {
 
             out.packString(col.name());
             out.packBoolean(col.nullable());
-            
out.packInt(ClientColumnTypeConverter.sqlColumnTypeToOrdinal(col.type()));
+            out.packInt(col.type().ordinal());
             out.packInt(col.scale());
             out.packInt(col.precision());
 
diff --git 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
index 5b2c2d3423..6c9d18b126 100644
--- 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
+++ 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
@@ -35,7 +35,6 @@ import 
org.apache.ignite.client.handler.ClientResourceRegistry;
 import org.apache.ignite.internal.binarytuple.BinaryTupleBuilder;
 import org.apache.ignite.internal.binarytuple.BinaryTupleContainer;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
-import org.apache.ignite.internal.client.proto.ClientDataType;
 import org.apache.ignite.internal.client.proto.ClientMessagePacker;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.client.proto.TuplePart;
@@ -53,6 +52,7 @@ import org.apache.ignite.internal.table.TableImpl;
 import org.apache.ignite.lang.IgniteException;
 import org.apache.ignite.lang.IgniteInternalCheckedException;
 import org.apache.ignite.lang.NodeStoppingException;
+import org.apache.ignite.sql.ColumnType;
 import org.apache.ignite.table.Tuple;
 import org.apache.ignite.table.manager.IgniteTables;
 import org.apache.ignite.tx.Transaction;
@@ -89,7 +89,7 @@ public class ClientTableCommon {
 
             packer.packArrayHeader(7);
             packer.packString(col.name());
-            packer.packInt(getClientDataType(col.type().spec()));
+            packer.packInt(getColumnType(col.type().spec()).ordinal());
             packer.packBoolean(schema.isKeyColumn(colIdx));
             packer.packBoolean(col.nullable());
             packer.packBoolean(colocationCols.contains(col));
@@ -372,55 +372,55 @@ public class ClientTableCommon {
      * @param spec Type spec.
      * @return Client type code.
      */
-    public static int getClientDataType(NativeTypeSpec spec) {
+    public static ColumnType getColumnType(NativeTypeSpec spec) {
         switch (spec) {
             case INT8:
-                return ClientDataType.INT8;
+                return ColumnType.INT8;
 
             case INT16:
-                return ClientDataType.INT16;
+                return ColumnType.INT16;
 
             case INT32:
-                return ClientDataType.INT32;
+                return ColumnType.INT32;
 
             case INT64:
-                return ClientDataType.INT64;
+                return ColumnType.INT64;
 
             case FLOAT:
-                return ClientDataType.FLOAT;
+                return ColumnType.FLOAT;
 
             case DOUBLE:
-                return ClientDataType.DOUBLE;
+                return ColumnType.DOUBLE;
 
             case DECIMAL:
-                return ClientDataType.DECIMAL;
+                return ColumnType.DECIMAL;
 
             case NUMBER:
-                return ClientDataType.NUMBER;
+                return ColumnType.NUMBER;
 
             case UUID:
-                return ClientDataType.UUID;
+                return ColumnType.UUID;
 
             case STRING:
-                return ClientDataType.STRING;
+                return ColumnType.STRING;
 
             case BYTES:
-                return ClientDataType.BYTES;
+                return ColumnType.BYTE_ARRAY;
 
             case BITMASK:
-                return ClientDataType.BITMASK;
+                return ColumnType.BITMASK;
 
             case DATE:
-                return ClientDataType.DATE;
+                return ColumnType.DATE;
 
             case TIME:
-                return ClientDataType.TIME;
+                return ColumnType.TIME;
 
             case DATETIME:
-                return ClientDataType.DATETIME;
+                return ColumnType.DATETIME;
 
             case TIMESTAMP:
-                return ClientDataType.TIMESTAMP;
+                return ColumnType.TIMESTAMP;
 
             default:
                 throw new IgniteException(PROTOCOL_ERR, "Unsupported native 
type: " + spec);
diff --git 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuple.java
 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuple.java
index 066442a41f..6531e8200d 100644
--- 
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuple.java
+++ 
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuple.java
@@ -19,7 +19,6 @@ package org.apache.ignite.client.handler.requests.table;
 
 import java.util.BitSet;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
 import org.apache.ignite.internal.client.table.MutableTupleBinaryTupleAdapter;
 import org.apache.ignite.internal.schema.Column;
 import org.apache.ignite.internal.schema.NativeTypeSpec;
@@ -80,9 +79,8 @@ class ClientTuple extends MutableTupleBinaryTupleAdapter {
     @Override
     protected ColumnType schemaColumnType(int columnIndex) {
         NativeTypeSpec spec = schema.column(columnIndex).type().spec();
-        int clientTypeCode = ClientTableCommon.getClientDataType(spec);
 
-        return 
ClientColumnTypeConverter.clientDataTypeToSqlColumnType(clientTypeCode);
+        return ClientTableCommon.getColumnType(spec);
     }
 
     /** {@inheritDoc} */
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
index 553bf4c9cc..de22ff0d8f 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
@@ -25,7 +25,6 @@ import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
 import org.apache.ignite.internal.client.ClientChannel;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.client.proto.ClientOp;
 import org.apache.ignite.internal.client.proto.TuplePart;
@@ -316,7 +315,7 @@ class ClientAsyncResultSet<T> implements AsyncResultSet<T> {
 
             var schemaColumn = new ClientColumn(
                     metaColumn.name(),
-                    
ClientColumnTypeConverter.sqlColumnTypeToOrdinal(metaColumn.type()),
+                    metaColumn.type(),
                     metaColumn.nullable(),
                     true,
                     false,
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientColumnMetadata.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientColumnMetadata.java
index 2f76d7c322..ccdd88a097 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientColumnMetadata.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientColumnMetadata.java
@@ -18,8 +18,8 @@
 package org.apache.ignite.internal.client.sql;
 
 import java.util.List;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
+import org.apache.ignite.internal.client.proto.ColumnTypeConverter;
 import org.apache.ignite.sql.ColumnMetadata;
 import org.apache.ignite.sql.ColumnType;
 
@@ -58,7 +58,7 @@ public class ClientColumnMetadata implements ColumnMetadata {
 
         name = unpacker.unpackString();
         nullable = unpacker.unpackBoolean();
-        type = 
ClientColumnTypeConverter.ordinalToSqlColumnType(unpacker.unpackInt());
+        type = ColumnTypeConverter.fromOrdinalOrThrow(unpacker.unpackInt());
         scale = unpacker.unpackInt();
         precision = unpacker.unpackInt();
 
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientColumn.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientColumn.java
index 99169d84f2..699d66a4ad 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientColumn.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientColumn.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.internal.client.table;
 
-import org.apache.ignite.internal.client.proto.ClientDataType;
+import org.apache.ignite.sql.ColumnType;
 
 /**
  * Schema column.
@@ -26,8 +26,8 @@ public class ClientColumn {
     /** Column name. */
     private final String name;
 
-    /** Column type code (see {@link ClientDataType}). */
-    private final int type;
+    /** Column type code. */
+    private final ColumnType type;
 
     /** Nullable flag. */
     private final boolean nullable;
@@ -51,13 +51,13 @@ public class ClientColumn {
      * Constructor.
      *
      * @param name         Column name.
-     * @param type         Column type code.
+     * @param type         Column type.
      * @param nullable     Nullable flag.
      * @param isKey        Key column flag.
      * @param isColocation Colocation column flag.
      * @param schemaIndex  Index of the column in the schema.
      */
-    public ClientColumn(String name, int type, boolean nullable, boolean 
isKey, boolean isColocation, int schemaIndex) {
+    public ClientColumn(String name, ColumnType type, boolean nullable, 
boolean isKey, boolean isColocation, int schemaIndex) {
         this(name, type, nullable, isKey, isColocation, schemaIndex, 0, 0);
     }
 
@@ -73,8 +73,9 @@ public class ClientColumn {
      */
     public ClientColumn(
             String name,
-            int type,
-            boolean nullable, boolean isKey,
+            ColumnType type,
+            boolean nullable,
+            boolean isKey,
             boolean isColocation,
             int schemaIndex,
             int scale,
@@ -97,11 +98,11 @@ public class ClientColumn {
     }
 
     /**
-     * Client data type, see {@link ClientDataType}.
+     * Column type.
      *
-     * @return Data type code.
+     * @return Type.
      */
-    public int type() {
+    public ColumnType type() {
         return type;
     }
 
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientSchema.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientSchema.java
index 755b536a28..580cdd6ea2 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientSchema.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientSchema.java
@@ -17,33 +17,18 @@
 
 package org.apache.ignite.internal.client.table;
 
-import static org.apache.ignite.internal.client.proto.ClientDataType.BITMASK;
-import static org.apache.ignite.internal.client.proto.ClientDataType.BYTES;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DATE;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DATETIME;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DECIMAL;
-import static org.apache.ignite.internal.client.proto.ClientDataType.DOUBLE;
-import static org.apache.ignite.internal.client.proto.ClientDataType.FLOAT;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT16;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT32;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT64;
-import static org.apache.ignite.internal.client.proto.ClientDataType.INT8;
-import static org.apache.ignite.internal.client.proto.ClientDataType.NUMBER;
-import static org.apache.ignite.internal.client.proto.ClientDataType.STRING;
-import static org.apache.ignite.internal.client.proto.ClientDataType.TIME;
-import static org.apache.ignite.internal.client.proto.ClientDataType.TIMESTAMP;
-
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.ignite.internal.client.proto.ClientDataType;
 import org.apache.ignite.internal.client.proto.TuplePart;
 import org.apache.ignite.internal.marshaller.BinaryMode;
 import org.apache.ignite.internal.marshaller.Marshaller;
 import org.apache.ignite.internal.marshaller.MarshallerColumn;
 import org.apache.ignite.lang.ColumnNotFoundException;
+import org.apache.ignite.lang.ErrorGroups.Client;
 import org.apache.ignite.lang.IgniteException;
+import org.apache.ignite.sql.ColumnType;
 import org.apache.ignite.table.mapper.Mapper;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -189,7 +174,7 @@ public class ClientSchema {
         return Marshaller.createMarshaller(cols, mapper, part == 
TuplePart.KEY);
     }
 
-    private static BinaryMode mode(int dataType) {
+    private static BinaryMode mode(ColumnType dataType) {
         switch (dataType) {
             case INT8:
                 return BinaryMode.BYTE;
@@ -209,13 +194,13 @@ public class ClientSchema {
             case DOUBLE:
                 return BinaryMode.DOUBLE;
 
-            case ClientDataType.UUID:
+            case UUID:
                 return BinaryMode.UUID;
 
             case STRING:
                 return BinaryMode.STRING;
 
-            case BYTES:
+            case BYTE_ARRAY:
                 return BinaryMode.BYTE_ARR;
 
             case DECIMAL:
@@ -240,7 +225,7 @@ public class ClientSchema {
                 return BinaryMode.TIMESTAMP;
 
             default:
-                throw new IgniteException("Unknown client data type: " + 
dataType);
+                throw new IgniteException(Client.PROTOCOL_ERR, "Unknown client 
data type: " + dataType);
         }
     }
 }
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTable.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTable.java
index 91c1a18bad..b359f97aca 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTable.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTable.java
@@ -36,6 +36,7 @@ import org.apache.ignite.internal.client.PayloadOutputChannel;
 import org.apache.ignite.internal.client.ReliableChannel;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.client.proto.ClientOp;
+import org.apache.ignite.internal.client.proto.ColumnTypeConverter;
 import org.apache.ignite.internal.client.tx.ClientTransaction;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.tostring.IgniteToStringBuilder;
@@ -196,7 +197,7 @@ public class ClientTable implements Table {
             assert propCnt >= 7;
 
             var name = in.unpackString();
-            var type = in.unpackInt();
+            var type = ColumnTypeConverter.fromOrdinalOrThrow(in.unpackInt());
             var isKey = in.unpackBoolean();
             var isNullable = in.unpackBoolean();
             var isColocation = in.unpackBoolean();
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTuple.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTuple.java
index 3961811226..e114c3bcdf 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTuple.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTuple.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.internal.client.table;
 
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
 import org.apache.ignite.internal.util.IgniteNameUtils;
 import org.apache.ignite.sql.ColumnType;
 import org.jetbrains.annotations.NotNull;
@@ -61,7 +60,7 @@ public class ClientTuple extends 
MutableTupleBinaryTupleAdapter {
     protected ColumnType schemaColumnType(int columnIndex) {
         ClientColumn column = schema.columns()[columnIndex];
 
-        return 
ClientColumnTypeConverter.clientDataTypeToSqlColumnType(column.type());
+        return column.type();
     }
 
     @Override
diff --git 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTupleSerializer.java
 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTupleSerializer.java
index 0d2eb30d37..8b11c524bb 100644
--- 
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTupleSerializer.java
+++ 
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientTupleSerializer.java
@@ -36,7 +36,6 @@ import java.util.UUID;
 import org.apache.ignite.internal.binarytuple.BinaryTupleBuilder;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
 import org.apache.ignite.internal.client.PayloadOutputChannel;
-import org.apache.ignite.internal.client.proto.ClientDataType;
 import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
 import org.apache.ignite.internal.client.proto.TuplePart;
 import org.apache.ignite.internal.client.tx.ClientTransaction;
@@ -177,9 +176,7 @@ public class ClientTupleSerializer {
         var noValueSet = new BitSet(columns.length);
         var builder = new BinaryTupleBuilder(columns.length, true);
 
-        for (var i = 0; i < columns.length; i++) {
-            var col = columns[i];
-
+        for (ClientColumn col : columns) {
             Object v = col.key()
                     ? key.valueOrDefault(col.name(), NO_VALUE)
                     : val != null
@@ -330,67 +327,67 @@ public class ClientTupleSerializer {
 
         try {
             switch (col.type()) {
-                case ClientDataType.INT8:
+                case INT8:
                     builder.appendByte((byte) v);
                     return;
 
-                case ClientDataType.INT16:
+                case INT16:
                     builder.appendShort((short) v);
                     return;
 
-                case ClientDataType.INT32:
+                case INT32:
                     builder.appendInt((int) v);
                     return;
 
-                case ClientDataType.INT64:
+                case INT64:
                     builder.appendLong((long) v);
                     return;
 
-                case ClientDataType.FLOAT:
+                case FLOAT:
                     builder.appendFloat((float) v);
                     return;
 
-                case ClientDataType.DOUBLE:
+                case DOUBLE:
                     builder.appendDouble((double) v);
                     return;
 
-                case ClientDataType.DECIMAL:
+                case DECIMAL:
                     builder.appendDecimalNotNull((BigDecimal) v, col.scale());
                     return;
 
-                case ClientDataType.UUID:
+                case UUID:
                     builder.appendUuidNotNull((UUID) v);
                     return;
 
-                case ClientDataType.STRING:
+                case STRING:
                     builder.appendStringNotNull((String) v);
                     return;
 
-                case ClientDataType.BYTES:
+                case BYTE_ARRAY:
                     builder.appendBytesNotNull((byte[]) v);
                     return;
 
-                case ClientDataType.BITMASK:
+                case BITMASK:
                     builder.appendBitmaskNotNull((BitSet) v);
                     return;
 
-                case ClientDataType.DATE:
+                case DATE:
                     builder.appendDateNotNull((LocalDate) v);
                     return;
 
-                case ClientDataType.TIME:
+                case TIME:
                     builder.appendTimeNotNull((LocalTime) v);
                     return;
 
-                case ClientDataType.DATETIME:
+                case DATETIME:
                     builder.appendDateTimeNotNull((LocalDateTime) v);
                     return;
 
-                case ClientDataType.TIMESTAMP:
+                case TIMESTAMP:
                     builder.appendTimestampNotNull((Instant) v);
                     return;
 
-                case ClientDataType.NUMBER:
+                case NUMBER:
                     builder.appendNumberNotNull((BigInteger) v);
                     return;
 
diff --git 
a/modules/client/src/test/java/org/apache/ignite/client/ClientTupleTest.java 
b/modules/client/src/test/java/org/apache/ignite/client/ClientTupleTest.java
index eb30d1af77..0f6ae54be0 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientTupleTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientTupleTest.java
@@ -44,8 +44,6 @@ import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 import org.apache.ignite.internal.binarytuple.BinaryTupleBuilder;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
-import org.apache.ignite.internal.client.proto.ClientColumnTypeConverter;
-import org.apache.ignite.internal.client.proto.ClientDataType;
 import org.apache.ignite.internal.client.table.ClientColumn;
 import org.apache.ignite.internal.client.table.ClientSchema;
 import org.apache.ignite.internal.client.table.ClientTuple;
@@ -60,30 +58,30 @@ import org.junit.jupiter.api.Test;
  */
 public class ClientTupleTest {
     private static final ClientSchema SCHEMA = new ClientSchema(1, new 
ClientColumn[]{
-            new ClientColumn("ID", ClientDataType.INT64, false, true, true, 0),
-            new ClientColumn("NAME", ClientDataType.STRING, false, false, 
false, 1)
+            new ClientColumn("ID", ColumnType.INT64, false, true, true, 0),
+            new ClientColumn("NAME", ColumnType.STRING, false, false, false, 1)
     });
 
     private static final ClientSchema FULL_SCHEMA = new ClientSchema(100, new 
ClientColumn[]{
-            new ClientColumn("I8", ClientDataType.INT8, false, false, false, 
0),
-            new ClientColumn("I16", ClientDataType.INT16, false, false, false, 
1),
-            new ClientColumn("I32", ClientDataType.INT32, false, false, false, 
2),
-            new ClientColumn("I64", ClientDataType.INT64, false, false, false, 
3),
-            new ClientColumn("FLOAT", ClientDataType.FLOAT, false, false, 
false, 4),
-            new ClientColumn("DOUBLE", ClientDataType.DOUBLE, false, false, 
false, 5),
-            new ClientColumn("UUID", ClientDataType.UUID, false, false, false, 
6),
-            new ClientColumn("STR", ClientDataType.STRING, false, false, 
false, 7),
-            new ClientColumn("BITS", ClientDataType.BITMASK, false, false, 
false, 8),
-            new ClientColumn("DATE", ClientDataType.DATE, false, false, false, 
9),
-            new ClientColumn("TIME", ClientDataType.TIME, false, false, false, 
10),
-            new ClientColumn("DATETIME", ClientDataType.DATETIME, false, 
false, false, 11),
-            new ClientColumn("TIMESTAMP", ClientDataType.TIMESTAMP, false, 
false, false, 12),
-            new ClientColumn("BOOL", ClientDataType.BOOLEAN, false, false, 
false, 13),
-            new ClientColumn("DECIMAL", ClientDataType.DECIMAL, false, false, 
false, 14),
-            new ClientColumn("BYTES", ClientDataType.BYTES, false, false, 
false, 15),
-            new ClientColumn("PERIOD", ClientDataType.PERIOD, false, false, 
false, 16),
-            new ClientColumn("DURATION", ClientDataType.DURATION, false, 
false, false, 17),
-            new ClientColumn("NUMBER", ClientDataType.NUMBER, false, false, 
false, 18)
+            new ClientColumn("I8", ColumnType.INT8, false, false, false, 0),
+            new ClientColumn("I16", ColumnType.INT16, false, false, false, 1),
+            new ClientColumn("I32", ColumnType.INT32, false, false, false, 2),
+            new ClientColumn("I64", ColumnType.INT64, false, false, false, 3),
+            new ClientColumn("FLOAT", ColumnType.FLOAT, false, false, false, 
4),
+            new ClientColumn("DOUBLE", ColumnType.DOUBLE, false, false, false, 
5),
+            new ClientColumn("UUID", ColumnType.UUID, false, false, false, 6),
+            new ClientColumn("STR", ColumnType.STRING, false, false, false, 7),
+            new ClientColumn("BITS", ColumnType.BITMASK, false, false, false, 
8),
+            new ClientColumn("DATE", ColumnType.DATE, false, false, false, 9),
+            new ClientColumn("TIME", ColumnType.TIME, false, false, false, 10),
+            new ClientColumn("DATETIME", ColumnType.DATETIME, false, false, 
false, 11),
+            new ClientColumn("TIMESTAMP", ColumnType.TIMESTAMP, false, false, 
false, 12),
+            new ClientColumn("BOOL", ColumnType.BOOLEAN, false, false, false, 
13),
+            new ClientColumn("DECIMAL", ColumnType.DECIMAL, false, false, 
false, 14),
+            new ClientColumn("BYTES", ColumnType.BYTE_ARRAY, false, false, 
false, 15),
+            new ClientColumn("PERIOD", ColumnType.PERIOD, false, false, false, 
16),
+            new ClientColumn("DURATION", ColumnType.DURATION, false, false, 
false, 17),
+            new ClientColumn("NUMBER", ColumnType.NUMBER, false, false, false, 
18)
     });
 
     private static final UUID GUID = UUID.randomUUID();
@@ -288,7 +286,7 @@ public class ClientTupleTest {
     @Test
     public void testFullSchemaHasAllTypes() {
         Set<ColumnType> schemaTypes = Arrays.stream(FULL_SCHEMA.columns())
-                .map(c -> 
ClientColumnTypeConverter.clientDataTypeToSqlColumnType(c.type()))
+                .map(ClientColumn::type)
                 .collect(Collectors.toSet());
 
         for (ColumnType columnType : ColumnType.values()) {
diff --git a/modules/platforms/cpp/ignite/client/detail/client_data_type.h 
b/modules/platforms/cpp/ignite/client/detail/client_data_type.h
deleted file mode 100644
index fb0a139e34..0000000000
--- a/modules/platforms/cpp/ignite/client/detail/client_data_type.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * 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.
- */
-
-#pragma once
-
-#include <ignite/common/ignite_error.h>
-#include <ignite/common/ignite_type.h>
-
-namespace ignite::detail {
-
-/**
- * Column data type encoding for the client protocol.
- */
-struct client_data_type {
-    /** Byte. */
-    static constexpr std::int32_t INT8 = 1;
-
-    /** Short. */
-    static constexpr std::int32_t INT16 = 2;
-
-    /** Int. */
-    static constexpr std::int32_t INT32 = 3;
-
-    /** Long. */
-    static constexpr std::int32_t INT64 = 4;
-
-    /** Float. */
-    static constexpr std::int32_t FLOAT = 5;
-
-    /** Double. */
-    static constexpr std::int32_t DOUBLE = 6;
-
-    /** Decimal. */
-    static constexpr std::int32_t DECIMAL = 7;
-
-    /** UUID. */
-    static constexpr std::int32_t UUID = 8;
-
-    /** String. */
-    static constexpr std::int32_t STRING = 9;
-
-    /** Byte array. */
-    static constexpr std::int32_t BYTES = 10;
-
-    /** BitMask. */
-    static constexpr std::int32_t BITMASK = 11;
-
-    /** Date. */
-    static constexpr std::int32_t DATE = 12;
-
-    /** Time. */
-    static constexpr std::int32_t TIME = 13;
-
-    /** DateTime. */
-    static constexpr std::int32_t DATETIME = 14;
-
-    /** Timestamp. */
-    static constexpr std::int32_t TIMESTAMP = 15;
-
-    /** Number. */
-    static constexpr std::int32_t NUMBER = 16;
-
-    /** Boolean. */
-    static constexpr std::int32_t BOOLEAN = 17;
-
-    /** Duration. */
-    static constexpr std::int32_t DURATION = 18;
-
-    /** Period. */
-    static constexpr std::int32_t PERIOD = 19;
-
-    /**
-     * Get the ignite type matching a client data type value.
-     *
-     * @param t Client data type.
-     * @return Matching ignite type.
-     */
-    static ignite_type to_ignite_type(std::int32_t t) {
-        switch (t) {
-            case INT8:
-                return ignite_type::INT8;
-            case INT16:
-                return ignite_type::INT16;
-            case INT32:
-                return ignite_type::INT32;
-            case INT64:
-                return ignite_type::INT64;
-            case FLOAT:
-                return ignite_type::FLOAT;
-            case DOUBLE:
-                return ignite_type::DOUBLE;
-            case DECIMAL:
-                return ignite_type::DECIMAL;
-            case UUID:
-                return ignite_type::UUID;
-            case STRING:
-                return ignite_type::STRING;
-            case BYTES:
-                return ignite_type::BYTE_ARRAY;
-            case BITMASK:
-                return ignite_type::BITMASK;
-            case DATE:
-                return ignite_type::DATE;
-            case TIME:
-                return ignite_type::TIME;
-            case DATETIME:
-                return ignite_type::DATETIME;
-            case TIMESTAMP:
-                return ignite_type::TIMESTAMP;
-            case NUMBER:
-                return ignite_type::NUMBER;
-            case BOOLEAN:
-                return ignite_type::BOOLEAN;
-            case DURATION:
-                return ignite_type::DURATION;
-            case PERIOD:
-                return ignite_type::PERIOD;
-            default:
-                throw ignite_error("Value is out of range for Ignite type: " + 
std::to_string(t));
-        }
-    }
-
-    /**
-     * Get the client data type value matching an ignite type.
-     *
-     * @param t Ignite type.
-     * @return Matching client data type.
-     */
-    static std::int32_t from_ignite_type(ignite_type t) {
-        switch (t) {
-            case ignite_type::BOOLEAN:
-                return BOOLEAN;
-            case ignite_type::INT8:
-                return INT8;
-            case ignite_type::INT16:
-                return INT16;
-            case ignite_type::INT32:
-                return INT32;
-            case ignite_type::INT64:
-                return INT64;
-            case ignite_type::FLOAT:
-                return FLOAT;
-            case ignite_type::DOUBLE:
-                return DOUBLE;
-            case ignite_type::DECIMAL:
-                return DECIMAL;
-            case ignite_type::DATE:
-                return DATE;
-            case ignite_type::TIME:
-                return TIME;
-            case ignite_type::DATETIME:
-                return DATETIME;
-            case ignite_type::TIMESTAMP:
-                return TIMESTAMP;
-            case ignite_type::UUID:
-                return UUID;
-            case ignite_type::BITMASK:
-                return BITMASK;
-            case ignite_type::STRING:
-                return STRING;
-            case ignite_type::BYTE_ARRAY:
-                return BYTES;
-            case ignite_type::PERIOD:
-                return PERIOD;
-            case ignite_type::DURATION:
-                return DURATION;
-            case ignite_type::NUMBER:
-                return NUMBER;
-            default:
-                throw ignite_error("Value is out of range for Ignite type: "
-                    + 
std::to_string(static_cast<std::underlying_type_t<ignite_type>>(t)));
-        }
-    }
-};
-
-} // namespace ignite::detail
diff --git 
a/modules/platforms/cpp/ignite/client/detail/compute/compute_impl.cpp 
b/modules/platforms/cpp/ignite/client/detail/compute/compute_impl.cpp
index e2c1b64913..73d7005a3d 100644
--- a/modules/platforms/cpp/ignite/client/detail/compute/compute_impl.cpp
+++ b/modules/platforms/cpp/ignite/client/detail/compute/compute_impl.cpp
@@ -17,7 +17,6 @@
 
 #include "compute_impl.h"
 
-#include "ignite/client/detail/client_data_type.h"
 #include "ignite/client/detail/utils.h"
 
 #include "ignite/tuple/binary_tuple_builder.h"
@@ -61,7 +60,7 @@ std::optional<primitive> 
read_primitive_from_binary_tuple(protocol::reader &read
     auto tuple_data = reader.read_binary();
     binary_tuple_parser parser(3, tuple_data);
 
-    auto typ = 
client_data_type::to_ignite_type(binary_tuple_parser::get_int32(parser.get_next().value()));
+    auto typ = 
static_cast<ignite_type>(binary_tuple_parser::get_int32(parser.get_next().value()));
     auto scale = binary_tuple_parser::get_int32(parser.get_next().value());
     return read_next_column(parser, typ, scale);
 }
diff --git a/modules/platforms/cpp/ignite/client/detail/table/schema.h 
b/modules/platforms/cpp/ignite/client/detail/table/schema.h
index 81f5cdf656..696138a777 100644
--- a/modules/platforms/cpp/ignite/client/detail/table/schema.h
+++ b/modules/platforms/cpp/ignite/client/detail/table/schema.h
@@ -17,8 +17,6 @@
 
 #pragma once
 
-#include "ignite/client/detail/client_data_type.h"
-
 #include "ignite/common/ignite_error.h"
 #include "ignite/common/ignite_type.h"
 #include "ignite/protocol/utils.h"
@@ -59,7 +57,7 @@ struct column {
 
         column res{};
         res.name = protocol::unpack_object<std::string>(arr.ptr[0]);
-        res.type = 
client_data_type::to_ignite_type(protocol::unpack_object<std::int32_t>(arr.ptr[1]));
+        res.type = 
static_cast<ignite_type>(protocol::unpack_object<std::int32_t>(arr.ptr[1]));
         res.is_key = protocol::unpack_object<bool>(arr.ptr[2]);
         res.nullable = protocol::unpack_object<bool>(arr.ptr[3]);
         res.scale = protocol::unpack_object<std::int32_t>(arr.ptr[5]);
diff --git a/modules/platforms/cpp/ignite/client/detail/utils.cpp 
b/modules/platforms/cpp/ignite/client/detail/utils.cpp
index d1908091a0..dd553f00d6 100644
--- a/modules/platforms/cpp/ignite/client/detail/utils.cpp
+++ b/modules/platforms/cpp/ignite/client/detail/utils.cpp
@@ -17,8 +17,6 @@
 
 #include "utils.h"
 
-#include "client_data_type.h"
-
 #include <ignite/common/bits.h>
 #include <ignite/common/uuid.h>
 
@@ -220,7 +218,7 @@ std::vector<std::byte> pack_tuple(
  * @param scale Scale.
  */
 void claim_type_and_scale(binary_tuple_builder &builder, ignite_type typ, 
std::int32_t scale = 0) {
-    builder.claim_int32(client_data_type::from_ignite_type(typ));
+    builder.claim_int32(static_cast<std::int32_t>(typ));
     builder.claim_int32(scale);
 }
 
@@ -232,7 +230,7 @@ void claim_type_and_scale(binary_tuple_builder &builder, 
ignite_type typ, std::i
  * @param scale Scale.
  */
 void append_type_and_scale(binary_tuple_builder &builder, ignite_type typ, 
std::int32_t scale = 0) {
-    builder.append_int32(client_data_type::from_ignite_type(typ));
+    builder.append_int32(static_cast<std::int32_t>(typ));
     builder.append_int32(scale);
 }
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Benchmarks/Table/Serialization/SerializerHandlerBenchmarksBase.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Benchmarks/Table/Serialization/SerializerHandlerBenchmarksBase.cs
index 3bae3cafb6..e9e49300b5 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Benchmarks/Table/Serialization/SerializerHandlerBenchmarksBase.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Benchmarks/Table/Serialization/SerializerHandlerBenchmarksBase.cs
@@ -19,9 +19,9 @@ namespace Apache.Ignite.Benchmarks.Table.Serialization
 {
     using System;
     using BenchmarkDotNet.Engines;
+    using Ignite.Sql;
     using Ignite.Table;
     using Internal.Buffers;
-    using Internal.Proto;
     using Internal.Table;
     using Internal.Table.Serialization;
 
@@ -46,9 +46,9 @@ namespace Apache.Ignite.Benchmarks.Table.Serialization
 
         internal static readonly Schema Schema = new(1, 1, new[]
         {
-            new Column(nameof(Car.Id), ClientDataType.Uuid, IsNullable: false, 
IsColocation: true, IsKey: true, SchemaIndex: 0, Scale: 0, Precision: 0),
-            new Column(nameof(Car.BodyType), ClientDataType.String, 
IsNullable: false, IsColocation: false, IsKey: false, SchemaIndex: 1, Scale: 0, 
Precision: 0),
-            new Column(nameof(Car.Seats), ClientDataType.Int32, IsNullable: 
false, IsColocation: false, IsKey: false, SchemaIndex: 2, Scale: 0, Precision: 
0)
+            new Column(nameof(Car.Id), ColumnType.Uuid, IsNullable: false, 
IsColocation: true, IsKey: true, SchemaIndex: 0, Scale: 0, Precision: 0),
+            new Column(nameof(Car.BodyType), ColumnType.String, IsNullable: 
false, IsColocation: false, IsKey: false, SchemaIndex: 1, Scale: 0, Precision: 
0),
+            new Column(nameof(Car.Seats), ColumnType.Int32, IsNullable: false, 
IsColocation: false, IsKey: false, SchemaIndex: 2, Scale: 0, Precision: 0)
         });
 
         internal static readonly byte[] SerializedData = GetSerializedData();
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/FakeServer.cs 
b/modules/platforms/dotnet/Apache.Ignite.Tests/FakeServer.cs
index 38786f84a0..f11360057e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/FakeServer.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/FakeServer.cs
@@ -261,7 +261,7 @@ namespace Apache.Ignite.Tests
                 var idx = i * 4;
 
                 var name = propTuple.GetString(idx);
-                var type = (ClientDataType)propTuple.GetInt(idx + 1);
+                var type = (ColumnType)propTuple.GetInt(idx + 1);
                 var scale = propTuple.GetInt(idx + 2);
 
                 props[name] = propTuple.GetObject(idx + 3, type, scale);
@@ -292,7 +292,7 @@ namespace Apache.Ignite.Tests
                 writer.WriteArrayHeader(6); // Column props.
                 writer.Write("NAME"); // Column name.
                 writer.Write(false); // Nullable.
-                writer.Write((int)SqlColumnType.String);
+                writer.Write((int)ColumnType.String);
                 writer.Write(0); // Scale.
                 writer.Write(0); // Precision.
                 writer.Write(false); // No origin.
@@ -300,7 +300,7 @@ namespace Apache.Ignite.Tests
                 writer.WriteArrayHeader(6); // Column props.
                 writer.Write("VAL"); // Column name.
                 writer.Write(false); // Nullable.
-                writer.Write((int)SqlColumnType.String);
+                writer.Write((int)ColumnType.String);
                 writer.Write(0); // Scale.
                 writer.Write(0); // Precision.
                 writer.Write(false); // No origin.
@@ -325,7 +325,7 @@ namespace Apache.Ignite.Tests
                 writer.WriteArrayHeader(6); // Column props.
                 writer.Write("ID"); // Column name.
                 writer.Write(false); // Nullable.
-                writer.Write((int)SqlColumnType.Int32);
+                writer.Write((int)ColumnType.Int32);
                 writer.Write(0); // Scale.
                 writer.Write(0); // Precision.
                 writer.Write(false); // No origin.
@@ -356,7 +356,7 @@ namespace Apache.Ignite.Tests
                 writer.WriteArrayHeader(1); // Columns.
                 writer.WriteArrayHeader(7); // Column props.
                 writer.Write("ID");
-                writer.Write((int)ClientDataType.Int32);
+                writer.Write((int)ColumnType.Int32);
                 writer.Write(true); // Key.
                 writer.Write(false); // Nullable.
                 writer.Write(true); // Colocation.
@@ -369,7 +369,7 @@ namespace Apache.Ignite.Tests
 
                 writer.WriteArrayHeader(7); // Column props.
                 writer.Write("IdStr");
-                writer.Write((int)ClientDataType.String);
+                writer.Write((int)ColumnType.String);
                 writer.Write(true); // Key.
                 writer.Write(false); // Nullable.
                 writer.Write(true); // Colocation.
@@ -378,7 +378,7 @@ namespace Apache.Ignite.Tests
 
                 writer.WriteArrayHeader(7); // Column props.
                 writer.Write("IdGuid");
-                writer.Write((int)ClientDataType.Uuid);
+                writer.Write((int)ColumnType.Uuid);
                 writer.Write(true); // Key.
                 writer.Write(false); // Nullable.
                 writer.Write(true); // Colocation.
@@ -391,7 +391,7 @@ namespace Apache.Ignite.Tests
 
                 writer.WriteArrayHeader(7); // Column props.
                 writer.Write("IdStr");
-                writer.Write((int)ClientDataType.String);
+                writer.Write((int)ColumnType.String);
                 writer.Write(true); // Key.
                 writer.Write(false); // Nullable.
                 writer.Write(true); // Colocation.
@@ -400,7 +400,7 @@ namespace Apache.Ignite.Tests
 
                 writer.WriteArrayHeader(7); // Column props.
                 writer.Write("IdGuid");
-                writer.Write((int)ClientDataType.Uuid);
+                writer.Write((int)ColumnType.Uuid);
                 writer.Write(true); // Key.
                 writer.Write(false); // Nullable.
                 writer.Write(false); // Colocation.
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Linq/ResultSelectorCacheKeyTests.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Linq/ResultSelectorCacheKeyTests.cs
index 0f78afb6b8..0fd74a4752 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Linq/ResultSelectorCacheKeyTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Linq/ResultSelectorCacheKeyTests.cs
@@ -67,7 +67,7 @@ public class ResultSelectorCacheKeyTests
         var columns = GetColumns();
         var columns2 = GetColumns();
 
-        columns2[0] = columns2[0] with { Type = SqlColumnType.String };
+        columns2[0] = columns2[0] with { Type = ColumnType.String };
 
         var key1 = new ResultSelectorCacheKey<object>(target, columns);
         var key2 = new ResultSelectorCacheKey<object>(target, columns2);
@@ -114,14 +114,14 @@ public class ResultSelectorCacheKeyTests
         {
             new ColumnMetadata(
                 Name: "c1",
-                Type: SqlColumnType.Date,
+                Type: ColumnType.Date,
                 Precision: 1,
                 Scale: 2,
                 Nullable: true,
                 Origin: null),
             new ColumnMetadata(
                 Name: "c2",
-                Type: SqlColumnType.Float,
+                Type: ColumnType.Float,
                 Precision: 4,
                 Scale: 6,
                 Nullable: false,
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/BinaryTuple/BinaryTupleTests.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/BinaryTuple/BinaryTupleTests.cs
index fbaf5a8e63..ddecbca5bf 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/BinaryTuple/BinaryTupleTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/BinaryTuple/BinaryTupleTests.cs
@@ -21,7 +21,7 @@ namespace Apache.Ignite.Tests.Proto.BinaryTuple
     using System.Collections;
     using System.Linq;
     using System.Numerics;
-    using Internal.Proto;
+    using Ignite.Sql;
     using Internal.Proto.BinaryTuple;
     using Internal.Table;
     using NodaTime;
@@ -803,43 +803,43 @@ namespace Apache.Ignite.Tests.Proto.BinaryTuple
             var reader = BuildAndRead(
                 (ref BinaryTupleBuilder b) =>
                 {
-                    b.AppendObject(null, ClientDataType.String);
-                    b.AppendObject(sbyte.MaxValue, ClientDataType.Int8);
-                    b.AppendObject(short.MaxValue, ClientDataType.Int16);
-                    b.AppendObject(int.MaxValue, ClientDataType.Int32);
-                    b.AppendObject(long.MaxValue, ClientDataType.Int64);
-                    b.AppendObject(float.MaxValue, ClientDataType.Float);
-                    b.AppendObject(double.MaxValue, ClientDataType.Double);
-                    b.AppendObject(decimal.One, ClientDataType.Decimal);
-                    b.AppendObject(BigInteger.One, ClientDataType.Number);
-                    b.AppendObject("foo", ClientDataType.String);
-                    b.AppendObject(bitArray, ClientDataType.BitMask);
-                    b.AppendObject(guid, ClientDataType.Uuid);
-                    b.AppendObject(bytes, ClientDataType.Bytes);
-                    b.AppendObject(LocalTime.FromMinutesSinceMidnight(123), 
ClientDataType.Time, precision: TemporalTypes.MaxTimePrecision);
-                    b.AppendObject(date, ClientDataType.Date);
-                    b.AppendObject(dateTime, ClientDataType.DateTime, 
precision: TemporalTypes.MaxTimePrecision);
-                    b.AppendObject(Instant.FromDateTimeUtc(utcNow), 
ClientDataType.Timestamp, precision: TemporalTypes.MaxTimePrecision);
+                    b.AppendObject(null, ColumnType.String);
+                    b.AppendObject(sbyte.MaxValue, ColumnType.Int8);
+                    b.AppendObject(short.MaxValue, ColumnType.Int16);
+                    b.AppendObject(int.MaxValue, ColumnType.Int32);
+                    b.AppendObject(long.MaxValue, ColumnType.Int64);
+                    b.AppendObject(float.MaxValue, ColumnType.Float);
+                    b.AppendObject(double.MaxValue, ColumnType.Double);
+                    b.AppendObject(decimal.One, ColumnType.Decimal);
+                    b.AppendObject(BigInteger.One, ColumnType.Number);
+                    b.AppendObject("foo", ColumnType.String);
+                    b.AppendObject(bitArray, ColumnType.Bitmask);
+                    b.AppendObject(guid, ColumnType.Uuid);
+                    b.AppendObject(bytes, ColumnType.ByteArray);
+                    b.AppendObject(LocalTime.FromMinutesSinceMidnight(123), 
ColumnType.Time, precision: TemporalTypes.MaxTimePrecision);
+                    b.AppendObject(date, ColumnType.Date);
+                    b.AppendObject(dateTime, ColumnType.Datetime, precision: 
TemporalTypes.MaxTimePrecision);
+                    b.AppendObject(Instant.FromDateTimeUtc(utcNow), 
ColumnType.Timestamp, precision: TemporalTypes.MaxTimePrecision);
                 },
                 17);
 
-            Assert.IsNull(reader.GetObject(0, ClientDataType.String));
-            Assert.AreEqual(sbyte.MaxValue, reader.GetObject(1, 
ClientDataType.Int8));
-            Assert.AreEqual(short.MaxValue, reader.GetObject(2, 
ClientDataType.Int16));
-            Assert.AreEqual(int.MaxValue, reader.GetObject(3, 
ClientDataType.Int32));
-            Assert.AreEqual(long.MaxValue, reader.GetObject(4, 
ClientDataType.Int64));
-            Assert.AreEqual(float.MaxValue, reader.GetObject(5, 
ClientDataType.Float));
-            Assert.AreEqual(double.MaxValue, reader.GetObject(6, 
ClientDataType.Double));
-            Assert.AreEqual(decimal.One, reader.GetObject(7, 
ClientDataType.Decimal));
-            Assert.AreEqual(BigInteger.One, reader.GetObject(8, 
ClientDataType.Number));
-            Assert.AreEqual("foo", reader.GetObject(9, ClientDataType.String));
-            Assert.AreEqual(bitArray, reader.GetObject(10, 
ClientDataType.BitMask));
-            Assert.AreEqual(guid, reader.GetObject(11, ClientDataType.Uuid));
-            Assert.AreEqual(bytes, reader.GetObject(12, ClientDataType.Bytes));
-            Assert.AreEqual(LocalTime.FromMinutesSinceMidnight(123), 
reader.GetObject(13, ClientDataType.Time));
-            Assert.AreEqual(date, reader.GetObject(14, ClientDataType.Date));
-            Assert.AreEqual(dateTime, reader.GetObject(15, 
ClientDataType.DateTime));
-            Assert.AreEqual(Instant.FromDateTimeUtc(utcNow), 
reader.GetObject(16, ClientDataType.Timestamp));
+            Assert.IsNull(reader.GetObject(0, ColumnType.String));
+            Assert.AreEqual(sbyte.MaxValue, reader.GetObject(1, 
ColumnType.Int8));
+            Assert.AreEqual(short.MaxValue, reader.GetObject(2, 
ColumnType.Int16));
+            Assert.AreEqual(int.MaxValue, reader.GetObject(3, 
ColumnType.Int32));
+            Assert.AreEqual(long.MaxValue, reader.GetObject(4, 
ColumnType.Int64));
+            Assert.AreEqual(float.MaxValue, reader.GetObject(5, 
ColumnType.Float));
+            Assert.AreEqual(double.MaxValue, reader.GetObject(6, 
ColumnType.Double));
+            Assert.AreEqual(decimal.One, reader.GetObject(7, 
ColumnType.Decimal));
+            Assert.AreEqual(BigInteger.One, reader.GetObject(8, 
ColumnType.Number));
+            Assert.AreEqual("foo", reader.GetObject(9, ColumnType.String));
+            Assert.AreEqual(bitArray, reader.GetObject(10, 
ColumnType.Bitmask));
+            Assert.AreEqual(guid, reader.GetObject(11, ColumnType.Uuid));
+            Assert.AreEqual(bytes, reader.GetObject(12, ColumnType.ByteArray));
+            Assert.AreEqual(LocalTime.FromMinutesSinceMidnight(123), 
reader.GetObject(13, ColumnType.Time));
+            Assert.AreEqual(date, reader.GetObject(14, ColumnType.Date));
+            Assert.AreEqual(dateTime, reader.GetObject(15, 
ColumnType.Datetime));
+            Assert.AreEqual(Instant.FromDateTimeUtc(utcNow), 
reader.GetObject(16, ColumnType.Timestamp));
         }
 
         [Test]
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/ColocationHashTests.cs 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/ColocationHashTests.cs
index 4378f68c0f..aeb8e9f27b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/ColocationHashTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/Proto/ColocationHashTests.cs
@@ -25,9 +25,9 @@ using System.Linq;
 using System.Numerics;
 using System.Reflection;
 using System.Threading.Tasks;
+using Ignite.Sql;
 using Ignite.Table;
 using Internal.Buffers;
-using Internal.Proto;
 using Internal.Proto.BinaryTuple;
 using Internal.Proto.MsgPack;
 using Internal.Table;
@@ -221,30 +221,30 @@ public class ColocationHashTests : IgniteTestsBase
     {
         var colType = value switch
         {
-            sbyte => ClientDataType.Int8,
-            short => ClientDataType.Int16,
-            int => ClientDataType.Int32,
-            long => ClientDataType.Int64,
-            float => ClientDataType.Float,
-            double => ClientDataType.Double,
-            decimal => ClientDataType.Decimal,
-            Guid => ClientDataType.Uuid,
-            byte[] => ClientDataType.Bytes,
-            string => ClientDataType.String,
-            BigInteger => ClientDataType.Number,
-            BitArray => ClientDataType.BitMask,
-            LocalTime => ClientDataType.Time,
-            LocalDate => ClientDataType.Date,
-            LocalDateTime => ClientDataType.DateTime,
-            Instant => ClientDataType.Timestamp,
+            sbyte => ColumnType.Int8,
+            short => ColumnType.Int16,
+            int => ColumnType.Int32,
+            long => ColumnType.Int64,
+            float => ColumnType.Float,
+            double => ColumnType.Double,
+            decimal => ColumnType.Decimal,
+            Guid => ColumnType.Uuid,
+            byte[] => ColumnType.ByteArray,
+            string => ColumnType.String,
+            BigInteger => ColumnType.Number,
+            BitArray => ColumnType.Bitmask,
+            LocalTime => ColumnType.Time,
+            LocalDate => ColumnType.Date,
+            LocalDateTime => ColumnType.Datetime,
+            Instant => ColumnType.Timestamp,
             _ => throw new Exception("Unknown type: " + value.GetType())
         };
 
         var precision = colType switch
         {
-            ClientDataType.Time => timePrecision,
-            ClientDataType.DateTime => timePrecision,
-            ClientDataType.Timestamp => timestampPrecision,
+            ColumnType.Time => timePrecision,
+            ColumnType.Datetime => timePrecision,
+            ColumnType.Timestamp => timestampPrecision,
             _ => 0
         };
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlColumnTypeExtensionsTests.cs
 b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/ColumnTypeExtensionsTests.cs
similarity index 56%
rename from 
modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlColumnTypeExtensionsTests.cs
rename to 
modules/platforms/dotnet/Apache.Ignite.Tests/Sql/ColumnTypeExtensionsTests.cs
index ee24a7d481..f74c75ec17 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlColumnTypeExtensionsTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/ColumnTypeExtensionsTests.cs
@@ -23,39 +23,39 @@ using Internal.Sql;
 using NUnit.Framework;
 
 /// <summary>
-/// Tests for <see cref="SqlColumnTypeExtensions"/>.
+/// Tests for <see cref="ColumnTypeExtensions"/>.
 /// </summary>
-public class SqlColumnTypeExtensionsTests
+public class ColumnTypeExtensionsTests
 {
-    private static readonly SqlColumnType[] SqlColumnTypes = 
Enum.GetValues<SqlColumnType>();
+    private static readonly ColumnType[] SqlColumnTypes = 
Enum.GetValues<ColumnType>();
 
     [TestCaseSource(nameof(SqlColumnTypes))]
-    public void TestToClrType(SqlColumnType sqlColumnType) =>
-        Assert.IsNotNull(sqlColumnType.ToClrType(), sqlColumnType.ToString());
+    public void TestToClrType(ColumnType columnType) =>
+        Assert.IsNotNull(columnType.ToClrType(), columnType.ToString());
 
     [TestCaseSource(nameof(SqlColumnTypes))]
-    public void TestToSqlColumnType(SqlColumnType sqlColumnType) =>
-        Assert.AreEqual(sqlColumnType, 
sqlColumnType.ToClrType().ToSqlColumnType());
+    public void TestToSqlColumnType(ColumnType columnType) =>
+        Assert.AreEqual(columnType, columnType.ToClrType().ToColumnType());
 
     [TestCaseSource(nameof(SqlColumnTypes))]
-    public void TestSqlColumnTypeToSqlTypeName(SqlColumnType sqlColumnType)
+    public void TestSqlColumnTypeToSqlTypeName(ColumnType columnType)
     {
-        if (sqlColumnType is SqlColumnType.Duration or SqlColumnType.Period)
+        if (columnType is ColumnType.Duration or ColumnType.Period)
         {
             return;
         }
 
-        Assert.IsNotNull(sqlColumnType.ToSqlTypeName(), 
sqlColumnType.ToString());
+        Assert.IsNotNull(columnType.ToSqlTypeName(), columnType.ToString());
     }
 
     [TestCaseSource(nameof(SqlColumnTypes))]
-    public void TestClrTypeToSqlTypeName(SqlColumnType sqlColumnType)
+    public void TestClrTypeToSqlTypeName(ColumnType columnType)
     {
-        if (sqlColumnType is SqlColumnType.Duration or SqlColumnType.Period)
+        if (columnType is ColumnType.Duration or ColumnType.Period)
         {
             return;
         }
 
-        Assert.IsNotNull(sqlColumnType.ToClrType().ToSqlTypeName(), 
sqlColumnType.ToString());
+        Assert.IsNotNull(columnType.ToClrType().ToSqlTypeName(), 
columnType.ToString());
     }
 }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
index 6d7184c5e6..caccda6d3b 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/IgniteDbDataReaderTests.cs
@@ -324,21 +324,21 @@ public class IgniteDbDataReaderTests : IgniteTestsBase
     {
         await using var reader = await ExecuteReader();
 
-        Test(() => reader.GetBoolean("STR"), "STR", SqlColumnType.String, 
typeof(bool), typeof(string));
-        Test(() => reader.GetString("INT8"), "INT8", SqlColumnType.Int8, 
typeof(string), typeof(sbyte));
-        Test(() => reader.GetGuid("INT16"), "INT16", SqlColumnType.Int16, 
typeof(Guid), typeof(short));
-        Test(() => reader.GetDateTime("INT32"), "INT32", SqlColumnType.Int32, 
typeof(DateTime), typeof(int));
-        Test(() => reader.GetFloat("INT64"), "INT64", SqlColumnType.Int64, 
typeof(float), typeof(long));
-        Test(() => reader.GetDouble("INT64"), "INT64", SqlColumnType.Int64, 
typeof(double), typeof(long));
-        Test(() => reader.GetString("INT64"), "INT64", SqlColumnType.Int64, 
typeof(string), typeof(long));
-        Test(() => reader.GetByte("STR"), "STR", SqlColumnType.String, 
typeof(byte), typeof(string));
-        Test(() => reader.GetBytes("STR", 0, null!, 0, 0), "STR", 
SqlColumnType.String, typeof(byte[]), typeof(string));
-        Test(() => reader.GetDecimal("STR"), "STR", SqlColumnType.String, 
typeof(decimal), typeof(string));
-        Test(() => reader.GetInt16("STR"), "STR", SqlColumnType.String, 
typeof(short), typeof(string));
-        Test(() => reader.GetInt32("STR"), "STR", SqlColumnType.String, 
typeof(int), typeof(string));
-        Test(() => reader.GetInt64("STR"), "STR", SqlColumnType.String, 
typeof(long), typeof(string));
-
-        static void Test(TestDelegate testDelegate, string columnName, 
SqlColumnType columnType, Type expectedType, Type actualType)
+        Test(() => reader.GetBoolean("STR"), "STR", ColumnType.String, 
typeof(bool), typeof(string));
+        Test(() => reader.GetString("INT8"), "INT8", ColumnType.Int8, 
typeof(string), typeof(sbyte));
+        Test(() => reader.GetGuid("INT16"), "INT16", ColumnType.Int16, 
typeof(Guid), typeof(short));
+        Test(() => reader.GetDateTime("INT32"), "INT32", ColumnType.Int32, 
typeof(DateTime), typeof(int));
+        Test(() => reader.GetFloat("INT64"), "INT64", ColumnType.Int64, 
typeof(float), typeof(long));
+        Test(() => reader.GetDouble("INT64"), "INT64", ColumnType.Int64, 
typeof(double), typeof(long));
+        Test(() => reader.GetString("INT64"), "INT64", ColumnType.Int64, 
typeof(string), typeof(long));
+        Test(() => reader.GetByte("STR"), "STR", ColumnType.String, 
typeof(byte), typeof(string));
+        Test(() => reader.GetBytes("STR", 0, null!, 0, 0), "STR", 
ColumnType.String, typeof(byte[]), typeof(string));
+        Test(() => reader.GetDecimal("STR"), "STR", ColumnType.String, 
typeof(decimal), typeof(string));
+        Test(() => reader.GetInt16("STR"), "STR", ColumnType.String, 
typeof(short), typeof(string));
+        Test(() => reader.GetInt32("STR"), "STR", ColumnType.String, 
typeof(int), typeof(string));
+        Test(() => reader.GetInt64("STR"), "STR", ColumnType.String, 
typeof(long), typeof(string));
+
+        static void Test(TestDelegate testDelegate, string columnName, 
ColumnType columnType, Type expectedType, Type actualType)
         {
             var ex = Assert.Throws<InvalidCastException>(testDelegate);
 
diff --git a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
index 9fe2011b90..531172cb7e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlTests.cs
@@ -299,7 +299,7 @@ namespace Apache.Ignite.Tests.Sql
             Assert.AreEqual("PUBLIC", columns[0].Origin!.SchemaName);
             Assert.AreEqual("TESTDDLDML", columns[0].Origin!.TableName);
             Assert.IsTrue(columns[0].Nullable);
-            Assert.AreEqual(SqlColumnType.String, columns[0].Type);
+            Assert.AreEqual(ColumnType.String, columns[0].Type);
             Assert.AreEqual(int.MinValue, columns[0].Scale);
             Assert.AreEqual(65536, columns[0].Precision);
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Table/Serialization/ObjectSerializerHandlerTests.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Table/Serialization/ObjectSerializerHandlerTests.cs
index ffb1a946a0..f1d60d0479 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Table/Serialization/ObjectSerializerHandlerTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Table/Serialization/ObjectSerializerHandlerTests.cs
@@ -18,8 +18,8 @@
 namespace Apache.Ignite.Tests.Table.Serialization
 {
     using System;
+    using Ignite.Sql;
     using Internal.Buffers;
-    using Internal.Proto;
     using Internal.Proto.BinaryTuple;
     using Internal.Proto.MsgPack;
     using Internal.Table;
@@ -34,8 +34,8 @@ namespace Apache.Ignite.Tests.Table.Serialization
     {
         private static readonly Schema Schema = new(1, 1, new[]
         {
-            new Column("Key", ClientDataType.Int64, IsNullable: false, 
IsColocation: true, IsKey: true, SchemaIndex: 0, Scale: 0, Precision: 0),
-            new Column("Val", ClientDataType.String, IsNullable: false, 
IsColocation: false, IsKey: false, SchemaIndex: 1, Scale: 0, Precision: 0)
+            new Column("Key", ColumnType.Int64, IsNullable: false, 
IsColocation: true, IsKey: true, SchemaIndex: 0, Scale: 0, Precision: 0),
+            new Column("Val", ColumnType.String, IsNullable: false, 
IsColocation: false, IsKey: false, SchemaIndex: 1, Scale: 0, Precision: 0)
         });
 
         [Test]
diff --git a/modules/platforms/dotnet/Apache.Ignite.sln.DotSettings 
b/modules/platforms/dotnet/Apache.Ignite.sln.DotSettings
index 54f20e51da..23b1f4e508 100644
--- a/modules/platforms/dotnet/Apache.Ignite.sln.DotSettings
+++ b/modules/platforms/dotnet/Apache.Ignite.sln.DotSettings
@@ -16,6 +16,7 @@
 -->
 
 <wpf:ResourceDictionary xml:space="preserve" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"; 
xmlns:s="clr-namespace:System;assembly=mscorlib" 
xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" 
xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation";>
+       <s:String 
x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault/@EntryIndexedValue">ERROR</s:String>
        <s:Int64 
x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_LIMIT/@EntryValue">140</s:Int64>
        <s:Boolean 
x:Key="/Default/CodeStyle/CSharpUsing/AddImportsToDeepestScope/@EntryValue">True</s:Boolean>
        <s:String 
x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IL/@EntryIndexedValue">IL</s:String>
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/ResultSelector.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/ResultSelector.cs
index 59e9c80a48..bafa7fa49b 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/ResultSelector.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Linq/ResultSelector.cs
@@ -87,7 +87,7 @@ internal static class ResultSelector
                     static k => EmitMemberInitReader<T>(k.Target, k.Columns, 
k.Options));
         }
 
-        if (columns.Count == 1 && (typeof(T).ToSqlColumnType() is not null || 
typeof(T).IsEnum))
+        if (columns.Count == 1 && (typeof(T).ToColumnType() is not null || 
typeof(T).IsEnum))
         {
             var singleColumnCacheKey = new 
ResultSelectorCacheKey<Type>(typeof(T), columns, options);
 
@@ -354,7 +354,7 @@ internal static class ResultSelector
         il.Emit(OpCodes.Ldarg_1); // Reader.
         il.Emit(OpCodes.Ldc_I4, index); // Index.
 
-        if (col.Type == SqlColumnType.Decimal)
+        if (col.Type == ColumnType.Decimal)
         {
             il.Emit(OpCodes.Ldc_I4, col.Scale);
         }
@@ -388,7 +388,7 @@ internal static class ResultSelector
         il.Emit(OpCodes.Ldarg_1); // Reader.
         il.Emit(OpCodes.Ldc_I4, colIndex); // Index.
 
-        if (col.Type == SqlColumnType.Decimal)
+        if (col.Type == ColumnType.Decimal)
         {
             il.Emit(OpCodes.Ldc_I4, col.Scale);
         }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleBuilder.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleBuilder.cs
index caee7cd4f9..85535194af 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleBuilder.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleBuilder.cs
@@ -24,6 +24,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
     using System.Numerics;
     using System.Runtime.InteropServices;
     using Buffers;
+    using Ignite.Sql;
     using NodaTime;
     using Table;
 
@@ -877,7 +878,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
         /// <param name="colType">Column type.</param>
         /// <param name="scale">Decimal scale.</param>
         /// <param name="precision">Precision.</param>
-        public void AppendObject(object? value, ClientDataType colType, int 
scale = 0, int precision = TemporalTypes.MaxTimePrecision)
+        public void AppendObject(object? value, ColumnType colType, int scale 
= 0, int precision = TemporalTypes.MaxTimePrecision)
         {
             if (value == null)
             {
@@ -887,67 +888,67 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
 
             switch (colType)
             {
-                case ClientDataType.Int8:
+                case ColumnType.Int8:
                     AppendByte((sbyte)value);
                     break;
 
-                case ClientDataType.Int16:
+                case ColumnType.Int16:
                     AppendShort((short)value);
                     break;
 
-                case ClientDataType.Int32:
+                case ColumnType.Int32:
                     AppendInt((int)value);
                     break;
 
-                case ClientDataType.Int64:
+                case ColumnType.Int64:
                     AppendLong((long)value);
                     break;
 
-                case ClientDataType.Float:
+                case ColumnType.Float:
                     AppendFloat((float)value);
                     break;
 
-                case ClientDataType.Double:
+                case ColumnType.Double:
                     AppendDouble((double)value);
                     break;
 
-                case ClientDataType.Uuid:
+                case ColumnType.Uuid:
                     AppendGuid((Guid)value);
                     break;
 
-                case ClientDataType.String:
+                case ColumnType.String:
                     AppendString((string)value);
                     break;
 
-                case ClientDataType.Bytes:
+                case ColumnType.ByteArray:
                     AppendBytes((byte[])value);
                     break;
 
-                case ClientDataType.BitMask:
+                case ColumnType.Bitmask:
                     AppendBitmask((BitArray)value);
                     break;
 
-                case ClientDataType.Decimal:
+                case ColumnType.Decimal:
                     AppendDecimal((decimal)value, scale);
                     break;
 
-                case ClientDataType.Number:
+                case ColumnType.Number:
                     AppendNumber((BigInteger)value);
                     break;
 
-                case ClientDataType.Date:
+                case ColumnType.Date:
                     AppendDate((LocalDate)value);
                     break;
 
-                case ClientDataType.Time:
+                case ColumnType.Time:
                     AppendTime((LocalTime)value, precision);
                     break;
 
-                case ClientDataType.DateTime:
+                case ColumnType.Datetime:
                     AppendDateTime((LocalDateTime)value, precision);
                     break;
 
-                case ClientDataType.Timestamp:
+                case ColumnType.Timestamp:
                     AppendTimestamp((Instant)value, precision);
                     break;
 
@@ -976,83 +977,83 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
                     break;
 
                 case int i32:
-                    AppendTypeAndScale(ClientDataType.Int32);
+                    AppendTypeAndScale(ColumnType.Int32);
                     AppendInt(i32);
                     break;
 
                 case long i64:
-                    AppendTypeAndScale(ClientDataType.Int64);
+                    AppendTypeAndScale(ColumnType.Int64);
                     AppendLong(i64);
                     break;
 
                 case string str:
-                    AppendTypeAndScale(ClientDataType.String);
+                    AppendTypeAndScale(ColumnType.String);
                     AppendString(str);
                     break;
 
                 case Guid uuid:
-                    AppendTypeAndScale(ClientDataType.Uuid);
+                    AppendTypeAndScale(ColumnType.Uuid);
                     AppendGuid(uuid);
                     break;
 
                 case sbyte i8:
-                    AppendTypeAndScale(ClientDataType.Int8);
+                    AppendTypeAndScale(ColumnType.Int8);
                     AppendByte(i8);
                     break;
 
                 case short i16:
-                    AppendTypeAndScale(ClientDataType.Int16);
+                    AppendTypeAndScale(ColumnType.Int16);
                     AppendShort(i16);
                     break;
 
                 case float f32:
-                    AppendTypeAndScale(ClientDataType.Float);
+                    AppendTypeAndScale(ColumnType.Float);
                     AppendFloat(f32);
                     break;
 
                 case double f64:
-                    AppendTypeAndScale(ClientDataType.Double);
+                    AppendTypeAndScale(ColumnType.Double);
                     AppendDouble(f64);
                     break;
 
                 case byte[] bytes:
-                    AppendTypeAndScale(ClientDataType.Bytes);
+                    AppendTypeAndScale(ColumnType.ByteArray);
                     AppendBytes(bytes);
                     break;
 
                 case decimal dec:
                     var scale = GetDecimalScale(dec);
-                    AppendTypeAndScale(ClientDataType.Decimal, scale);
+                    AppendTypeAndScale(ColumnType.Decimal, scale);
                     AppendDecimal(dec, scale);
                     break;
 
                 case BigInteger bigInt:
-                    AppendTypeAndScale(ClientDataType.Number);
+                    AppendTypeAndScale(ColumnType.Number);
                     AppendNumber(bigInt);
                     break;
 
                 case LocalDate localDate:
-                    AppendTypeAndScale(ClientDataType.Date);
+                    AppendTypeAndScale(ColumnType.Date);
                     AppendDate(localDate);
                     break;
 
                 case LocalTime localTime:
-                    AppendTypeAndScale(ClientDataType.Time);
+                    AppendTypeAndScale(ColumnType.Time);
                     AppendTime(localTime, timePrecision);
                     break;
 
                 case LocalDateTime localDateTime:
-                    AppendTypeAndScale(ClientDataType.DateTime);
+                    AppendTypeAndScale(ColumnType.Datetime);
                     AppendDateTime(localDateTime, timePrecision);
                     break;
 
                 case Instant instant:
-                    AppendTypeAndScale(ClientDataType.Timestamp);
+                    AppendTypeAndScale(ColumnType.Timestamp);
                     AppendTimestamp(instant, timestampPrecision);
                     break;
 
                 case BitArray bitArray:
-                    AppendTypeAndScale(ClientDataType.BitMask);
+                    AppendTypeAndScale(ColumnType.Bitmask);
                     AppendBitmask(bitArray);
                     break;
 
@@ -1349,7 +1350,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
             buf[1..].CopyTo(GetSpan(3));
         }
 
-        private void AppendTypeAndScale(ClientDataType type, int scale = 0)
+        private void AppendTypeAndScale(ColumnType type, int scale = 0)
         {
             AppendInt((int)type);
             AppendInt(scale);
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleReader.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleReader.cs
index fdb1ac0d69..017fa77e02 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleReader.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/BinaryTuple/BinaryTupleReader.cs
@@ -22,6 +22,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
     using System.Collections;
     using System.Diagnostics;
     using System.Numerics;
+    using Ignite.Sql;
     using NodaTime;
 
     /// <summary>
@@ -477,7 +478,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
         /// <param name="columnType">Column type.</param>
         /// <param name="scale">Column decimal scale.</param>
         /// <returns>Value.</returns>
-        public object? GetObject(int index, ClientDataType columnType, int 
scale = 0)
+        public object? GetObject(int index, ColumnType columnType, int scale = 
0)
         {
             if (IsNull(index))
             {
@@ -486,22 +487,25 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
 
             return columnType switch
             {
-                ClientDataType.Int8 => GetByte(index),
-                ClientDataType.Int16 => GetShort(index),
-                ClientDataType.Int32 => GetInt(index),
-                ClientDataType.Int64 => GetLong(index),
-                ClientDataType.Float => GetFloat(index),
-                ClientDataType.Double => GetDouble(index),
-                ClientDataType.Uuid => GetGuid(index),
-                ClientDataType.String => GetString(index),
-                ClientDataType.Decimal => GetDecimal(index, scale),
-                ClientDataType.Bytes => GetBytes(index),
-                ClientDataType.BitMask => GetBitmask(index),
-                ClientDataType.Date => GetDate(index),
-                ClientDataType.Time => GetTime(index),
-                ClientDataType.DateTime => GetDateTime(index),
-                ClientDataType.Timestamp => GetTimestamp(index),
-                ClientDataType.Number => GetNumber(index),
+                ColumnType.Int8 => GetByte(index),
+                ColumnType.Int16 => GetShort(index),
+                ColumnType.Int32 => GetInt(index),
+                ColumnType.Int64 => GetLong(index),
+                ColumnType.Float => GetFloat(index),
+                ColumnType.Double => GetDouble(index),
+                ColumnType.Uuid => GetGuid(index),
+                ColumnType.String => GetString(index),
+                ColumnType.Decimal => GetDecimal(index, scale),
+                ColumnType.ByteArray => GetBytes(index),
+                ColumnType.Bitmask => GetBitmask(index),
+                ColumnType.Date => GetDate(index),
+                ColumnType.Time => GetTime(index),
+                ColumnType.Datetime => GetDateTime(index),
+                ColumnType.Timestamp => GetTimestamp(index),
+                ColumnType.Number => GetNumber(index),
+                ColumnType.Boolean => GetByteAsBool(index),
+                ColumnType.Period => GetPeriod(index),
+                ColumnType.Duration => GetDuration(index),
                 _ => throw new 
IgniteClientException(ErrorGroups.Client.Protocol, "Unsupported type: " + 
columnType)
             };
         }
@@ -518,7 +522,7 @@ namespace Apache.Ignite.Internal.Proto.BinaryTuple
                 return null;
             }
 
-            var type = (ClientDataType)GetInt(index);
+            var type = (ColumnType)GetInt(index);
             var scale = GetInt(index + 1);
 
             return GetObject(index + 2, type, scale);
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataType.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataType.cs
deleted file mode 100644
index b21edddae7..0000000000
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataType.cs
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * 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.
- */
-
-namespace Apache.Ignite.Internal.Proto
-{
-    using System.Diagnostics.CodeAnalysis;
-
-    /// <summary>
-    /// Client data types.
-    /// </summary>
-    [SuppressMessage("Microsoft.Naming", 
"CA1720:IdentifiersShouldNotContainTypeNames", Justification = "Internal 
types.")]
-    internal enum ClientDataType
-    {
-        /// <summary> None. </summary>
-        None = 0,
-
-        /// <summary> Byte. </summary>
-        Int8 = 1,
-
-        /// <summary> Short. </summary>
-        Int16 = 2,
-
-        /// <summary> Int. </summary>
-        Int32 = 3,
-
-        /// <summary> Long. </summary>
-        Int64 = 4,
-
-        /// <summary> Float. </summary>
-        Float = 5,
-
-        /// <summary> Double. </summary>
-        Double = 6,
-
-        /// <summary> Decimal. </summary>
-        Decimal = 7,
-
-        /// <summary> UUID / Guid. </summary>
-        Uuid = 8,
-
-        /// <summary> String. </summary>
-        String = 9,
-
-        /// <summary> Byte array. </summary>
-        Bytes = 10,
-
-        /// <summary> BitMask. </summary>
-        BitMask = 11,
-
-        /// <summary> Local date. </summary>
-        Date = 12,
-
-        /// <summary> Local time. </summary>
-        Time = 13,
-
-        /// <summary> Local date and time. </summary>
-        DateTime = 14,
-
-        /// <summary> Timestamp (instant). </summary>
-        Timestamp = 15,
-
-        /// <summary> Number (BigInt). </summary>
-        Number = 16,
-    }
-}
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataTypeExtensions.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataTypeExtensions.cs
deleted file mode 100644
index 5c6a73673e..0000000000
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientDataTypeExtensions.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.
- */
-
-namespace Apache.Ignite.Internal.Proto
-{
-    using System;
-    using System.Collections;
-    using System.Numerics;
-    using NodaTime;
-
-    /// <summary>
-    /// Extension methods for <see cref="ClientDataType"/>.
-    /// </summary>
-    internal static class ClientDataTypeExtensions
-    {
-        /// <summary>
-        /// Converts client data type to <see cref="Type"/>.
-        /// </summary>
-        /// <param name="clientDataType">Client data type.</param>
-        /// <returns>Corresponding CLR type.</returns>
-        public static Type ToType(this ClientDataType clientDataType) => 
clientDataType switch
-        {
-            ClientDataType.Int8 => typeof(sbyte),
-            ClientDataType.Int16 => typeof(short),
-            ClientDataType.Int32 => typeof(int),
-            ClientDataType.Int64 => typeof(long),
-            ClientDataType.Float => typeof(float),
-            ClientDataType.Double => typeof(double),
-            ClientDataType.Decimal => typeof(decimal),
-            ClientDataType.Uuid => typeof(Guid),
-            ClientDataType.String => typeof(string),
-            ClientDataType.Bytes => typeof(byte[]),
-            ClientDataType.BitMask => typeof(BitArray),
-            ClientDataType.Date => typeof(LocalDate),
-            ClientDataType.Time => typeof(LocalTime),
-            ClientDataType.DateTime => typeof(LocalDateTime),
-            ClientDataType.Timestamp => typeof(Instant),
-            ClientDataType.Number => typeof(BigInteger),
-            _ => throw new ArgumentOutOfRangeException(nameof(clientDataType), 
clientDataType, null)
-        };
-    }
-}
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientOpExtensions.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientOpExtensions.cs
index 3233c0f958..9f8c5b3616 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientOpExtensions.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/ClientOpExtensions.cs
@@ -65,7 +65,8 @@ namespace Apache.Ignite.Internal.Proto
                 ClientOp.PartitionAssignmentGet => null,
 
                 // Do not return null from default arm intentionally so we 
don't forget to update this when new ClientOp values are added.
-                _ => throw new ArgumentOutOfRangeException(nameof(op), op, 
message: null)
+                // ReSharper disable once PatternIsRedundant
+                ClientOp.None or _ => throw new 
ArgumentOutOfRangeException(nameof(op), op, message: null)
             };
         }
     }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/MsgPack/MsgPackReader.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/MsgPack/MsgPackReader.cs
index 928454166d..d4dabf717b 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/MsgPack/MsgPackReader.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Proto/MsgPack/MsgPackReader.cs
@@ -21,6 +21,7 @@ using System;
 using System.Buffers.Binary;
 using System.IO;
 using BinaryTuple;
+using Ignite.Sql;
 
 /// <summary>
 /// MsgPack reader.
@@ -376,7 +377,7 @@ internal ref struct MsgPackReader
     }
 
     /// <summary>
-    /// Reads <see cref="ClientDataType"/> and value.
+    /// Reads <see cref="ColumnType"/> and value.
     /// </summary>
     /// <returns>Value.</returns>
     public object? ReadObjectFromBinaryTuple()
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnMetadata.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnMetadata.cs
index 0abb31a611..15261e16fb 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnMetadata.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnMetadata.cs
@@ -19,6 +19,6 @@ namespace Apache.Ignite.Internal.Sql
 {
     using Ignite.Sql;
 
-    internal sealed record ColumnMetadata(string Name, SqlColumnType Type, int 
Precision, int Scale, bool Nullable, IColumnOrigin? Origin)
+    internal sealed record ColumnMetadata(string Name, ColumnType Type, int 
Precision, int Scale, bool Nullable, IColumnOrigin? Origin)
         : IColumnMetadata;
 }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnTypeExtensions.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnTypeExtensions.cs
new file mode 100644
index 0000000000..470d120783
--- /dev/null
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ColumnTypeExtensions.cs
@@ -0,0 +1,145 @@
+/*
+ * 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.
+ */
+
+namespace Apache.Ignite.Internal.Sql;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Numerics;
+using Ignite.Sql;
+using NodaTime;
+
+/// <summary>
+/// Extension methods for <see cref="ColumnType"/>.
+/// </summary>
+internal static class ColumnTypeExtensions
+{
+    private static readonly IReadOnlyDictionary<Type, ColumnType> ClrToSql =
+        Enum.GetValues<ColumnType>().ToDictionary(x => x.ToClrType(), x => x);
+
+    private static readonly IReadOnlyDictionary<Type, string> ClrToSqlName =
+        Enum.GetValues<ColumnType>()
+            .Where(x => x != ColumnType.Period && x != ColumnType.Duration)
+            .ToDictionary(x => x.ToClrType(), x => x.ToSqlTypeName());
+
+    /// <summary>
+    /// Gets corresponding .NET type.
+    /// </summary>
+    /// <param name="columnType">SQL column type.</param>
+    /// <returns>CLR type.</returns>
+    public static Type ToClrType(this ColumnType columnType) => columnType 
switch
+    {
+        ColumnType.Boolean => typeof(bool),
+        ColumnType.Int8 => typeof(sbyte),
+        ColumnType.Int16 => typeof(short),
+        ColumnType.Int32 => typeof(int),
+        ColumnType.Int64 => typeof(long),
+        ColumnType.Float => typeof(float),
+        ColumnType.Double => typeof(double),
+        ColumnType.Decimal => typeof(decimal),
+        ColumnType.Date => typeof(LocalDate),
+        ColumnType.Time => typeof(LocalTime),
+        ColumnType.Datetime => typeof(LocalDateTime),
+        ColumnType.Timestamp => typeof(Instant),
+        ColumnType.Uuid => typeof(Guid),
+        ColumnType.Bitmask => typeof(BitArray),
+        ColumnType.String => typeof(string),
+        ColumnType.ByteArray => typeof(byte[]),
+        ColumnType.Period => typeof(Period),
+        ColumnType.Duration => typeof(Duration),
+        ColumnType.Number => typeof(BigInteger),
+        _ => throw new InvalidOperationException($"Invalid 
{nameof(ColumnType)}: {columnType}")
+    };
+
+    /// <summary>
+    /// Gets corresponding .NET type.
+    /// </summary>
+    /// <param name="columnType">SQL column type.</param>
+    /// <param name="nullable">Whether the SQL column is nullable.</param>
+    /// <returns>CLR type.</returns>
+    public static Type ToClrType(this ColumnType columnType, bool nullable)
+    {
+        var clrType = columnType.ToClrType();
+
+        return nullable && clrType.IsValueType ? 
typeof(Nullable<>).MakeGenericType(clrType) : clrType;
+    }
+
+    /// <summary>
+    /// Gets corresponding SQL type name.
+    /// </summary>
+    /// <param name="columnType">SQL column type.</param>
+    /// <returns>SQL type name.</returns>
+    public static string ToSqlTypeName(this ColumnType columnType) => 
columnType switch
+    {
+        ColumnType.Boolean => "boolean",
+        ColumnType.Int8 => "tinyint",
+        ColumnType.Int16 => "smallint",
+        ColumnType.Int32 => "int",
+        ColumnType.Int64 => "bigint",
+        ColumnType.Float => "real",
+        ColumnType.Double => "double",
+        ColumnType.Decimal => "decimal",
+        ColumnType.Date => "date",
+        ColumnType.Time => "time",
+        ColumnType.Datetime => "timestamp",
+        ColumnType.Timestamp => "timestamp_tz",
+        ColumnType.Uuid => "uuid",
+        ColumnType.Bitmask => "bitmap",
+        ColumnType.String => "varchar",
+        ColumnType.ByteArray => "varbinary",
+        ColumnType.Number => "numeric",
+        ColumnType.Period => "interval",
+        ColumnType.Duration => "duration",
+        _ => throw new InvalidOperationException($"Unsupported 
{nameof(ColumnType)}: {columnType}")
+    };
+
+    /// <summary>
+    /// Gets corresponding SQL type name.
+    /// </summary>
+    /// <param name="type">CLR type.</param>
+    /// <returns>SQL type name.</returns>
+    public static string ToSqlTypeName(this Type type) =>
+        ClrToSqlName.TryGetValue(Nullable.GetUnderlyingType(type) ?? type, out 
var sqlTypeName)
+            ? sqlTypeName
+            : throw new InvalidOperationException($"Type is not supported in 
SQL: {type}");
+
+    /// <summary>
+    /// Gets corresponding <see cref="ColumnType"/>.
+    /// </summary>
+    /// <param name="type">Type.</param>
+    /// <returns>SQL column type, or null.</returns>
+    public static ColumnType? ToColumnType(this Type type) =>
+        ClrToSql.TryGetValue(Nullable.GetUnderlyingType(type) ?? type, out var 
sqlType) ? sqlType : null;
+
+    /// <summary>
+    /// Gets a value indicating whether specified column type is an integer of 
any size (int8 to int64).
+    /// </summary>
+    /// <param name="columnType">SQL column type.</param>
+    /// <returns>Whether the type is integer.</returns>
+    public static bool IsAnyInt(this ColumnType columnType) =>
+        columnType is ColumnType.Int8 or ColumnType.Int16 or ColumnType.Int32 
or ColumnType.Int64;
+
+    /// <summary>
+    /// Gets a value indicating whether specified column type is a floating 
point of any size (float32 to float64).
+    /// </summary>
+    /// <param name="columnType">SQL column type.</param>
+    /// <returns>Whether the type is floating point.</returns>
+    public static bool IsAnyFloat(this ColumnType columnType) =>
+        columnType is ColumnType.Float or ColumnType.Double;
+}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
index 5d33a64731..dd08381ea1 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
@@ -292,7 +292,7 @@ namespace Apache.Ignite.Internal.Sql
 
                 var name = reader.ReadString();
                 var nullable = reader.ReadBoolean();
-                var type = (SqlColumnType)reader.ReadInt32();
+                var type = (ColumnType)reader.ReadInt32();
                 var scale = reader.ReadInt32();
                 var precision = reader.ReadInt32();
 
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
index c977285951..0b940d2280 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
@@ -93,25 +93,25 @@ namespace Apache.Ignite.Internal.Sql
 
             return col.Type switch
             {
-                SqlColumnType.Boolean => reader.GetByteAsBool(idx),
-                SqlColumnType.Int8 => reader.GetByte(idx),
-                SqlColumnType.Int16 => reader.GetShort(idx),
-                SqlColumnType.Int32 => reader.GetInt(idx),
-                SqlColumnType.Int64 => reader.GetLong(idx),
-                SqlColumnType.Float => reader.GetFloat(idx),
-                SqlColumnType.Double => reader.GetDouble(idx),
-                SqlColumnType.Decimal => reader.GetDecimal(idx, col.Scale),
-                SqlColumnType.Date => reader.GetDate(idx),
-                SqlColumnType.Time => reader.GetTime(idx),
-                SqlColumnType.Datetime => reader.GetDateTime(idx),
-                SqlColumnType.Timestamp => reader.GetTimestamp(idx),
-                SqlColumnType.Uuid => reader.GetGuid(idx),
-                SqlColumnType.Bitmask => reader.GetBitmask(idx),
-                SqlColumnType.String => reader.GetString(idx),
-                SqlColumnType.ByteArray => reader.GetBytes(idx),
-                SqlColumnType.Period => reader.GetPeriod(idx),
-                SqlColumnType.Duration => reader.GetDuration(idx),
-                SqlColumnType.Number => reader.GetNumber(idx),
+                ColumnType.Boolean => reader.GetByteAsBool(idx),
+                ColumnType.Int8 => reader.GetByte(idx),
+                ColumnType.Int16 => reader.GetShort(idx),
+                ColumnType.Int32 => reader.GetInt(idx),
+                ColumnType.Int64 => reader.GetLong(idx),
+                ColumnType.Float => reader.GetFloat(idx),
+                ColumnType.Double => reader.GetDouble(idx),
+                ColumnType.Decimal => reader.GetDecimal(idx, col.Scale),
+                ColumnType.Date => reader.GetDate(idx),
+                ColumnType.Time => reader.GetTime(idx),
+                ColumnType.Datetime => reader.GetDateTime(idx),
+                ColumnType.Timestamp => reader.GetTimestamp(idx),
+                ColumnType.Uuid => reader.GetGuid(idx),
+                ColumnType.Bitmask => reader.GetBitmask(idx),
+                ColumnType.String => reader.GetString(idx),
+                ColumnType.ByteArray => reader.GetBytes(idx),
+                ColumnType.Period => reader.GetPeriod(idx),
+                ColumnType.Duration => reader.GetDuration(idx),
+                ColumnType.Number => reader.GetNumber(idx),
                 _ => throw new ArgumentOutOfRangeException(nameof(col.Type), 
col.Type, "Unknown SQL column type.")
             };
         }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/SqlColumnTypeExtensions.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/SqlColumnTypeExtensions.cs
deleted file mode 100644
index 9b331d05c5..0000000000
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/SqlColumnTypeExtensions.cs
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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.
- */
-
-namespace Apache.Ignite.Internal.Sql;
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Numerics;
-using Ignite.Sql;
-using NodaTime;
-
-/// <summary>
-/// Extension methods for <see cref="SqlColumnType"/>.
-/// </summary>
-internal static class SqlColumnTypeExtensions
-{
-    private static readonly IReadOnlyDictionary<Type, SqlColumnType> ClrToSql =
-        Enum.GetValues<SqlColumnType>().ToDictionary(x => x.ToClrType(), x => 
x);
-
-    private static readonly IReadOnlyDictionary<Type, string> ClrToSqlName =
-        Enum.GetValues<SqlColumnType>()
-            .Where(x => x != SqlColumnType.Period && x != 
SqlColumnType.Duration)
-            .ToDictionary(x => x.ToClrType(), x => x.ToSqlTypeName());
-
-    /// <summary>
-    /// Gets corresponding .NET type.
-    /// </summary>
-    /// <param name="sqlColumnType">SQL column type.</param>
-    /// <returns>CLR type.</returns>
-    public static Type ToClrType(this SqlColumnType sqlColumnType) => 
sqlColumnType switch
-    {
-        SqlColumnType.Boolean => typeof(bool),
-        SqlColumnType.Int8 => typeof(sbyte),
-        SqlColumnType.Int16 => typeof(short),
-        SqlColumnType.Int32 => typeof(int),
-        SqlColumnType.Int64 => typeof(long),
-        SqlColumnType.Float => typeof(float),
-        SqlColumnType.Double => typeof(double),
-        SqlColumnType.Decimal => typeof(decimal),
-        SqlColumnType.Date => typeof(LocalDate),
-        SqlColumnType.Time => typeof(LocalTime),
-        SqlColumnType.Datetime => typeof(LocalDateTime),
-        SqlColumnType.Timestamp => typeof(Instant),
-        SqlColumnType.Uuid => typeof(Guid),
-        SqlColumnType.Bitmask => typeof(BitArray),
-        SqlColumnType.String => typeof(string),
-        SqlColumnType.ByteArray => typeof(byte[]),
-        SqlColumnType.Period => typeof(Period),
-        SqlColumnType.Duration => typeof(Duration),
-        SqlColumnType.Number => typeof(BigInteger),
-        _ => throw new InvalidOperationException($"Invalid 
{nameof(SqlColumnType)}: {sqlColumnType}")
-    };
-
-    /// <summary>
-    /// Gets corresponding .NET type.
-    /// </summary>
-    /// <param name="sqlColumnType">SQL column type.</param>
-    /// <param name="nullable">Whether the SQL column is nullable.</param>
-    /// <returns>CLR type.</returns>
-    public static Type ToClrType(this SqlColumnType sqlColumnType, bool 
nullable)
-    {
-        var clrType = sqlColumnType.ToClrType();
-
-        return nullable && clrType.IsValueType ? 
typeof(Nullable<>).MakeGenericType(clrType) : clrType;
-    }
-
-    /// <summary>
-    /// Gets corresponding SQL type name.
-    /// </summary>
-    /// <param name="sqlColumnType">SQL column type.</param>
-    /// <returns>SQL type name.</returns>
-    public static string ToSqlTypeName(this SqlColumnType sqlColumnType) => 
sqlColumnType switch
-    {
-        SqlColumnType.Boolean => "boolean",
-        SqlColumnType.Int8 => "tinyint",
-        SqlColumnType.Int16 => "smallint",
-        SqlColumnType.Int32 => "int",
-        SqlColumnType.Int64 => "bigint",
-        SqlColumnType.Float => "real",
-        SqlColumnType.Double => "double",
-        SqlColumnType.Decimal => "decimal",
-        SqlColumnType.Date => "date",
-        SqlColumnType.Time => "time",
-        SqlColumnType.Datetime => "timestamp",
-        SqlColumnType.Timestamp => "timestamp_tz",
-        SqlColumnType.Uuid => "uuid",
-        SqlColumnType.Bitmask => "bitmap",
-        SqlColumnType.String => "varchar",
-        SqlColumnType.ByteArray => "varbinary",
-        SqlColumnType.Number => "numeric",
-        _ => throw new InvalidOperationException($"Unsupported 
{nameof(SqlColumnType)}: {sqlColumnType}")
-    };
-
-    /// <summary>
-    /// Gets corresponding SQL type name.
-    /// </summary>
-    /// <param name="type">CLR type.</param>
-    /// <returns>SQL type name.</returns>
-    public static string ToSqlTypeName(this Type type) =>
-        ClrToSqlName.TryGetValue(Nullable.GetUnderlyingType(type) ?? type, out 
var sqlTypeName)
-            ? sqlTypeName
-            : throw new InvalidOperationException($"Type is not supported in 
SQL: {type}");
-
-    /// <summary>
-    /// Gets corresponding <see cref="SqlColumnType"/>.
-    /// </summary>
-    /// <param name="type">Type.</param>
-    /// <returns>SQL column type, or null.</returns>
-    public static SqlColumnType? ToSqlColumnType(this Type type) =>
-        ClrToSql.TryGetValue(Nullable.GetUnderlyingType(type) ?? type, out var 
sqlType) ? sqlType : null;
-
-    /// <summary>
-    /// Gets a value indicating whether specified column type is an integer of 
any size (int8 to int64).
-    /// </summary>
-    /// <param name="sqlColumnType">SQL column type.</param>
-    /// <returns>Whether the type is integer.</returns>
-    public static bool IsAnyInt(this SqlColumnType sqlColumnType) =>
-        sqlColumnType is SqlColumnType.Int8 or SqlColumnType.Int16 or 
SqlColumnType.Int32 or SqlColumnType.Int64;
-
-    /// <summary>
-    /// Gets a value indicating whether specified column type is a floating 
point of any size (float32 to float64).
-    /// </summary>
-    /// <param name="sqlColumnType">SQL column type.</param>
-    /// <returns>Whether the type is floating point.</returns>
-    public static bool IsAnyFloat(this SqlColumnType sqlColumnType) =>
-        sqlColumnType is SqlColumnType.Float or SqlColumnType.Double;
-}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Column.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Column.cs
index 0db3ab6972..a4686e699f 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Column.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Column.cs
@@ -15,20 +15,19 @@
  * limitations under the License.
  */
 
-namespace Apache.Ignite.Internal.Table
-{
-    using Proto;
+namespace Apache.Ignite.Internal.Table;
 
-    /// <summary>
-    /// Schema column.
-    /// </summary>
-    internal record Column(
-        string Name,
-        ClientDataType Type,
-        bool IsNullable,
-        bool IsColocation,
-        bool IsKey,
-        int SchemaIndex,
-        int Scale,
-        int Precision);
-}
+using Ignite.Sql;
+
+/// <summary>
+/// Schema column.
+/// </summary>
+internal record Column(
+    string Name,
+    ColumnType Type,
+    bool IsNullable,
+    bool IsColocation,
+    bool IsKey,
+    int SchemaIndex,
+    int Scale,
+    int Precision);
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ObjectSerializerHandler.cs
 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ObjectSerializerHandler.cs
index 040b58bddb..c9fd1db517 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ObjectSerializerHandler.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/ObjectSerializerHandler.cs
@@ -25,9 +25,10 @@ namespace Apache.Ignite.Internal.Table.Serialization
     using System.Linq;
     using System.Reflection;
     using System.Reflection.Emit;
-    using Proto;
+    using Ignite.Sql;
     using Proto.BinaryTuple;
     using Proto.MsgPack;
+    using Sql;
 
     /// <summary>
     /// Object serializer handler.
@@ -102,11 +103,11 @@ namespace Apache.Ignite.Internal.Table.Serialization
                 il.Emit(OpCodes.Ldarg_0); // writer
                 il.Emit(OpCodes.Ldarg_2); // value
 
-                if (col.Type == ClientDataType.Decimal)
+                if (col.Type == ColumnType.Decimal)
                 {
                     il.Emit(OpCodes.Ldc_I4, col.Scale);
                 }
-                else if (col.Type is ClientDataType.Time or 
ClientDataType.DateTime or ClientDataType.Timestamp)
+                else if (col.Type is ColumnType.Time or ColumnType.Datetime or 
ColumnType.Timestamp)
                 {
                     il.Emit(OpCodes.Ldc_I4, col.Precision);
                 }
@@ -145,11 +146,11 @@ namespace Apache.Ignite.Internal.Table.Serialization
                     il.Emit(OpCodes.Ldarg_2); // record
                     il.Emit(OpCodes.Ldfld, fieldInfo);
 
-                    if (col.Type == ClientDataType.Decimal)
+                    if (col.Type == ColumnType.Decimal)
                     {
                         il.Emit(OpCodes.Ldc_I4, col.Scale);
                     }
-                    else if (col.Type is ClientDataType.Time or 
ClientDataType.DateTime or ClientDataType.Timestamp)
+                    else if (col.Type is ColumnType.Time or 
ColumnType.Datetime or ColumnType.Timestamp)
                     {
                         il.Emit(OpCodes.Ldc_I4, col.Precision);
                     }
@@ -225,11 +226,11 @@ namespace Apache.Ignite.Internal.Table.Serialization
                         il.Emit(OpCodes.Ldfld, fieldInfo);
                     }
 
-                    if (col.Type == ClientDataType.Decimal)
+                    if (col.Type == ColumnType.Decimal)
                     {
                         il.Emit(OpCodes.Ldc_I4, col.Scale);
                     }
-                    else if (col.Type is ClientDataType.Time or 
ClientDataType.DateTime or ClientDataType.Timestamp)
+                    else if (col.Type is ColumnType.Time or 
ColumnType.Datetime or ColumnType.Timestamp)
                     {
                         il.Emit(OpCodes.Ldc_I4, col.Precision);
                     }
@@ -272,7 +273,7 @@ namespace Apache.Ignite.Internal.Table.Serialization
                 il.Emit(OpCodes.Ldarg_0); // reader
                 il.Emit(OpCodes.Ldc_I4_0); // index
 
-                if (schema.Columns[0] is { Type: ClientDataType.Decimal } col)
+                if (schema.Columns[0] is { Type: ColumnType.Decimal } col)
                 {
                     il.Emit(OpCodes.Ldc_I4, col.Scale);
                 }
@@ -383,7 +384,7 @@ namespace Apache.Ignite.Internal.Table.Serialization
             il.Emit(OpCodes.Ldarg_0); // reader
             il.Emit(OpCodes.Ldc_I4, elemIdx); // index
 
-            if (col.Type == ClientDataType.Decimal)
+            if (col.Type == ColumnType.Decimal)
             {
                 il.Emit(OpCodes.Ldc_I4, col.Scale);
             }
@@ -394,7 +395,7 @@ namespace Apache.Ignite.Internal.Table.Serialization
 
         private static void ValidateFieldType(FieldInfo fieldInfo, Column 
column)
         {
-            var columnType = column.Type.ToType();
+            var columnType = column.Type.ToClrType();
 
             var fieldType = Nullable.GetUnderlyingType(fieldInfo.FieldType) ?? 
fieldInfo.FieldType;
             fieldType = fieldType.UnwrapEnum();
@@ -410,7 +411,7 @@ namespace Apache.Ignite.Internal.Table.Serialization
 
         private static void ValidateSingleFieldMappingType(Type type, Column 
column)
         {
-            var columnType = column.Type.ToType();
+            var columnType = column.Type.ToClrType();
 
             if (type != columnType)
             {
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Table.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Table.cs
index ef50b56c8b..2db816d830 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Table.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Table.cs
@@ -24,6 +24,7 @@ namespace Apache.Ignite.Internal.Table
     using System.Threading.Tasks;
     using Buffers;
     using Common;
+    using Ignite.Sql;
     using Ignite.Table;
     using Ignite.Transactions;
     using Log;
@@ -338,7 +339,7 @@ namespace Apache.Ignite.Internal.Table
 
                 r.Skip(propertyCount - expectedCount);
 
-                var column = new Column(name, (ClientDataType)type, 
isNullable, isColocation, isKey, i, scale, precision);
+                var column = new Column(name, (ColumnType)type, isNullable, 
isColocation, isKey, i, scale, precision);
 
                 columns[i] = column;
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/TemporalTypes.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/TemporalTypes.cs
index fb9b63ce51..db89c2362f 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/TemporalTypes.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/TemporalTypes.cs
@@ -18,7 +18,7 @@
 namespace Apache.Ignite.Internal.Table;
 
 using System;
-using Proto;
+using Ignite.Sql;
 
 /// <summary>
 /// Temporal type utils.
@@ -26,7 +26,7 @@ using Proto;
 internal static class TemporalTypes
 {
     /// <summary>
-    /// Max <see cref="ClientDataType.Time"/> type precision.
+    /// Max <see cref="ColumnType.Time"/> type precision.
     /// </summary>
     public const int MaxTimePrecision = 9;
 
diff --git a/modules/platforms/dotnet/Apache.Ignite/Sql/SqlColumnType.cs 
b/modules/platforms/dotnet/Apache.Ignite/Sql/ColumnType.cs
similarity index 98%
rename from modules/platforms/dotnet/Apache.Ignite/Sql/SqlColumnType.cs
rename to modules/platforms/dotnet/Apache.Ignite/Sql/ColumnType.cs
index 9cee0317da..595ca021ba 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Sql/SqlColumnType.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Sql/ColumnType.cs
@@ -26,7 +26,7 @@ namespace Apache.Ignite.Sql
         "Microsoft.Naming",
         "CA1720:IdentifiersShouldNotContainTypeNames",
         Justification = "Ignite-specific SQL column type names are required.")]
-    public enum SqlColumnType
+    public enum ColumnType
     {
         /** Boolean. */
         Boolean = 0,
diff --git a/modules/platforms/dotnet/Apache.Ignite/Sql/IColumnMetadata.cs 
b/modules/platforms/dotnet/Apache.Ignite/Sql/IColumnMetadata.cs
index 32d4bf0a81..773a6e779b 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Sql/IColumnMetadata.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Sql/IColumnMetadata.cs
@@ -30,7 +30,7 @@ namespace Apache.Ignite.Sql
         /// <summary>
         /// Gets the column type.
         /// </summary>
-        SqlColumnType Type { get; }
+        ColumnType Type { get; }
 
         /// <summary>
         /// Gets the column precision, or -1 when not applicable to the 
current column type.
diff --git a/modules/platforms/dotnet/Apache.Ignite/Sql/IgniteDbDataReader.cs 
b/modules/platforms/dotnet/Apache.Ignite/Sql/IgniteDbDataReader.cs
index 5b9d7a921e..96bd8c8c4e 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Sql/IgniteDbDataReader.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Sql/IgniteDbDataReader.cs
@@ -194,11 +194,12 @@ public sealed class IgniteDbDataReader : DbDataReader, 
IDbColumnSchemaGenerator
     {
         var column = Metadata.Columns[ordinal];
 
+        // ReSharper disable once 
SwitchExpressionHandlesSomeKnownEnumValuesWithExceptionInDefault
         return column.Type switch
         {
-            SqlColumnType.Date => 
GetReader().GetDate(ordinal).ToDateTimeUnspecified(),
-            SqlColumnType.Datetime => 
GetReader().GetDateTime(ordinal).ToDateTimeUnspecified(),
-            SqlColumnType.Timestamp => 
GetReader().GetTimestamp(ordinal).ToDateTimeUtc(),
+            ColumnType.Date => 
GetReader().GetDate(ordinal).ToDateTimeUnspecified(),
+            ColumnType.Datetime => 
GetReader().GetDateTime(ordinal).ToDateTimeUnspecified(),
+            ColumnType.Timestamp => 
GetReader().GetTimestamp(ordinal).ToDateTimeUtc(),
             _ => throw GetInvalidColumnTypeException(typeof(DateTime), column)
         };
     }
@@ -475,7 +476,7 @@ public sealed class IgniteDbDataReader : DbDataReader, 
IDbColumnSchemaGenerator
 
     private static void ValidateColumnType(Type type, IColumnMetadata column)
     {
-        if (column.Type != type.ToSqlColumnType())
+        if (column.Type != type.ToColumnType())
         {
             throw GetInvalidColumnTypeException(type, column);
         }
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
index 6f89795e9d..e3b5dd9e05 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/PlatformTestNodeRunner.java
@@ -38,7 +38,7 @@ import org.apache.ignite.compute.ComputeJob;
 import org.apache.ignite.compute.JobExecutionContext;
 import org.apache.ignite.internal.app.IgniteImpl;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
-import org.apache.ignite.internal.client.proto.ClientDataType;
+import org.apache.ignite.internal.client.proto.ColumnTypeConverter;
 import 
org.apache.ignite.internal.configuration.BasicAuthenticationProviderChange;
 import org.apache.ignite.internal.configuration.SecurityConfiguration;
 import org.apache.ignite.internal.schema.Column;
@@ -447,84 +447,84 @@ public class PlatformTestNodeRunner {
             var reader = new BinaryTupleReader(columnCount * 3, buf);
 
             for (int i = 0; i < columnCount; i++) {
-                var type = reader.intValue(i * 3);
+                var type = 
ColumnTypeConverter.fromOrdinalOrThrow(reader.intValue(i * 3));
                 var scale = reader.intValue(i * 3 + 1);
                 var valIdx = i * 3 + 2;
 
                 String colName = "col" + i;
 
                 switch (type) {
-                    case ClientDataType.INT8:
+                    case INT8:
                         columns[i] = new Column(i, colName, NativeTypes.INT8, 
false);
                         tuple.set(colName, reader.byteValue(valIdx));
                         break;
 
-                    case ClientDataType.INT16:
+                    case INT16:
                         columns[i] = new Column(i, colName, NativeTypes.INT16, 
false);
                         tuple.set(colName, reader.shortValue(valIdx));
                         break;
 
-                    case ClientDataType.INT32:
+                    case INT32:
                         columns[i] = new Column(i, colName, NativeTypes.INT32, 
false);
                         tuple.set(colName, reader.intValue(valIdx));
                         break;
 
-                    case ClientDataType.INT64:
+                    case INT64:
                         columns[i] = new Column(i, colName, NativeTypes.INT64, 
false);
                         tuple.set(colName, reader.longValue(valIdx));
                         break;
 
-                    case ClientDataType.FLOAT:
+                    case FLOAT:
                         columns[i] = new Column(i, colName, NativeTypes.FLOAT, 
false);
                         tuple.set(colName, reader.floatValue(valIdx));
                         break;
 
-                    case ClientDataType.DOUBLE:
+                    case DOUBLE:
                         columns[i] = new Column(i, colName, 
NativeTypes.DOUBLE, false);
                         tuple.set(colName, reader.doubleValue(valIdx));
                         break;
 
-                    case ClientDataType.DECIMAL:
+                    case DECIMAL:
                         columns[i] = new Column(i, colName, 
NativeTypes.decimalOf(100, scale), false);
                         tuple.set(colName, reader.decimalValue(valIdx, scale));
                         break;
 
-                    case ClientDataType.STRING:
+                    case STRING:
                         columns[i] = new Column(i, colName, 
NativeTypes.STRING, false);
                         tuple.set(colName, reader.stringValue(valIdx));
                         break;
 
-                    case ClientDataType.UUID:
+                    case UUID:
                         columns[i] = new Column(i, colName, NativeTypes.UUID, 
false);
                         tuple.set(colName, reader.uuidValue(valIdx));
                         break;
 
-                    case ClientDataType.NUMBER:
+                    case NUMBER:
                         columns[i] = new Column(i, colName, 
NativeTypes.numberOf(255), false);
                         tuple.set(colName, reader.numberValue(valIdx));
                         break;
 
-                    case ClientDataType.BITMASK:
+                    case BITMASK:
                         columns[i] = new Column(i, colName, 
NativeTypes.bitmaskOf(32), false);
                         tuple.set(colName, reader.bitmaskValue(valIdx));
                         break;
 
-                    case ClientDataType.DATE:
+                    case DATE:
                         columns[i] = new Column(i, colName, NativeTypes.DATE, 
false);
                         tuple.set(colName, reader.dateValue(valIdx));
                         break;
 
-                    case ClientDataType.TIME:
+                    case TIME:
                         columns[i] = new Column(i, colName, 
NativeTypes.time(timePrecision), false);
                         tuple.set(colName, reader.timeValue(valIdx));
                         break;
 
-                    case ClientDataType.DATETIME:
+                    case DATETIME:
                         columns[i] = new Column(i, colName, 
NativeTypes.datetime(timePrecision), false);
                         tuple.set(colName, reader.dateTimeValue(valIdx));
                         break;
 
-                    case ClientDataType.TIMESTAMP:
+                    case TIMESTAMP:
                         columns[i] = new Column(i, colName, 
NativeTypes.timestamp(timestampPrecision), false);
                         tuple.set(colName, reader.timestampValue(valIdx));
                         break;
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
index 3e79d11373..5fad6aec13 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItThinClientColocationTest.java
@@ -71,7 +71,7 @@ public class ItThinClientColocationTest {
     private static ClientSchema clientSchema(NativeType type, String 
columnName) {
         var clientColumn = new ClientColumn(
                 columnName,
-                ClientTableCommon.getClientDataType(type.spec()),
+                ClientTableCommon.getColumnType(type.spec()),
                 false,
                 true,
                 true,

Reply via email to