SETsTextData='SELECT domain_id, entity_id, property_id FROM `null_data` AS subdata';
ELSEIFo='!0'THEN
#-- special case: property IS NOT NULL
#-- generate statement parts
SETvText=NULL;
LEAVEPOV_LABEL;
ELSEIFo='0'THEN
#-- special case: property IS NULL
#-- generate statement parts
SETvText=NULL;
SETsTextData='SELECT domain_id, entity_id, property_id FROM `null_data` AS subdata';
ELSEIFo='!0'THEN
#-- special case: property IS NOT NULL
#-- generate statement parts
SETvText=NULL;
SETsTextData='SELECT DISTINCT domain_id, entity_id, property_id FROM `text_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `enum_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `integer_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `double_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `date_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `datetime_data` AS subdata WHERE subdata.value IS NOT NULL UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `reference_data` AS subdata WHERE subdata.value IS NOT NULL';
ELSEIFo="("oro="!("THEN
SETsTextData=IF(vTextISNULL,' SELECT DISTINCT domain_id, entity_id, property_id FROM `date_data`',IF(vDateTimeDotNotationISNULL,NULL,CONCAT(' SELECT DISTINCT domain_id, entity_id, property_id FROM `date_data` AS subdata WHERE ',getDateWhereClause(vDateTimeDotNotation,o))));
SETsDatetimeData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `datetime_data`',IF(vDateTimeISNULL,NULL,CONCAT(' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `datetime_data` AS subdata WHERE ',getDateTimeWhereClause(vDateTime,o))));
SET@aggValueStmtStr=CONCAT('SELECT ',agg,'(subdata.value), ',agg,'(convert_unit(subdata.unit_sig,subdata.value)), COUNT(DISTINCT standard_unit(subdata.unit_sig)), max(standard_unit(subdata.unit_sig)) INTO @sAggValue, @sAggValueConvert, @distinctUnits, @StdUnitSig FROM (SELECT entity_id, property_id, value, unit_sig FROM `integer_data` UNION SELECT entity_id, property_id, value, unit_sig FROM `double_data`) AS subdata WHERE ',aggValueWhereClause);
SET@aggValueStmtStr=CONCAT('SELECT ',agg,'(subdata.value), ',agg,'(convert_unit(subdata.unit_sig,subdata.value)), COUNT(DISTINCT standard_unit(subdata.unit_sig)), max(standard_unit(subdata.unit_sig)) INTO @sAggValue, @sAggValueConvert, @distinctUnits, @StdUnitSig FROM (SELECT entity_id, property_id, value, unit_sig FROM `integer_data` UNION SELECT entity_id, property_id, value, unit_sig FROM `double_data`) AS subdata WHERE ',aggValueWhereClause);
#-- run statement
PREPAREstmtAggValueStmtFROM@aggValueStmtStr;
...
...
@@ -97,7 +97,7 @@ POV_LABEL: BEGIN
SETvText=NULL;
ELSE
#-- generate statement parts
#-- generate statement parts
SETsTextData=IF(vTextISNULL,'SELECT DISTINCT domain_id, entity_id, property_id FROM `text_data`',CONCAT('SELECT DISTINCT domain_id, entity_id, property_id FROM `text_data` AS subdata WHERE subdata.value ',o,' ?'));
SETsEnumData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `enum_data`',CONCAT(' UNION SELECT DISTINCT domain_id, entity_id, property_id FROM `enum_data` AS subdata WHERE subdata.value ',o,' ?'));
SETsIntData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT subdata.domain_id, subdata.entity_id, subdata.property_id FROM `integer_data` AS subdata',IF(vIntISNULLANDvDoubleStdUnitISNULL,NULL,CONCAT(' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `integer_data` AS subdata WHERE ',getDoubleWhereClause(vInt,unit_sig,vDoubleStdUnit,stdUnit_sig,o))));
...
...
@@ -105,18 +105,18 @@ POV_LABEL: BEGIN
SETsDatetimeData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `datetime_data`',IF(vDateTimeISNULL,NULL,CONCAT(' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `datetime_data` AS subdata WHERE ',getDateTimeWhereClause(vDateTime,o))));
SETsDateData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `date_data`',IF(vDateTimeDotNotationISNULL,NULL,CONCAT(' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `date_data` AS subdata WHERE ',getDateWhereClause(vDateTimeDotNotation,o))));
SETsRefData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `reference_data`',IF(refIdsTableISNULL,NULL,CONCAT(' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `reference_data` AS subdata WHERE EXISTS (SELECT 1 FROM `',refIdsTable,'` AS refIdsTable WHERE subdata.value=refIdsTable.id LIMIT 1)')));
SETsNullData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `null_data`',NULL);
ENDIF;
SETsNullData=IF(vTextISNULL,' UNION ALL SELECT DISTINCT domain_id, entity_id, property_id FROM `null_data`',NULL);
ENDIF;
SETdata=CONCAT('(',sTextData,
IF(sEnumDataISNULL,'',sEnumData),
IF(sEnumDataISNULL,'',sEnumData),
IF(sDoubleDataISNULL,'',sDoubleData),
IF(sIntDataISNULL,'',sIntData),
IF(sDatetimeDataISNULL,'',sDatetimeData),
IF(sDateDataISNULL,'',sDateData),
IF(sRefDataISNULL,'',sRefData),
IF(sNullDataISNULL,'',sNullData),
IF(sNullDataISNULL,'',sNullData),
')'
);
...
...
@@ -124,20 +124,20 @@ POV_LABEL: BEGIN
callcreateTmpTable(keepTabl);
#-- generate statement from statement parts
SET@stmtPOVkeepTblStr=CONCAT("INSERT IGNORE INTO `",keepTabl,"` (id) SELECT DISTINCT entity_id AS id FROM ",data," as data",IF(propertiesTableISNULL,'',CONCAT(' WHERE EXISTS (Select 1 from `',propertiesTable,'` AS prop WHERE prop.id = data.property_id AND (prop.id2=data.entity_id OR prop.id2=0))')));
SET@stmtPOVStr=CONCAT(
SET@stmtPOVkeepTblStr=CONCAT("INSERT IGNORE INTO `",keepTabl,"` (id) SELECT DISTINCT entity_id AS id FROM ",data," as data",IF(propertiesTableISNULL,'',CONCAT(' WHERE EXISTS (Select 1 from `',propertiesTable,'` AS prop WHERE prop.id = data.property_id AND (prop.id2=data.entity_id OR prop.id2=0))')));
SET@stmtPOVStr=CONCAT(
IF(targetSetISNULL,
CONCAT('DELETE FROM `',sourceSet,'` WHERE NOT EXISTS (SELECT 1 FROM `'),
CONCAT('DELETE FROM `',sourceSet,'` WHERE NOT EXISTS (SELECT 1 FROM `'),
CONCAT('INSERT IGNORE INTO `',targetSet,'` (id) SELECT id FROM `',sourceSet,'` WHERE EXISTS (SELECT 1 FROM `')),
keepTabl,
keepTabl,
'` AS data WHERE data.id=`',sourceSet,'`.`id` LIMIT 1)'
CONCAT('subdata.value',o,'\'',value,'\''),#-- without unit but value must not be NULL
CONCAT('subdata.value',o,'\'',value,'\''),#-- without unit but value must not be NULL
CONCAT(
IF(valueISNULL,'',#-- value is NULL, but valueStdUnit might not be NULL
CONCAT('(subdata.unit_sig=',unit_sig,' AND subdata.value',o,'\'',value,'\') OR ')),
IF(unit_sig=stdUnit_sig,'',CONCAT('(subdata.unit_sig=',stdUnit_sig,' AND subdata.value',o,'\'',valueStdUnit,'\') OR ')),'(standard_unit(subdata.unit_sig)=',stdUnit_sig,' AND convert_unit(subdata.unit_sig,subdata.value)',o,valueStdUnit,')'));#-- with unit and non-null valueStdUnit
CONCAT('(subdata.unit_sig=',unit_sig,' AND subdata.value',o,'\'',value,'\') OR ')),
IF(unit_sig=stdUnit_sig,'',CONCAT('(subdata.unit_sig=',stdUnit_sig,' AND subdata.value',o,'\'',valueStdUnit,'\') OR ')),'(standard_unit(subdata.unit_sig)=',stdUnit_sig,' AND convert_unit(subdata.unit_sig,subdata.value)',o,' ',valueStdUnit,')'));#-- with unit and non-null valueStdUnit