Skip to content

Commit 96ebb57

Browse files
committed
fix null comparison in case when
1 parent 2f75345 commit 96ebb57

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

QueryBuilder/Compilers/Compiler.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,8 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
420420

421421
while (pointer <= (subparts.Length - 1))
422422
{
423-
var piece = subparts[pointer].ToString().ToUpperInvariant().Trim();
424-
if (pointer > 0 && !substart)
423+
var piece = subparts[pointer]?.ToString().ToUpperInvariant().Trim();
424+
if (pointer > 0 && !substart && piece != null)
425425
{
426426
if (!VERB.SpecialChar.Any(s => s == piece) && criteriaValue)
427427
{
@@ -444,7 +444,8 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
444444
}
445445
}
446446

447-
if (!criteriaValue && VERB.AndOrOpertors.Any(s => s == piece))
447+
448+
if (!criteriaValue && (piece is null || VERB.AndOrOpertors.Any(s => s == piece)))
448449
{
449450
pointer = subparts.Length;
450451
break;
@@ -481,6 +482,7 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
481482
{
482483
field = piece;
483484
}
485+
484486
if (substart && criteriaValue && !string.IsNullOrEmpty(field))
485487
{
486488

@@ -494,7 +496,14 @@ private void SetUpCaseWhenUpdatePart(SqlResult ctx, List<string> parts, string c
494496
casewrap.Append(" ").Append(VERB.When);
495497
}
496498

497-
casewrap.Append($" {field} = {(setasfield ? subparts[pointer] : Parameter(ctx, subparts[pointer]))}");
499+
if (subparts[pointer] is not null)
500+
{
501+
casewrap.Append($" {field} = {(setasfield ? subparts[pointer] : Parameter(ctx, subparts[pointer]))}");
502+
}
503+
else
504+
{
505+
casewrap.Append($" {field} is NULL");
506+
}
498507
substart = false;
499508
setasfield = false;
500509
start = false;

0 commit comments

Comments
 (0)