I tried this on memsql 6.8 and 7.0 beta 1 and could not repro the problem. Could you tell me what version of memsql you were using? In MemSQL âSelect @@memsql_versionâ will tell us what version you were testing.
I abbreviated your scenario and here is a complete example, it returns 4 rows.
CREATE TABLE `EtlStepExecution` (
`Id` bigint(11) NOT NULL AUTO_INCREMENT,
`StepId` bigint(20) unsigned NOT NULL,
`PackageExecutionId` bigint(20) unsigned NOT NULL,
`StartTime` datetime DEFAULT NULL,
`EndTime` datetime DEFAULT NULL,
`Status` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`StartReason` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`FailedReason` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`Id`)
) AUTO_INCREMENT=1;
CREATE TABLE `EtlStep` (
`Id` bigint(11) NOT NULL AUTO_INCREMENT,
`PackageId` bigint(20) unsigned NOT NULL,
`StepType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`Name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
`Description` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`Payload` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`NextStepId` bigint(20) unsigned DEFAULT NULL,
`Finalize` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
PRIMARY KEY (`Id`)
) AUTO_INCREMENT=1;
insert into EtlStepExecution
-- id, stepid, package exec id
values (300034, 2002, 30014,null,null,null,null, null ),
(300035, 2006, 30014,null,null,null,null, null ),
(300037, 3063, 30014,null,null,null,null, null );
insert into EtlStep
-- id, packid,
values (3063, 2000,null,null,null,null,null,null ),
(2002, 2000,null,null,null,null,null,null ),
(2006, 2000,null,null,null,null,null,null ),
(2018, 2000,null,null,null,null,null,null );
SELECT * from EtlStep
LEFT JOIN EtlStepExecution on EtlStep.Id = EtlStepExecution.StepId
where EtlStep.PackageId = 2000 AND
(EtlStepExecution.PackageExecutionId = 30014 OR
EtlStepExecution.StepId is null);