Allow time-line insertion
There is a class of conditions data, which is typically written only once and never corrected. For example, slow controls data. It is measured and recorded once and it is hard to imagine a practical reason to ever go back and correct this data. For this kind of data, it makes more practical sense to allow non-sequential data upload and interpret out-of-sequence uploads as insertion of new measurements into the timeline instead of overriding the timeline.
So the idea is to introduce new flag on the upload or "put" function, explicitly requesting the database to add insert these new measurements into existing timeline instead of overriding the future.
The caveat here is that data compression algorithm works only when the data for same channel is added sequentially. In other words, timeline insertions and data compression can never be done for the same table. To work around this, the idea is to introduce table properties. Each ConDB "table" will have one or more properties in the database. First property will be whether the data can be compressed for such a table. By default, that flag will be set to True because most of tables are now created by NOvA and they do write data sequentially and they expect data to be compressed.
If the data compression flag for the table is set to true, attempting to insert data into the timeline will cause an error.
If the data compression flag is set to false, data will never be compressed and if tolerances are specified, that will cause an error response.