Skip to content

Commit ab6bb32

Browse files
improved GetSchemaVer
1 parent 4d295e5 commit ab6bb32

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

LightWeight/DataTypeInfo.cs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ public override string ToString()
4545
return Name + ", " + ClrTypeName + ", " + DataTypeName + (Precision != null && Scale != null ? " (" + Precision.Value.ToString(CultureInfo.InvariantCulture) + ", " + Scale.Value.ToString(CultureInfo.InvariantCulture) + ")" : "");
4646
}
4747

48-
public static string GetSchemaVer(List<DataTypeInfo> columns, string[] keyColumns)
48+
/// <summary>
49+
/// Use .ToString("X16") to convert to a more compact form.
50+
/// </summary>
51+
public static ulong GetSchemaVer(List<DataTypeInfo> columns, string[] keyColumns)
4952
{
5053
var keySet = keyColumns?.ToHashSet(StringComparer.InvariantCultureIgnoreCase);
5154

@@ -68,22 +71,13 @@ public static string GetSchemaVer(List<DataTypeInfo> columns, string[] keyColumn
6871
var content = sb.ToString();
6972
var data = Encoding.UTF8.GetBytes(content);
7073

71-
var hash1 = 0x811C9DC5;
72-
var hash2 = 0x811C9DC5;
73-
74+
var hash = 0xCBF29CE484222325;
7475
for (var i = 0; i < data.Length; i++)
7576
{
76-
hash1 ^= data[i];
77-
hash1 *= 0x01000193;
78-
}
79-
80-
for (var i = data.Length - 1; i >= 0; i--)
81-
{
82-
hash2 ^= data[i];
83-
hash2 *= 0x01000193;
77+
hash ^= data[i];
78+
hash *= 0x100000001B3u;
8479
}
8580

86-
var hashStr = (columns.Count % 256).ToString("X2") + hash1.ToString("X8") + (hash2 % 256).ToString("X2");
87-
return hashStr;
81+
return hash;
8882
}
8983
}

0 commit comments

Comments
 (0)