fix: bitmap error (#32)
* fix: bitmap error
* Update TableSessionPoolTest.cs
* format and add .editorconfig(dotnet/sdk)
* Update .editorconfig
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..7f6de4d
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,345 @@
+# 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.
+
+# editorconfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Default settings:
+# A newline ending every file
+# Use 4 spaces as indentation
+[*]
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+trim_trailing_whitespace = true
+spelling_exclusion_path = ./exclusion.dic
+
+[*.json]
+indent_size = 2
+
+# Generated code
+[*{_AssemblyInfo.cs,.notsupported.cs,*/obj/*/External/**/*,*/obj/dotnet-new.IntegrationTests/*/TemplatePackagesPaths.cs}]
+generated_code = true
+
+# C# files
+[*.cs]
+# New line preferences
+csharp_new_line_before_open_brace = all
+csharp_new_line_before_else = true
+csharp_new_line_before_catch = true
+csharp_new_line_before_finally = true
+csharp_new_line_before_members_in_object_initializers = true
+csharp_new_line_before_members_in_anonymous_types = true
+csharp_new_line_between_query_expression_clauses = true
+
+# Indentation preferences
+csharp_indent_block_contents = true
+csharp_indent_braces = false
+csharp_indent_case_contents = true
+csharp_indent_case_contents_when_block = false
+csharp_indent_switch_labels = true
+csharp_indent_labels = one_less_than_current
+
+# Modifier preferences
+csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
+
+# avoid this. unless absolutely necessary
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+
+# Types: use keywords instead of BCL types, and permit var only when the type is clear
+csharp_style_var_for_built_in_types = false:none
+csharp_style_var_when_type_is_apparent = false:none
+csharp_style_var_elsewhere = false:none
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# name all constant fields using PascalCase
+dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
+dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
+dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
+dotnet_naming_symbols.constant_fields.applicable_kinds = field
+dotnet_naming_symbols.constant_fields.required_modifiers = const
+dotnet_naming_style.pascal_case_style.capitalization = pascal_case
+
+# static fields should have s_ prefix
+dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
+dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
+dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
+dotnet_naming_symbols.static_fields.applicable_kinds = field
+dotnet_naming_symbols.static_fields.required_modifiers = static
+dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
+dotnet_naming_style.static_prefix_style.required_prefix = s_
+dotnet_naming_style.static_prefix_style.capitalization = camel_case
+
+# internal and private fields should be _camelCase
+dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
+dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
+dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
+dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
+dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
+dotnet_naming_style.camel_case_underscore_style.required_prefix = _
+dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
+
+# Code style defaults
+csharp_using_directive_placement = outside_namespace:suggestion
+dotnet_sort_system_directives_first = true
+csharp_prefer_braces = true:silent
+csharp_preserve_single_line_blocks = true:none
+csharp_preserve_single_line_statements = false:none
+csharp_prefer_static_local_function = true:suggestion
+csharp_prefer_simple_using_statement = false:none
+csharp_style_prefer_switch_expression = true:suggestion
+
+# Code quality
+dotnet_style_readonly_field = true:suggestion
+dotnet_code_quality_unused_parameters = non_public:suggestion
+
+# Expression-level preferences
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_auto_properties = true:suggestion
+dotnet_style_prefer_conditional_expression_over_assignment = true:silent
+dotnet_style_prefer_conditional_expression_over_return = true:silent
+csharp_prefer_simple_default_expression = true:suggestion
+
+# Expression-bodied members
+csharp_style_expression_bodied_methods = true:silent
+csharp_style_expression_bodied_constructors = true:silent
+csharp_style_expression_bodied_operators = true:silent
+csharp_style_expression_bodied_properties = true:silent
+csharp_style_expression_bodied_indexers = true:silent
+csharp_style_expression_bodied_accessors = true:silent
+csharp_style_expression_bodied_lambdas = true:silent
+csharp_style_expression_bodied_local_functions = true:silent
+
+# Pattern matching
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+
+# Null checking preferences
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+
+# Other features
+csharp_style_prefer_index_operator = false:none
+csharp_style_prefer_range_operator = false:none
+csharp_style_pattern_local_over_anonymous_function = false:none
+
+# Space preferences
+csharp_space_after_cast = false
+csharp_space_after_colon_in_inheritance_clause = true
+csharp_space_after_comma = true
+csharp_space_after_dot = false
+csharp_space_after_keywords_in_control_flow_statements = true
+csharp_space_after_semicolon_in_for_statement = true
+csharp_space_around_binary_operators = before_and_after
+csharp_space_around_declaration_statements = do_not_ignore
+csharp_space_before_colon_in_inheritance_clause = true
+csharp_space_before_comma = false
+csharp_space_before_dot = false
+csharp_space_before_open_square_brackets = false
+csharp_space_before_semicolon_in_for_statement = false
+csharp_space_between_empty_square_brackets = false
+csharp_space_between_method_call_empty_parameter_list_parentheses = false
+csharp_space_between_method_call_name_and_opening_parenthesis = false
+csharp_space_between_method_call_parameter_list_parentheses = false
+csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
+csharp_space_between_method_declaration_name_and_open_parenthesis = false
+csharp_space_between_method_declaration_parameter_list_parentheses = false
+csharp_space_between_parentheses = false
+csharp_space_between_square_brackets = false
+
+# Default analyzed API surface = 'all' (public APIs + non-public APIs)
+dotnet_code_quality.api_surface = all
+
+# License header
+file_header_template = /*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * "License"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */
+
+# Code files
+[*.{cs,vb}]
+# Analyzers
+dotnet_code_quality.ca1802.api_surface = private, internal
+dotnet_code_quality.ca1822.api_surface = private, internal
+dotnet_code_quality.ca2208.api_surface = public
+# Mark attributes with AttributeUsageAttribute
+dotnet_diagnostic.CA1018.severity = warning
+# Properties should not be write only
+dotnet_diagnostic.CA1044.severity = warning
+# Do not declare protected member in sealed type
+dotnet_diagnostic.CA1047.severity = warning
+# Avoid using cref tags with a prefix
+dotnet_diagnostic.CA1200.severity = suggestion
+# P/Invokes should not be visible
+dotnet_diagnostic.CA1401.severity = warning
+# Parameter names should match base declaration
+dotnet_diagnostic.CA1725.severity = suggestion
+# Remove empty Finalizers
+dotnet_diagnostic.CA1821.severity = warning
+# Mark assemblies with NeutralResourcesLanguageAttribute
+dotnet_diagnostic.CA1824.severity = warning
+# Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used
+dotnet_diagnostic.CA1828.severity = warning
+# Prefer strongly-typed Append and Insert method overloads on StringBuilder.
+dotnet_diagnostic.CA1830.severity = warning
+# Use AsSpan or AsMemory instead of Range-based indexers when appropriate
+dotnet_diagnostic.CA1832.severity = warning
+# Use AsSpan or AsMemory instead of Range-based indexers when appropriate
+dotnet_diagnostic.CA1833.severity = warning
+# Prefer IsEmpty over Count
+dotnet_diagnostic.CA1836.severity = warning
+# Use 'Environment.ProcessPath'
+dotnet_diagnostic.CA1839.severity = warning
+# Do not call ToImmutableCollection on an ImmutableCollection value
+# Temporarily disable to avoid regression in preview 1, revert back to warning when start using preview 2
+dotnet_diagnostic.CA2009.severity = none
+# Avoid infinite recursion
+dotnet_diagnostic.CA2011.severity = warning
+# Initialize value type static fields inline
+dotnet_diagnostic.CA2207.severity = warning
+# Implement serialization constructors
+dotnet_diagnostic.CA2229.severity = warning
+# Provide correct arguments to formatting methods
+dotnet_diagnostic.CA2241.severity = warning
+# Test for NaN correctly
+dotnet_diagnostic.CA2242.severity = warning
+# Do not assign a property to itself.
+dotnet_diagnostic.CA2245.severity = warning
+# Provide correct 'enum' argument to 'Enum.HasFlag'
+dotnet_diagnostic.CA2248.severity = warning
+# Do Not Add Schema By URL
+dotnet_diagnostic.CA3061.severity = warning
+# Insecure DTD processing in XML
+dotnet_diagnostic.CA3075.severity = warning
+# Insecure XSLT script processing.
+dotnet_diagnostic.CA3076.severity = warning
+# Insecure Processing in API Design, XmlDocument and XmlTextReader
+dotnet_diagnostic.CA3077.severity = warning
+# Mark Verb Handlers With Validate Antiforgery Token
+dotnet_diagnostic.CA3147.severity = warning
+# Do Not Use Broken Cryptographic Algorithms
+dotnet_diagnostic.CA5351.severity = warning
+# Do Not Disable Certificate Validation
+dotnet_diagnostic.CA5359.severity = warning
+# Do Not Call Dangerous Methods In Deserialization
+dotnet_diagnostic.CA5360.severity = warning
+# Do Not Disable SChannel Use of Strong Crypto
+dotnet_diagnostic.CA5361.severity = warning
+# Do Not Disable Request Validation
+dotnet_diagnostic.CA5363.severity = warning
+# Do Not Use Deprecated Security Protocols
+dotnet_diagnostic.CA5364.severity = warning
+# Do Not Disable HTTP Header Checking
+dotnet_diagnostic.CA5365.severity = warning
+# Set ViewStateUserKey For Classes Derived From Page
+dotnet_diagnostic.CA5368.severity = warning
+# Use XmlReader For Validating Reader
+dotnet_diagnostic.CA5370.severity = warning
+# Do not use obsolete key derivation function
+dotnet_diagnostic.CA5373.severity = warning
+# Do Not Use XslTransform
+dotnet_diagnostic.CA5374.severity = warning
+# Use SharedAccessProtocol HttpsOnly
+dotnet_diagnostic.CA5376.severity = warning
+# Use Container Level Access Policy
+dotnet_diagnostic.CA5377.severity = warning
+# Do not disable ServicePointManagerSecurityProtocols
+dotnet_diagnostic.CA5378.severity = warning
+# Do Not Use Weak Key Derivation Function Algorithm
+dotnet_diagnostic.CA5379.severity = warning
+# Do Not Add Certificates To Root Store
+dotnet_diagnostic.CA5380.severity = warning
+# Ensure Certificates Are Not Added To Root Store
+dotnet_diagnostic.CA5381.severity = warning
+# Do Not Use Digital Signature Algorithm (DSA)
+dotnet_diagnostic.CA5384.severity = warning
+# Use Rivest–Shamir–Adleman (RSA) Algorithm With Sufficient Key Size
+dotnet_diagnostic.CA5385.severity = warning
+dotnet_diagnostic.CS1591.severity = suggestion
+# UseIsNullCheck
+dotnet_diagnostic.IDE0041.severity = warning
+# ValidateFormatString
+dotnet_diagnostic.IDE0043.severity = warning
+# MakeLocalFunctionStatic
+dotnet_diagnostic.IDE0062.severity = warning
+# ConvertTypeOfToNameOf
+dotnet_diagnostic.IDE0082.severity = warning
+# Remove unnecessary lambda expression
+dotnet_diagnostic.IDE0200.severity = none
+# Remove redundant nullable directive
+dotnet_diagnostic.IDE0240.severity = warning
+
+# C++ Files
+[*.{cpp,h,in}]
+curly_bracket_next_line = true
+indent_brace_style = Allman
+
+# Xml project files
+[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
+indent_size = 2
+
+[*.{csproj,vbproj,proj,nativeproj,locproj}]
+charset = utf-8-bom
+
+# Xml build files
+[*.builds]
+indent_size = 2
+
+# Xml files
+[*.{xml,stylecop,resx,ruleset}]
+indent_size = 2
+
+# Xml config files
+[*.{props,targets,config,nuspec}]
+indent_size = 2
+
+# YAML config files
+[*.{yml,yaml}]
+indent_size = 2
+
+# Shell scripts
+[*.sh]
+end_of_line = lf
+[*.{cmd, bat}]
+end_of_line = crlf
+
+# IDE0040: Add accessibility modifiers
+dotnet_diagnostic.IDE0040.severity = warning
+
+[*.txt]
+insert_final_newline = false
+
+# Verify settings
+[*.{received,verified}.{txt,xml,json}]
+charset = "utf-8-bom"
+end_of_line = lf
+indent_size = unset
+indent_style = unset
+insert_final_newline = false
+tab_width = unset
+trim_trailing_whitespace = false
diff --git a/samples/Apache.IoTDB.Samples/Program.cs b/samples/Apache.IoTDB.Samples/Program.cs
index b825063..3bdc715 100644
--- a/samples/Apache.IoTDB.Samples/Program.cs
+++ b/samples/Apache.IoTDB.Samples/Program.cs
@@ -17,12 +17,12 @@
* under the License.
*/
+using System;
+using System.Collections.Generic;
+using System.CommandLine;
+using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using NLog.Extensions.Logging;
-using System.Threading.Tasks;
-using System.CommandLine;
-using System.Collections.Generic;
-using System;
namespace Apache.IoTDB.Samples
{
diff --git a/samples/Apache.IoTDB.Samples/SessionPoolTest.cs b/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
index a189461..8b27c97 100644
--- a/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
+++ b/samples/Apache.IoTDB.Samples/SessionPoolTest.cs
@@ -19,13 +19,13 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
+using System.Net.Sockets;
using System.Threading;
using System.Threading.Tasks;
using Apache.IoTDB.Data;
using Apache.IoTDB.DataStructure;
using ConsoleTableExt;
-using System.Net.Sockets;
-using System.Diagnostics;
namespace Apache.IoTDB.Samples
{
diff --git a/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs b/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs
index 36d2b88..cebcd2f 100644
--- a/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs
+++ b/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs
@@ -39,7 +39,8 @@
await TestSelectAndInsert();
await TestUseDatabase();
- // await TestCleanup();
+ await TestInsertWithNull();
+ await TestCleanup();
}
@@ -161,6 +162,87 @@
await tableSessionPool.Close();
}
+ public async Task TestInsertWithNull()
+ {
+ var tableName = "t1";
+
+ var tableSessionPool = new TableSessionPool.Builder()
+ .SetNodeUrls(sessionPoolTest.nodeUrls)
+ .SetUsername(sessionPoolTest.username)
+ .SetPassword(sessionPoolTest.password)
+ .SetFetchSize(1024)
+ .SetDatabase("test1")
+ .Build();
+
+ await tableSessionPool.Open(false);
+
+ if (sessionPoolTest.debug) tableSessionPool.OpenDebugMode();
+
+ await tableSessionPool.ExecuteNonQueryStatementAsync(
+ "create table " + tableName + "(" +
+ "t1 STRING TAG," +
+ "f1 DATE FIELD)");
+
+ List<string> columnNames =
+ new List<string> {
+ "t1",
+ "f1" };
+ List<TSDataType> dataTypes =
+ new List<TSDataType>{
+ TSDataType.STRING,
+ TSDataType.DATE};
+ List<ColumnCategory> columnCategories =
+ new List<ColumnCategory>{
+ ColumnCategory.TAG,
+ ColumnCategory.FIELD};
+ var timestamps = new List<long>
+ {
+ 0L,
+ 1L,
+ 2L,
+ 3L,
+ 4L,
+ 5L,
+ 6L,
+ 7L,
+ 8L,
+ 9L
+ };
+ var values = new List<List<object>> { };
+ values.Add(new List<object> { "t1", DateTime.Parse("2024-08-15") });
+ values.Add(new List<object> { "t1", DateTime.Parse("2024-08-15") });
+ values.Add(new List<object> { "t1", DateTime.Parse("2024-08-15") });
+ values.Add(new List<object> { "t1", DateTime.Parse("2024-08-15") });
+ values.Add(new List<object> { "t1", DateTime.Parse("2024-08-15") });
+ values.Add(new List<object> { "t1", null });
+ values.Add(new List<object> { "t1", null });
+ values.Add(new List<object> { "t1", null });
+ values.Add(new List<object> { "t1", null });
+ values.Add(new List<object> { "t1", null });
+ var tablet = new Tablet(tableName, columnNames, columnCategories, dataTypes, values, timestamps);
+
+ await tableSessionPool.InsertAsync(tablet);
+
+
+ var res = await tableSessionPool.ExecuteQueryStatementAsync("select count(*) from " + tableName + " where f1 is null");
+ while (res.HasNext())
+ {
+ var row = res.Next();
+ Console.WriteLine(row);
+ var value = row.Values[0];
+ if (value is long longValue)
+ {
+ if (longValue != 5)
+ {
+ throw new Exception("Expected value is 5, but got " + longValue);
+ }
+ }
+ }
+ await res.Close();
+
+ await tableSessionPool.Close();
+ }
+
public async Task TestCleanup()
{
var tableSessionPool = new TableSessionPool.Builder()
diff --git a/src/Apache.IoTDB.Data/IoTDBCommand.cs b/src/Apache.IoTDB.Data/IoTDBCommand.cs
index 8daf86a..f717a83 100644
--- a/src/Apache.IoTDB.Data/IoTDBCommand.cs
+++ b/src/Apache.IoTDB.Data/IoTDBCommand.cs
@@ -17,7 +17,6 @@
* under the License.
*/
-using Apache.IoTDB.DataStructure;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -30,6 +29,7 @@
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
+using Apache.IoTDB.DataStructure;
namespace Apache.IoTDB.Data
diff --git a/src/Apache.IoTDB.Data/IoTDBConnection.cs b/src/Apache.IoTDB.Data/IoTDBConnection.cs
index 96b3154..507a153 100644
--- a/src/Apache.IoTDB.Data/IoTDBConnection.cs
+++ b/src/Apache.IoTDB.Data/IoTDBConnection.cs
@@ -23,14 +23,13 @@
using System.Data.Common;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
-
-using System.Linq;
-using System.Threading.Tasks;
using System.Threading;
+using System.Threading.Tasks;
namespace Apache.IoTDB.Data
{
diff --git a/src/Apache.IoTDB.Data/IoTDBDataReader.cs b/src/Apache.IoTDB.Data/IoTDBDataReader.cs
index da4f107..156844e 100644
--- a/src/Apache.IoTDB.Data/IoTDBDataReader.cs
+++ b/src/Apache.IoTDB.Data/IoTDBDataReader.cs
@@ -17,7 +17,6 @@
* under the License.
*/
-using Apache.IoTDB.DataStructure;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -27,6 +26,7 @@
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
+using Apache.IoTDB.DataStructure;
namespace Apache.IoTDB.Data
@@ -525,7 +525,7 @@
var tableName1 = string.Empty;
schemaRow1[BaseTableName] = tableName1;
schemaRow1[DataType] = typeof(DateTime);
- schemaRow1[DataTypeName] = typeof(DateTime).Name;
+ schemaRow1[DataTypeName] = nameof(DateTime);
schemaRow1[IsExpression] = columnName1 == null;
schemaRow1[IsLong] = DBNull.Value;
schemaRow1[IsKey] = true;
diff --git a/src/Apache.IoTDB/DataStructure/BitMap.cs b/src/Apache.IoTDB/DataStructure/BitMap.cs
index 5a1b607..75b2d58 100644
--- a/src/Apache.IoTDB/DataStructure/BitMap.cs
+++ b/src/Apache.IoTDB/DataStructure/BitMap.cs
@@ -23,7 +23,7 @@
#endif
public class BitMap
{
- private static byte[] BIT_UTIL = new byte[] { 1, 2, 4, 8, 16, 32, 64, 255 };
+ private static byte[] BIT_UTIL = new byte[] { 1, 2, 4, 8, 16, 32, 64, unchecked((byte)-128) };
private static byte[] UNMARK_BIT_UTIL =
new byte[] {
(byte) 0XFE, // 11111110
@@ -94,7 +94,7 @@
public void reset()
{
#if NET461_OR_GREATER || NETSTANDARD2_0
- bits.Fill((byte)0xFF);
+ bits.Fill((byte)0);
#else
Array.Fill(bits, (byte)0);
#endif
diff --git a/src/Apache.IoTDB/DataStructure/Tablet.cs b/src/Apache.IoTDB/DataStructure/Tablet.cs
index 34007ee..471bff5 100644
--- a/src/Apache.IoTDB/DataStructure/Tablet.cs
+++ b/src/Apache.IoTDB/DataStructure/Tablet.cs
@@ -44,6 +44,8 @@
*/
public class Tablet
{
+
+ private static int EMPTY_DATE_INT = 10000101;
private readonly List<long> _timestamps;
private readonly List<List<object>> _values;
@@ -368,85 +370,85 @@
switch (dataType)
{
case TSDataType.BOOLEAN:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddBool(value != null ? (bool)value : false);
- }
-
- break;
+ var value = _values[j][i];
+ buffer.AddBool(value != null ? (bool)value : false);
}
+
+ break;
+ }
case TSDataType.INT32:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddInt(value != null ? (int)value : int.MinValue);
- }
-
- break;
+ var value = _values[j][i];
+ buffer.AddInt(value != null ? (int)value : int.MinValue);
}
+
+ break;
+ }
case TSDataType.INT64:
case TSDataType.TIMESTAMP:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddLong(value != null ? (long)value : long.MinValue);
- }
-
- break;
+ var value = _values[j][i];
+ buffer.AddLong(value != null ? (long)value : long.MinValue);
}
+
+ break;
+ }
case TSDataType.FLOAT:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddFloat(value != null ? (float)value : float.MinValue);
- }
-
- break;
+ var value = _values[j][i];
+ buffer.AddFloat(value != null ? (float)value : float.MinValue);
}
+
+ break;
+ }
case TSDataType.DOUBLE:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddDouble(value != null ? (double)value : double.MinValue);
- }
-
- break;
+ var value = _values[j][i];
+ buffer.AddDouble(value != null ? (double)value : double.MinValue);
}
+
+ break;
+ }
case TSDataType.TEXT:
case TSDataType.STRING:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddStr(value != null ? (string)value : string.Empty);
- }
+ var value = _values[j][i];
+ buffer.AddStr(value != null ? (string)value : string.Empty);
+ }
- break;
- }
+ break;
+ }
case TSDataType.DATE:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddInt(value != null ? Utils.ParseDateToInt((DateTime)value) : int.MinValue);
- }
- break;
+ var value = _values[j][i];
+ buffer.AddInt(value != null ? Utils.ParseDateToInt((DateTime)value) : EMPTY_DATE_INT);
}
+ break;
+ }
case TSDataType.BLOB:
+ {
+ for (int j = 0; j < RowNumber; j++)
{
- for (int j = 0; j < RowNumber; j++)
- {
- var value = _values[j][i];
- buffer.AddBinary(value != null ? (byte[])value : new byte[] { });
- }
- break;
+ var value = _values[j][i];
+ buffer.AddBinary(value != null ? (byte[])value : new byte[] { });
}
+ break;
+ }
default:
throw new Exception($"Unsupported data type {dataType}", null);
}