This appears to be to fix equality matches in InfiniDB but at the same
time it breaks LIKE processing. Equality matching with trailing
whitespace was fixed in MCOL-1246 so the old InfiniDB patch can be
removed.
The LIKE part of the query for non-dict CHAR/VARCHAR was converted to an
INT based on the length of the column. So on a 2 byte CHAR a LIKE of
'%05%' was truncated to '%0' which is a very different query. We should
not cast this to INT because we could use a LIKE of > 8 bytes on a
non-dict column. This patch turns LIKE into an expressionStep which
cater for longer strings rather than a simpleFilter.
pDictionaryScan won't work for BLOB/TEXT since it requires searching the
data file and rebuilding the token from matches. The tokens can't be
rebuild correctly due the bits in the token used for block counts. This
patch forces the use of pDictionaryStep instead for WHERE conditions.
In addition this patch adds support for TEXT/BLOB in various parts of
the job step processing. This fixes things like error 202 during an
UPDATE with a join condition on TEXT/BLOB columns.
* 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
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.
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.