8c6d6aff6a
Moves the database-independent logic of the SQL Server historian backend into a new shared library for the upcoming QuestDB backend (#666): status codes and bits, value/column mapping, StoredSample + quality clamp, the AtTime and aggregate evaluators, BucketPlan, LiveWritePreparer and HistoryUpdatePlanner (both with a resolutionTicks parameter, default 1), tag-name rules, the bootstrap failure cache, health counters, alarm event ids, the event continuation and severity clamp. The SQL Server backend now calls it; its T-SQL, TVP builders, connection, bootstrapper and catalog stay. Tests: StatusCodeOracleTests, ValueWriterPrepareTests, the column half of SampleRowMapperTests and ProcessedReadTests.Every_enum_member_is_either_served_or_refused move to the new Sql.Common.Tests under the same names. SqlServer integration tests get mechanical renames only. Test-name set across the three projects is identical to the baseline (160 tests). Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
28 lines
1.3 KiB
C#
28 lines
1.3 KiB
C#
namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.Sql.Common;
|
|
|
|
/// <summary>
|
|
/// Every OPC UA status the SQL historian backends emit, as named constants (inline literals are invisible to
|
|
/// <c>StatusCodeParityTests</c>). Values mirror <c>Opc.Ua.StatusCodes</c>.
|
|
/// </summary>
|
|
public static class HistorianStatusCodes
|
|
{
|
|
public const uint Good = 0x00000000u;
|
|
public const uint GoodEntryInserted = 0x00A20000u;
|
|
public const uint GoodEntryReplaced = 0x00A30000u;
|
|
public const uint BadNoData = 0x809B0000u;
|
|
public const uint BadEntryExists = 0x809F0000u;
|
|
public const uint BadNoEntryExists = 0x80A00000u;
|
|
public const uint BadInvalidTimestamp = 0x80230000u;
|
|
public const uint BadAggregateInvalidInputs = 0x80D60000u;
|
|
public const uint UncertainDataSubNormal = 0x40A40000u;
|
|
|
|
/// <summary>Stored for a non-finite Double (NaN / ±Infinity) that arrived with a non-Bad status.</summary>
|
|
public const uint BadOutOfRange = 0x803C0000u;
|
|
|
|
/// <summary>
|
|
/// A HistoryUpdate value that cannot be stored: a Double NaN / ±Infinity, an Empty (null) value with a non-Bad
|
|
/// status, or a tag name longer than <see cref="HistorianTagNames.MaxLength"/>.
|
|
/// </summary>
|
|
public const uint BadInvalidArgument = 0x80AB0000u;
|
|
}
|