This patch does the following:
* Fix a year storage issue in the datestamp for the columnstore tables
metadata table (note that any previous tables will still have the
incorrect year stored).
* Expose the table creation date in CalpontSystemCatalog::getTables()
* Add an INFORMATION_SCHEMA table listing the tables in ColumnStore
(similar to systable)
* Add an INFORMATION_SCHEMA table listing the columns in ColumnStore
(similar to syscolumn)
* Add an INFORMATION_SCHEMA table listing the extents in ColumnStore
(similar to the editem tool but with additional file information)
* Modifies the build system and scripts to support the new tables
This changes the warning for truncation to the correct MariaDB error
code (1264).
In addition it passes the strict mode up into the DML class to roll back
correctly.
It also sets the abort_on_warning flag for updates as this isn't set on
the rnd_init phase but is needed for strict mode to work.
For "select * from {view} where {col} in ({subquery})" type queries the
join for 'in' was being processed before any joins in the view. This
patch changes the priority so joins in views are processed first.
It is possible for an exception to be thrown when a memory limit is hit
whilst a mutex is lock. That mutex is never unlocked and in Ubuntu 16.04
release build it can cause a crash when freed.
This patch catches the exception, releases the lock and then re-throws.
If a query uses '0000-00-00' the value to compare with is hard-coded to
0. With date types there are 6 unused bits set to 1 so a zero date is
stored as 3F 00 00 00.
This removes the hard-coded setting of '0000-00-00' to 0 and uses the
correct conversion routines instead.
Datetime has internal int value which is very different to MySQL's int
value. This patch differentiates between the two and also fixes a column
width issue which appeared once the datetime handling was fixed.
When infinidb_use_import_for_batchinsert is enabled the NULL handling
for the batch insert was incorrect. This is due to an off-by-one on the
NULL bitmap. This also affects INSERT...SELECT.
During subquery processing it is possible to have an empty Having
clause. When this happens various tree elements are deleted but the
pointers to those tree elements are not set to NULL. So later on in
processing ExeMgr can crash.
NULL is now pushed through the MariaDB storage engine plugin down to the
insert processing. A '0000-00-00' date is now a separate value to NULL.
This is more in-line with MariaDB's handling.