From f622ce0497bea35e05bc67708e15d7eb2f271f3a Mon Sep 17 00:00:00 2001 From: Zhengguo Yang Date: Thu, 3 Mar 2022 09:31:35 +0800 Subject: [PATCH] [refactor] remove types_test (#8289) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [refactor] remove types_test 1. remove types_test, it will cause core dump in higher version GCC or clang, because of memory align, some code will be vectorized in higher GCC or clang 2. Change string type length to 2 GB instead of -1 3. modify inaccessible code --- be/test/util/CMakeLists.txt | 1 - be/test/util/types_test.cpp | 58 ------------------- .../org/apache/doris/catalog/ScalarType.java | 10 ++-- .../org/apache/doris/qe/ConnectProcessor.java | 4 +- 4 files changed, 8 insertions(+), 65 deletions(-) delete mode 100644 be/test/util/types_test.cpp diff --git a/be/test/util/CMakeLists.txt b/be/test/util/CMakeLists.txt index afa332c0da..b3ccb88694 100644 --- a/be/test/util/CMakeLists.txt +++ b/be/test/util/CMakeLists.txt @@ -33,7 +33,6 @@ ADD_BE_TEST(system_metrics_test) ADD_BE_TEST(string_util_test) ADD_BE_TEST(string_parser_test) ADD_BE_TEST(core_local_test) -ADD_BE_TEST(types_test) ADD_BE_TEST(json_util_test) ADD_BE_TEST(byte_buffer_test2) ADD_BE_TEST(uid_util_test) diff --git a/be/test/util/types_test.cpp b/be/test/util/types_test.cpp deleted file mode 100644 index 1ef3cf308c..0000000000 --- a/be/test/util/types_test.cpp +++ /dev/null @@ -1,58 +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. - -#include "util/types.h" - -#include - -#include "runtime/large_int_value.h" - -namespace doris { - -class TypesTest : public ::testing::Test { -protected: - TypesTest() {} - virtual ~TypesTest() {} -}; - -TEST_F(TypesTest, packed_int128) { - // check align - ASSERT_EQ(1, alignof(PackedInt128)); - - // check assign - __int128 test_value = 123456789987654321; - test_value *= 1000000000000000000UL; - test_value += 123456789987654321UL; - char buf[30]; - *reinterpret_cast(buf + 1) = test_value; - ASSERT_EQ(reinterpret_cast(buf + 1)->value, test_value); - LOG(INFO) << reinterpret_cast(buf + 1)->value; - { - char buf2[64]; - *reinterpret_cast(buf2 + 7) = *reinterpret_cast(buf + 1); - reinterpret_cast(buf2 + 7)->value += 100; - ASSERT_EQ(reinterpret_cast(buf2 + 7)->value, test_value + 100); - LOG(INFO) << reinterpret_cast(buf2 + 7)->value; - } -} - -} // namespace doris - -int main(int argc, char** argv) { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); -} diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java index 57c9034af4..9484d7a7bd 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarType.java @@ -57,9 +57,6 @@ public class ScalarType extends Type { // Longest supported VARCHAR and CHAR, chosen to match Hive. public static final int MAX_VARCHAR_LENGTH = 65533; - // 2GB - 4 4bytes for storage string length - public static final int MAX_STRING_LENGTH = 2147483643; - public static final int MAX_CHAR_LENGTH = 255; // HLL DEFAULT LENGTH 2^14(registers) + 1(type) @@ -69,6 +66,11 @@ public class ScalarType extends Type { // Keep consistent with backend ColumnType::CHAR_INLINE_LENGTH public static final int CHAR_INLINE_LENGTH = 128; + // Max length of String types, in be storage layer store string length + // using int32, the max length is 2GB, the first 4 bytes store the length + // so the max available length is 2GB - 4 + public static final int MAX_STRING_LENGTH = 0x7fffffff - 4; + // Hive, mysql, sql server standard. public static final int MAX_PRECISION = 38; @@ -291,7 +293,7 @@ public class ScalarType extends Type { public static ScalarType createStringType() { // length checked in analysis ScalarType type = new ScalarType(PrimitiveType.STRING); - type.len = -1; + type.len = MAX_STRING_LENGTH; return type; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java index faee830555..87f2f9f294 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/ConnectProcessor.java @@ -331,8 +331,8 @@ public class ConnectProcessor { MysqlCommand command = MysqlCommand.fromCode(code); if (command == null) { ErrorReport.report(ErrorCode.ERR_UNKNOWN_COM_ERROR); - ctx.getState().setError(ErrorCode.ERR_UNKNOWN_COM_ERROR, "Unknown command(" + command + ")"); - LOG.warn("Unknown command(" + command + ")"); + ctx.getState().setError(ErrorCode.ERR_UNKNOWN_COM_ERROR, "Unknown command(" + code + ")"); + LOG.warn("Unknown command(" + code + ")"); return; } ctx.setCommand(command);