To implement parsing of more complex queries, the Archive Providers need to handle a combination of a "real" query and a place to hold expansions of individual restrictions until they can be put together properly. This class is the vehicle for that. See RestrictionParsingHelper for details.
public class ArchiveSelect
Even simple constructor (no origin name)
public ArchiveSelect(string origin)
By default we convert left outer joins to inner joins when there are restrictions on them; CS uses multiple joins with OR between adjacent-table restrictions and then we need to turn this behaviour OFF. Quite possibly the whole left outer to inner conversion was a bad idea in the first case, caused by insufficient understanding of the finer points of SQL :-(. We live & learn.
public bool DoNotConvertOuterJoinsToInnerJoins
Holding data structure for restriction expansions that are NOT directly appended to the Query; putting restrictions on hold here is the NORMAL CASE.
public RestrictionExpansionHolder ExpansionHolder
Options, passed in through GetRows() and available to anyone
public string Options
The SQL query being built
public Select Query
Add an expansion of an ArchiveRestrictionInfo to the holding structure
public void AddExpansion(ArchiveRestrictionInfo restriction, Restriction expansion)
Restriction definition we are expanding
The SQL Restriction that this definition has been expanded to