
================================================================
OLD NULL-HANDLING


---------------------------------------------------------------- ok
mlr put $z = $x + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=3
x=1,y=,s=,z=
x=,y=,s=hurrah,z=


---------------------------------------------------------------- ok
mlr put $z = $y + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=4
x=1,y=,s=,z=
x=,y=,s=hurrah,z=


---------------------------------------------------------------- FIXME FOR SRECS
mlr put $z = $x + $nosuch ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=1
x=1,y=,s=,z=1
x=,y=,s=hurrah,z=


---------------------------------------------------------------- ok
mlr put $t = sub($s,       "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=hXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah


---------------------------------------------------------------- ok
mlr put $t = sub($s,       "ell", "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=ho
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah


---------------------------------------------------------------- ok
mlr put $t = sub($nosuch,  "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=
x=1,y=,s=,t=
x=,y=,s=hurrah,t=


---------------------------------------------------------------- ok
mlr put $t = gsub($s,      "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heXXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah


---------------------------------------------------------------- ok
mlr put $t = gsub($s,      "l",   "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah


---------------------------------------------------------------- ok
mlr put $t = gsub($nosuch, "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=
x=1,y=,s=,t=
x=,y=,s=hurrah,t=


================================================================
NULLITY PREDICATES

mlr --opprint filter isnull($x) ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b - - -

mlr --opprint filter isnull($y) ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b - - -

mlr --opprint filter isnull($z) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter isnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter isnotnull($x) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -

mlr --opprint filter isnotnull($y) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b - 6 -

mlr --opprint filter isnotnull($z) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isnotnull($nosuch) ./reg_test/input/nullvals.dkvp

mlr --opprint put $f=isnull($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=isnull($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=isnull($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isnotnull($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=isnotnull($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false


================================================================
TRI-SPLIT-NULL HANDLING


---------------------------------------------------------------- ok
mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy
sum=4.536294


---------------------------------------------------------------- ok
mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442


---------------------------------------------------------------- ok
mlr put $nonesuch = @nonesuch ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,nonesuch=
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,nonesuch=
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,nonesuch=
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,nonesuch=
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,nonesuch=
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,nonesuch=
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,nonesuch=
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,nonesuch=
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,nonesuch=
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nonesuch=


---------------------------------------------------------------- ok
mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy-het
sum=3.963005


---------------------------------------------------------------- ok
mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy-het
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=
a=zee,sum=1.125680


---------------------------------------------------------------- ok
mlr put $nonesuch = @nonesuch ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,nonesuch=
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,nonesuch=
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,nonesuch=
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,nonesuch=
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,nonesuch=
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,nonesuch=
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,nonesuch=
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,nonesuch=
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,nonesuch=
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nonesuch=

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=0.346790
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.105470
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.310073
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.264762
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.791888
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.403672
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.002226
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.033668
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.536294
sum=4.536294

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy-het
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=0.346790
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.105470
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.310073
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_ABSENT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.218599
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.830383
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.428937
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.460379
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.963005
sum=3.963005

mlr put $z = $x + $y ./reg_test/input/typeof.dkvp
x=1,y=2,z=3
x=1,y=,z=
x=,y=2,z=
x=,y=,z=

mlr put $z = $x + $y ./reg_test/input/typeof.dkvp
x=1,y=2,z=3
x=1,y=,z=
x=,y=2,z=
x=,y=,z=

mlr put $z = $x + $u ./reg_test/input/typeof.dkvp
x=1,y=2,z=1
x=1,y=,z=1
x=,y=2,z=
x=,y=,z=

mlr put @s = @s + $y; emitp @s ./reg_test/input/typeof.dkvp
s=2
x=1,y=2
s=
x=1,y=
s=
x=,y=2
s=
x=,y=

mlr put @s = @s + $y; emitp @s ./reg_test/input/typeof.dkvp
s=2
x=1,y=2
s=
x=1,y=
s=
x=,y=2
s=
x=,y=

mlr put @s = @s + $u; emitp @s ./reg_test/input/typeof.dkvp
s=
x=1,y=2
s=
x=1,y=
s=
x=,y=2
s=
x=,y=

mlr put $z = $x + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_INT
x=MT_INT,y=MT_VOID,z=MT_VOID
x=MT_VOID,y=MT_INT,z=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_VOID

mlr put $z = $x + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_INT
x=MT_INT,y=MT_VOID,z=MT_VOID
x=MT_VOID,y=MT_INT,z=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_VOID

mlr put $z = $x + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_INT
x=MT_INT,y=MT_VOID,z=MT_INT
x=MT_VOID,y=MT_INT,z=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_VOID

mlr put @s = @s + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_ABSENT,s=MT_INT
x=MT_INT,y=MT_VOID,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_INT,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_ABSENT,s=MT_VOID

mlr put @s = @s + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_ABSENT,s=MT_INT
x=MT_INT,y=MT_VOID,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_INT,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_ABSENT,s=MT_VOID

mlr put @s = @s + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_ABSENT,s=MT_VOID
x=MT_INT,y=MT_VOID,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_INT,z=MT_ABSENT,s=MT_VOID
x=MT_VOID,y=MT_VOID,z=MT_ABSENT,s=MT_VOID


================================================================
ABSENT-HANDLING


---------------------------------------------------------------- FIXME FOR SRECS
mlr put $a = $a * 2 ./reg_test/input/absent.dkvp
a=2,b=2
a=,b=4
x=,b=6,a=2
a=14,b=8


---------------------------------------------------------------- FIXME FOR SRECS
mlr put $new = $a * 2 ./reg_test/input/absent.dkvp
a=1,b=2,new=2
a=,b=4,new=
x=,b=6,new=2
a=7,b=8,new=14


---------------------------------------------------------------- ok for oosvars
mlr put $new = @nonesuch * 2 ./reg_test/input/absent.dkvp
a=1,b=2,new=2
a=,b=4,new=2
x=,b=6,new=2
a=7,b=8,new=2


---------------------------------------------------------------- ok
mlr put begin {@somesuch = 10 }; $new = @somesuch * 2 ./reg_test/input/absent.dkvp
a=1,b=2,new=20
a=,b=4,new=20
x=,b=6,new=20
a=7,b=8,new=20


---------------------------------------------------------------- FIXME FOR SRECS
mlr put $new = @nonesuch * $a ./reg_test/input/absent.dkvp
a=1,b=2,new=1
a=,b=4,new=
x=,b=6,new=
a=7,b=8,new=7


---------------------------------------------------------------- ok
mlr put begin {@somesuch = 10 }; $new = @somesuch * $a ./reg_test/input/absent.dkvp
a=1,b=2,new=10
a=,b=4,new=
x=,b=6,new=10
a=7,b=8,new=70


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put @sum = @sum + $a; emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=1
a=1,b=2
sum=
a=,b=4
sum=
x=,b=6
sum=
a=7,b=8
sum=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put @product = @product * $a; emit @product; end { emit @product } ./reg_test/input/absent.dkvp
product=1
a=1,b=2
product=
a=,b=4
product=
x=,b=6
product=
a=7,b=8
product=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put begin { @sum = 10 }; @sum = @sum + $a; emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=11
a=1,b=2
sum=
a=,b=4
sum=
x=,b=6
sum=
a=7,b=8
sum=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put begin { @product = 10 }; @product = @product * $a; emit @product; end { emit @product } ./reg_test/input/absent.dkvp
product=10
a=1,b=2
product=
a=,b=4
product=
x=,b=6
product=
a=7,b=8
product=


================================================================
COMPARE OLD TESTS TO NEW


---------------------------------------------------------------- raw input
mlr cat ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


---------------------------------------------------------------- ok
mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy-het
sum=3.963005


---------------------------------------------------------------- ok
mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy-het
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=
a=zee,sum=1.125680


---------------------------------------------------------------- ok
mlr put $nonesuch = @nonesuch ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,nonesuch=
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,nonesuch=
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,nonesuch=
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,nonesuch=
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,nonesuch=
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,nonesuch=
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,nonesuch=
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,nonesuch=
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,nonesuch=
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nonesuch=


---------------------------------------------------------------- raw input
mlr cat ./reg_test/input/absent.dkvp
a=1,b=2
a=,b=4
x=,b=6
a=7,b=8


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put @sum = @sum + $a; emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=1
a=1,b=2
sum=
a=,b=4
sum=
x=,b=6
sum=
a=7,b=8
sum=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put @product = @product * $a; emit @product; end { emit @product } ./reg_test/input/absent.dkvp
product=1
a=1,b=2
product=
a=,b=4
product=
x=,b=6
product=
a=7,b=8
product=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put begin { @sum = 10 }; @sum = @sum + $a; emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=11
a=1,b=2
sum=
a=,b=4
sum=
x=,b=6
sum=
a=7,b=8
sum=


---------------------------------------------------------------- FIXME AND COMPARE TO ABOVE
mlr put begin { @product = 10 }; @product = @product * $a; emit @product; end { emit @product } ./reg_test/input/absent.dkvp
product=10
a=1,b=2
product=
a=,b=4
product=
x=,b=6
product=
a=7,b=8
product=


---------------------------------------------------------------- COMPARE
mlr put emit @sum; @sum += $x; emit @sum; end { emit @sum } ./reg_test/input/abixy-het
sum=0.346790
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
sum=0.346790
sum=1.105470
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
sum=1.105470
sum=1.310073
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
sum=1.310073
sum=1.691473
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
sum=1.691473
sum=1.691473
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
sum=1.691473
sum=2.218599
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
sum=2.218599
sum=2.830383
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
sum=2.830383
sum=3.428937
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
sum=3.428937
sum=3.460379
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
sum=3.460379
sum=3.963005
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
sum=3.963005


---------------------------------------------------------------- COMPARE
mlr put emit @sum; @sum += $a; emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=1
a=1,b=2
sum=1
sum=
a=,b=4
sum=
sum=
x=,b=6
sum=
sum=
a=7,b=8
sum=

mlr put emit @sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum += $x; $nstype=typeof(@sum);emit @sum; end { emit @sum } ./reg_test/input/abixy-het
sum=0.346790
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,ostype=MT_UNINIT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=0.346790
sum=1.105470
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=1.105470
sum=1.310073
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=1.310073
sum=1.691473
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=1.691473
sum=1.691473
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,ostype=MT_FLOAT,xtype=MT_ABSENT,nstype=MT_FLOAT
sum=1.691473
sum=2.218599
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=2.218599
sum=2.830383
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=2.830383
sum=3.428937
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=3.428937
sum=3.460379
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=3.460379
sum=3.963005
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,ostype=MT_FLOAT,xtype=MT_FLOAT,nstype=MT_FLOAT
sum=3.963005

mlr put emit @sum; $ostype=typeof(@sum);$atype=typeof($a);@sum += $a; $nstype=typeof(@sum);emit @sum; end { emit @sum } ./reg_test/input/absent.dkvp
sum=1
a=1,b=2,ostype=MT_UNINIT,atype=MT_INT,nstype=MT_INT
sum=1
sum=
a=,b=4,ostype=MT_INT,atype=MT_VOID,nstype=MT_VOID
sum=
sum=
x=,b=6,ostype=MT_VOID,atype=MT_ABSENT,nstype=MT_VOID
sum=
sum=
a=7,b=8,ostype=MT_VOID,atype=MT_INT,nstype=MT_VOID
sum=


================================================================
NARROW IN


----------------------------------------------------------------
mlr cat
x=1
x=
x=7

mlr put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum += $x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1,osum=,ostype=MT_UNINIT,xtype=MT_INT,nstype=MT_INT,nsum=1
x=,osum=1,ostype=MT_INT,xtype=MT_VOID,nstype=MT_VOID,nsum=
x=7,osum=,ostype=MT_VOID,xtype=MT_INT,nstype=MT_VOID,nsum=
sum=


----------------------------------------------------------------
mlr cat
x=1
xxx=
x=7

mlr put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum += $x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1,osum=,ostype=MT_UNINIT,xtype=MT_INT,nstype=MT_INT,nsum=1
xxx=,osum=1,ostype=MT_INT,xtype=MT_ABSENT,nstype=MT_INT,nsum=1
x=7,osum=1,ostype=MT_INT,xtype=MT_INT,nstype=MT_INT,nsum=8
sum=8


----------------------------------------------------------------
mlr cat
x=1
x=
y=
x=7

mlr --ofs tab put $xtype=typeof($x);$sum = $x + 10; $stype=typeof($sum)
x=1	xtype=MT_INT	sum=11	stype=MT_INT
x=	xtype=MT_VOID	sum=	stype=MT_VOID
y=	xtype=MT_ABSENT	sum=10	stype=MT_INT
x=7	xtype=MT_INT	sum=17	stype=MT_INT

