Summary

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

Coverage History

Metrics

MethodCyclomatic complexity NPath complexity Sequence coverage Branch coverage
.ctor(...)401%1%
ChangeType(...)101%0%
ConvertFromBytesAsync(...)100%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
 28         ) : base( metadata, thisStreamIndex, previousColumn, protocol, reservedForStatement )
 29      {
 30         this._dataFormat = ArgumentValidator.ValidateNotNull( nameof( fieldData ), fieldData ).DataFormat;
 31      }
 32
 33      protected override ValueTask<Object> ReadValueWhileReservedAsync( Int32 byteCount )
 34      {
 35         return this.ConnectionFunctionality.ConvertFromBytes( ( (PgSQLDataColumnMetaDataImpl) this.MetaData ).SQLTypeID
 36      }
 37
 38      protected override async ValueTask<Int32> ReadByteCountAsync()
 39      {
 40         return await this._backendMessage.ReadColumnByteCount( this.ConnectionFunctionality.MessageIOArgs, this.Connect
 41      }
 42
 43      protected override async ValueTask<Int32> ReadFromStreamWhileReservedAsync( Byte[] array, Int32 offset, Int32 coun
 44      {
 45         return await this.ConnectionFunctionality.Stream.ReadAsync( array, offset, count, this.ConnectionFunctionality.
 46      }
 47
 48      public void Reset( DataRowObject nextRow )
 49      {
 50         this.Reset();
 51         Interlocked.Exchange( ref this._backendMessage, nextRow );
 52      }
 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
 10778         ) : base( typeInfo?.CLRType ?? typeof( String ), label )
 79      {
 10780         this._connectionFunctionality = ArgumentValidator.ValidateNotNull( nameof( connectionFunctionality ), connectio
 10781         this._dataFormat = dataFormat;
 10782         this.SQLTypeID = typeID;
 10783         this.TypeInfo = typeInfo;
 10784      }
 85
 86      public override Object ChangeType( Object value, Type targetType )
 87      {
 2588         var typeInfo = this.TypeInfo;
 2589         return typeInfo.Functionality.ChangeTypePgSQLToFramework( typeInfo.DatabaseData, value, targetType );
 90      }
 91
 92      public override ValueTask<Object> ConvertFromBytesAsync( Stream stream, Int32 byteCount )
 93      {
 094         return this._connectionFunctionality.ConvertFromBytes( this.SQLTypeID, this._dataFormat, stream, byteCount );
 95      }
 96
 32997      public Int32 SQLTypeID { get; }
 98
 2599      private TypeFunctionalityInformation TypeInfo { get; }
 100   }
 101}