in src/TriggersBinding/MySqlTableChangeMonitor.cs [791:817]
private MySqlCommand BuildCountUnprocessedChanges(MySqlConnection connection, MySqlTransaction transaction, string newLastPolledTime)
{
string leasesTableJoinCondition = string.Join(" AND ", this._primaryKeyColumns.Select(col => $"u.{col.name.AsAcuteQuotedString()} = l.{col.name.AsAcuteQuotedString()}"));
string countUnprocessedQuery = $@"
SELECT COUNT(*)
FROM {this._userTable.AcuteQuotedFullName} AS u
LEFT JOIN {this._leasesTableName} AS l ON {leasesTableJoinCondition}
WHERE
({UpdateAtColumnName} > (select {GlobalStateTableLastPolledTimeColumnName} from {GlobalStateTableName} where {GlobalStateTableUserFunctionIDColumnName} = '{this._userFunctionId}' AND {GlobalStateTableUserTableIDColumnName} = '{this._userTableId}'))
AND
({UpdateAtColumnName} <= TIMESTAMP('{newLastPolledTime}'))
AND
( (l.{LeasesTableSyncCompletedTime} IS NULL)
OR
(l.{LeasesTableSyncCompletedTime} < {UpdateAtColumnName})
)
AND
( (l.{LeasesTableAttemptCountColumnName} IS NULL)
OR
(l.{LeasesTableAttemptCountColumnName} between {InitialValueAttemptCount} and {MaxChangeProcessAttemptCount})
)
;
";
return new MySqlCommand(countUnprocessedQuery, connection, transaction);
}