Summary

Class:CBAM.SQL.PostgreSQL.Implementation.PgSQLDataRowColumn
Assembly:CBAM.SQL.PostgreSQL.Implementation
File(s):/repo-dir/contents/Source/Code/CBAM.SQL.PostgreSQL.Implementation/DataRow.cs
Covered lines:11
Uncovered lines:0
Coverable lines:11
Total lines:101
Line coverage:100%
Branch coverage:100%

Coverage History

Metrics

MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage
.ctor(...)101%0%
ReadValueWhileReservedAsync(...)101%0%
ReadByteCountAsync()101%1%
ReadFromStreamWhileReservedAsync()101%1%
Reset(...)101%0%

File(s)

/repo-dir/contents/Source/Code/CBAM.SQL.PostgreSQL.Implementation/DataRow.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.IO;
 5using System.Linq;
 6using System.Threading;
 7using UtilPack;
 8using System.Threading.Tasks;
 9using CBAM.SQL.Implementation;
 10using CBAM.Abstractions.Implementation;
 11using UtilPack.TabularData;
 12using CBAM.Abstractions.Implementation.Tabular;
 13
 14namespace CBAM.SQL.PostgreSQL.Implementation
 15{
 16   internal sealed class PgSQLDataRowColumn : DataColumnSUKSWithConnectionFunctionality<PostgreSQLProtocol>
 17   {
 18      private readonly DataFormat _dataFormat;
 19      private DataRowObject _backendMessage;
 20
 21      public PgSQLDataRowColumn(
 22         PgSQLDataColumnMetaDataImpl metadata,
 23         Int32 thisStreamIndex,
 24         PgSQLDataRowColumn previousColumn,
 25         PostgreSQLProtocol protocol,
 26         ReservedForStatement reservedForStatement,
 27         RowDescription.FieldData fieldData
 10728         ) : base( metadata, thisStreamIndex, previousColumn, protocol, reservedForStatement )
 29      {
 10730         this._dataFormat = ArgumentValidator.ValidateNotNull( nameof( fieldData ), fieldData ).DataFormat;
 10731      }
 32
 33      protected override ValueTask<Object> ReadValueWhileReservedAsync( Int32 byteCount )
 34      {
 32835         return this.ConnectionFunctionality.ConvertFromBytes( ( (PgSQLDataColumnMetaDataImpl) this.MetaData ).SQLTypeID
 36      }
 37
 38      protected override async ValueTask<Int32> ReadByteCountAsync()
 39      {
 33340         return await this._backendMessage.ReadColumnByteCount( this.ConnectionFunctionality.MessageIOArgs, this.Connect
 33341      }
 42
 43      protected override async ValueTask<Int32> ReadFromStreamWhileReservedAsync( Byte[] array, Int32 offset, Int32 coun
 44      {
 545         return await this.ConnectionFunctionality.Stream.ReadAsync( array, offset, count, this.ConnectionFunctionality.
 546      }
 47
 48      public void Reset( DataRowObject nextRow )
 49      {
 36050         this.Reset();
 36051         Interlocked.Exchange( ref this._backendMessage, nextRow );
 36152      }
 53   }
 54
 55   internal sealed class PgSQLDataRowMetaDataImpl : DataRowMetaDataImpl<AsyncDataColumnMetaData> //, PgSQLDataRowMetaDat
 56   {
 57
 58      public PgSQLDataRowMetaDataImpl(
 59         PgSQLDataColumnMetaDataImpl[] columnMetaDatas
 60         )
 61         : base( columnMetaDatas )
 62      {
 63      }
 64   }
 65
 66   internal sealed class PgSQLDataColumnMetaDataImpl : AbstractAsyncDataColumnMetaData, PgSQLDataColumnMetaData
 67   {
 68
 69      private readonly PostgreSQLProtocol _connectionFunctionality;
 70      private readonly DataFormat _dataFormat;
 71
 72      public PgSQLDataColumnMetaDataImpl(
 73         PostgreSQLProtocol connectionFunctionality,
 74         DataFormat dataFormat,
 75         Int32 typeID,
 76         TypeFunctionalityInformation typeInfo,
 77         String label
 78         ) : base( typeInfo?.CLRType ?? typeof( String ), label )
 79      {
 80         this._connectionFunctionality = ArgumentValidator.ValidateNotNull( nameof( connectionFunctionality ), connectio
 81         this._dataFormat = dataFormat;
 82         this.SQLTypeID = typeID;
 83         this.TypeInfo = typeInfo;
 84      }
 85
 86      public override Object ChangeType( Object value, Type targetType )
 87      {
 88         var typeInfo = this.TypeInfo;
 89         return typeInfo.Functionality.ChangeTypePgSQLToFramework( typeInfo.DatabaseData, value, targetType );
 90      }
 91
 92      public override ValueTask<Object> ConvertFromBytesAsync( Stream stream, Int32 byteCount )
 93      {
 94         return this._connectionFunctionality.ConvertFromBytes( this.SQLTypeID, this._dataFormat, stream, byteCount );
 95      }
 96
 97      public Int32 SQLTypeID { get; }
 98
 99      private TypeFunctionalityInformation TypeInfo { get; }
 100   }
 101}