BLOBs that are longer than half the maximum length of the column would
be turned into a negative length due to signed int casting. This would
cause them to turn into NULL inserts. Unsigned now used.
* 64KB TEXT column had off-by-one length pointer counting
* TEXT I_S/LDI was looping where it shouldn't causing pointer issues
* TEXT data type wasn't fully understood by cpimport
DBRM connections are reused so that we don't have a huge amount of
TIME_WAIT sockets when there are large amounts of DML. Also applied to
i_s.columnstore_files
DBRM connections are reused so that we don't have a huge amount of
TIME_WAIT sockets when there are large amounts of DML. Also applied to
i_s.columnstore_files
* TEXT and BLOB now have separate identifiers internally
* TEXT columns are identified as such in system catalog
* cpimport only requires hex input for BLOB, not TEXT
The string stream which builds up the PM details wasn't cleared on each
run. This moves the creation of the string stream up to where it is
needed so a clean one is used each time.
The string stream which builds up the PM details wasn't cleared on each
run. This moves the creation of the string stream up to where it is
needed so a clean one is used each time.
This patch adds enough support so that cross engines joins with blob
columns in the foreign engines will work. The modifications are as
follows:
* Add CrossEngine support for non-NULL-terminated (binary) data
* Add row data support for blobs (similar to varbinary)
* Add engine support for writing out blob data correctly to the storage
engine API
* Re-enable blob support in the engine plugin
The old procedure could be wildly incorrect when there were multiple
extents for a dictionary column.
The new one uses tables so that columnstore_files doesn't get
hammered too hard. They can't be temporary tables due to the reuse
restriction on temporary tables.
The old procedure could be wildly incorrect when there were multiple
extents for a dictionary column.
The new one uses tables so that columnstore_files doesn't get
hammered too hard. They can't be temporary tables due to the reuse
restriction on temporary tables.
This does the following:
* Switch resource manager to a singleton which reduces the amount of
times the XML data is scanned and objects allocated.
* Make the I_S tables use the FE implementation of the system catalog
* Make the I_S.columnstore_columns table use the RID list cache
* Make the extentmap pre-allocate a vector instead of many small allocs
It is possible for a BLOB/TEXT column to appear in a cross engine join.
This causes an ExeMgr crash later during execution. For now this patch
disable BLOB/TEXT support.
This patch allows the following syntax to change the current
autoincrement value for the table:
ALTER TABLE table_name COMMENT='autoincrement=value';
Where "value" is the new integer to be used.
Arithmatic on two functions inside an aggregate function caused an error
due to the function not being parsed correctly. This fix parses the
function for the arithmatic.
I_S.COLUMNSTORE_FILES returned bad filenames and NULL file sizes when
there are multiple nodes in a ColumnStore cluster
It adds an extra message call to the WriteEngine to get the file size
for that file. The I_S function will figure out which WriteEngine to
communicate with and get the file size details from it.
When a table has 8 columns that could be NULL and a NOT NULL column
after the NULLable columns the check to see if we have gone over the
NULL bitmap byte limit is run prematurely trigging an error.
This patch moves the check to only run when we are looking at NULLable
columns.