# Struct NpgsqlLogSequenceNumber

Namespace
  NpgsqlTypes

Assembly
  Npgsql.dll

Wraps a PostgreSQL Write-Ahead Log Sequence Number (see: https://www.postgresql.org/docs/current/datatype-pg-lsn.html)

    public readonly struct NpgsqlLogSequenceNumber : IEquatable<NpgsqlLogSequenceNumber>, IComparable<NpgsqlLogSequenceNumber>

Implements
  IEquatable<NpgsqlLogSequenceNumber>
  IComparable<NpgsqlLogSequenceNumber>

Inherited Members
  object.Equals(object, object)
  object.GetType()
  object.ReferenceEquals(object, object)

## Remarks

Log Sequence Numbers are a fundamental concept of the PostgreSQL Write-Ahead Log and by that of PostgreSQL replication. See https://www.postgresql.org/docs/current/wal-internals.html for what they represent.

This struct provides conversions from/to string and ulong and beyond that tries to port the methods and operators in https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/backend/utils/adt/pg_lsn.c but nothing more.

## Constructors

### NpgsqlLogSequenceNumber(ulong)

Initializes a new instance of NpgsqlLogSequenceNumber.

    public NpgsqlLogSequenceNumber(ulong value)

#### Parameters

`value` ulong

  The value to wrap.

## Fields

### Invalid

Zero is used indicate an invalid Log Sequence Number. No XLOG record can begin at zero.

    public static readonly NpgsqlLogSequenceNumber Invalid

#### Field Value

NpgsqlLogSequenceNumber

## Methods

### CompareTo(NpgsqlLogSequenceNumber)

Compares this instance to a specified NpgsqlLogSequenceNumber and returns an indication of their relative values.

    public int CompareTo(NpgsqlLogSequenceNumber value)

#### Parameters

`value` NpgsqlLogSequenceNumber

  A NpgsqlLogSequenceNumber instance to compare to this instance.

#### Returns

int

  A signed number indicating the relative values of this instance and `value`.

### Equals(NpgsqlLogSequenceNumber)

Returns a value indicating whether this instance is equal to a specified NpgsqlLogSequenceNumber instance.

    public bool Equals(NpgsqlLogSequenceNumber other)

#### Parameters

`other` NpgsqlLogSequenceNumber

  A NpgsqlLogSequenceNumber instance to compare to this instance.

#### Returns

bool

  true if the current instance is equal to the value parameter; otherwise, false.

### Equals(object?)

Returns a value indicating whether this instance is equal to a specified object.

    public override bool Equals(object? obj)

#### Parameters

`obj` object

  An object to compare to this instance

#### Returns

bool

  true if the current instance is equal to the value parameter; otherwise, false.

### GetHashCode()

Returns the hash code for this instance.

    public override int GetHashCode()

#### Returns

int

  A 32-bit signed integer hash code.

### Larger(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns the larger of two NpgsqlLogSequenceNumber values.

    public static NpgsqlLogSequenceNumber Larger(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

NpgsqlLogSequenceNumber

  The larger of the two NpgsqlLogSequenceNumber values.

### Parse(ReadOnlySpan<char>)

Converts the span representation of a Log Sequence Number to a NpgsqlLogSequenceNumber instance.

    public static NpgsqlLogSequenceNumber Parse(ReadOnlySpan<char> s)

#### Parameters

`s` ReadOnlySpan<char>

  A span containing the characters that represent the Log Sequence Number to convert.

#### Returns

NpgsqlLogSequenceNumber

  A NpgsqlLogSequenceNumber equivalent to the Log Sequence Number specified in `s`.

#### Exceptions

OverflowException

  The `s` parameter represents a number less than MinValue or greater than MaxValue.

FormatException

  The `s` parameter is not in the right format.

### Parse(string)

Converts the string representation of a Log Sequence Number to a NpgsqlLogSequenceNumber instance.

    public static NpgsqlLogSequenceNumber Parse(string s)

#### Parameters

`s` string

  A string that represents the Log Sequence Number to convert.

#### Returns

NpgsqlLogSequenceNumber

  A NpgsqlLogSequenceNumber equivalent to the Log Sequence Number specified in `s`.

#### Exceptions

ArgumentNullException

  The `s` parameter is null.

OverflowException

  The `s` parameter represents a number less than MinValue or greater than MaxValue.

FormatException

  The `s` parameter is not in the right format.

### Smaller(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns the smaller of two NpgsqlLogSequenceNumber values.

    public static NpgsqlLogSequenceNumber Smaller(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

NpgsqlLogSequenceNumber

  The smaller of the two NpgsqlLogSequenceNumber values.

### ToString()

Converts the numeric value of this instance to its equivalent string representation.

    public override string ToString()

#### Returns

string

  The string representation of the value of this instance, consisting of two hexadecimal numbers of up to 8 digits each, separated by a slash

### TryParse(ReadOnlySpan<char>, out NpgsqlLogSequenceNumber)

Tries to convert the span representation of a Log Sequence Number to an NpgsqlLogSequenceNumber instance. A return value indicates whether the conversion succeeded or failed.

    public static bool TryParse(ReadOnlySpan<char> s, out NpgsqlLogSequenceNumber result)

#### Parameters

`s` ReadOnlySpan<char>

  A span containing the characters that represent the Log Sequence Number to convert.

`result` NpgsqlLogSequenceNumber

  When this method returns, contains a NpgsqlLogSequenceNumber instance equivalent to the Log Sequence Number contained in `s`, if the conversion succeeded, or the default value for NpgsqlLogSequenceNumber (`0`) if the conversion failed. The conversion fails if the `s` parameter is empty, is not in the right format, or represents a number less than MinValue or greater than MaxValue. This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

#### Returns

bool

  true if `s` was converted successfully; otherwise, false.

### TryParse(string, out NpgsqlLogSequenceNumber)

Tries to convert the string representation of a Log Sequence Number to an NpgsqlLogSequenceNumber instance. A return value indicates whether the conversion succeeded or failed.

    public static bool TryParse(string s, out NpgsqlLogSequenceNumber result)

#### Parameters

`s` string

  A string that represents the Log Sequence Number to convert.

`result` NpgsqlLogSequenceNumber

  When this method returns, contains a NpgsqlLogSequenceNumber instance equivalent to the Log Sequence Number contained in `s`, if the conversion succeeded, or the default value for NpgsqlLogSequenceNumber (`0`) if the conversion failed. The conversion fails if the `s` parameter is null or Empty, is not in the right format, or represents a number less than MinValue or greater than MaxValue. This parameter is passed uninitialized; any value originally supplied in result will be overwritten.

#### Returns

bool

  true if `s`c> was converted successfully; otherwise, false.

## Operators

### operator +(NpgsqlLogSequenceNumber, double)

Add the number of bytes to a NpgsqlLogSequenceNumber instance, giving a new NpgsqlLogSequenceNumber instance. Handles both positive and negative numbers of bytes.

    public static NpgsqlLogSequenceNumber operator +(NpgsqlLogSequenceNumber lsn, double nbytes)

#### Parameters

`lsn` NpgsqlLogSequenceNumber

  The NpgsqlLogSequenceNumber instance representing a write-ahead log location.

`nbytes` double

  The number of bytes to add.

#### Returns

NpgsqlLogSequenceNumber

  A new NpgsqlLogSequenceNumber instance.

#### Exceptions

OverflowException

  The resulting NpgsqlLogSequenceNumber instance would represent a number greater than MaxValue.

### operator ==(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value that indicates whether two specified instances of NpgsqlLogSequenceNumber are equal.

    public static bool operator ==(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first Log Sequence Number to compare.

`value2` NpgsqlLogSequenceNumber

  The second Log Sequence Number to compare.

#### Returns

bool

  true if `value1` equals `value2`; otherwise, false.

### explicit operator ulong(NpgsqlLogSequenceNumber)

Converts the value of a NpgsqlLogSequenceNumber instance to a 64-bit unsigned integer value.

    public static explicit operator ulong(NpgsqlLogSequenceNumber value)

#### Parameters

`value` NpgsqlLogSequenceNumber

  A NpgsqlLogSequenceNumber instance

#### Returns

ulong

  The contents of `value` as 64-bit unsigned integer.

### explicit operator NpgsqlLogSequenceNumber(ulong)

Converts the value of a 64-bit unsigned integer to a NpgsqlLogSequenceNumber instance.

    public static explicit operator NpgsqlLogSequenceNumber(ulong value)

#### Parameters

`value` ulong

  A 64-bit unsigned integer.

#### Returns

NpgsqlLogSequenceNumber

  A new instance of NpgsqlLogSequenceNumber initialized to `value`.

### operator >(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value indicating whether a specified NpgsqlLogSequenceNumber instance is greater than another specified NpgsqlLogSequenceNumber instance.

    public static bool operator >(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

bool

  true if `value1` is greater than `value2`; otherwise, false.

### operator >=(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value indicating whether a specified NpgsqlLogSequenceNumber instance is greater than or equal to another specified NpgsqlLogSequenceNumber instance.

    public static bool operator >=(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

bool

  true if `value1` is greater than or equal to `value2`; otherwise, false.

### operator !=(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value that indicates whether two specified instances of NpgsqlLogSequenceNumber are not equal.

    public static bool operator !=(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first Log Sequence Number to compare.

`value2` NpgsqlLogSequenceNumber

  The second Log Sequence Number to compare.

#### Returns

bool

  true if `value1` does not equal `value2`; otherwise, false.

### operator <(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value indicating whether a specified NpgsqlLogSequenceNumber instance is less than another specified NpgsqlLogSequenceNumber instance.

    public static bool operator <(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

bool

  true if `value1` is less than `value2`; otherwise, false.

### operator <=(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Returns a value indicating whether a specified NpgsqlLogSequenceNumber instance is less than or equal to another specified NpgsqlLogSequenceNumber instance.

    public static bool operator <=(NpgsqlLogSequenceNumber value1, NpgsqlLogSequenceNumber value2)

#### Parameters

`value1` NpgsqlLogSequenceNumber

  The first value to compare.

`value2` NpgsqlLogSequenceNumber

  The second value to compare.

#### Returns

bool

  true if `value1` is less than or equal to `value2`; otherwise, false.

### operator -(NpgsqlLogSequenceNumber, NpgsqlLogSequenceNumber)

Subtracts two specified NpgsqlLogSequenceNumber values.

    public static ulong operator -(NpgsqlLogSequenceNumber first, NpgsqlLogSequenceNumber second)

#### Parameters

`first` NpgsqlLogSequenceNumber

  The first NpgsqlLogSequenceNumber value.

`second` NpgsqlLogSequenceNumber

  The second NpgsqlLogSequenceNumber value.

#### Returns

ulong

  The number of bytes separating those write-ahead log locations.

### operator -(NpgsqlLogSequenceNumber, double)

Subtract the number of bytes from a NpgsqlLogSequenceNumber instance, giving a new NpgsqlLogSequenceNumber instance. Handles both positive and negative numbers of bytes.

    public static NpgsqlLogSequenceNumber operator -(NpgsqlLogSequenceNumber lsn, double nbytes)

#### Parameters

`lsn` NpgsqlLogSequenceNumber

  The NpgsqlLogSequenceNumber instance representing a write-ahead log location.

`nbytes` double

  The number of bytes to subtract.

#### Returns

NpgsqlLogSequenceNumber

  A new NpgsqlLogSequenceNumber instance.

#### Exceptions

OverflowException

  The resulting NpgsqlLogSequenceNumber instance would represent a number less than MinValue.