@@ -24,101 +24,113 @@ const (
2424 MaxPointsPerBlock = 1000
2525)
2626
27- func newLimitArrayCursor (cur cursors.Cursor ) cursors.Cursor {
27+ func newLimitArrayCursor (cur cursors.Cursor ) ( cursors.Cursor , error ) {
2828 switch cur := cur .(type ) {
2929
3030 case cursors.FloatArrayCursor :
31- return newFloatLimitArrayCursor (cur )
31+ return newFloatLimitArrayCursor (cur ), nil
3232
3333 case cursors.IntegerArrayCursor :
34- return newIntegerLimitArrayCursor (cur )
34+ return newIntegerLimitArrayCursor (cur ), nil
3535
3636 case cursors.UnsignedArrayCursor :
37- return newUnsignedLimitArrayCursor (cur )
37+ return newUnsignedLimitArrayCursor (cur ), nil
3838
3939 case cursors.StringArrayCursor :
40- return newStringLimitArrayCursor (cur )
40+ return newStringLimitArrayCursor (cur ), nil
4141
4242 case cursors.BooleanArrayCursor :
43- return newBooleanLimitArrayCursor (cur )
43+ return newBooleanLimitArrayCursor (cur ), nil
4444
4545 default :
46- panic (fmt .Sprintf ("unreachable: %T" , cur ))
46+ return nil , & errors2.Error {
47+ Code : errors2 .EInvalid ,
48+ Msg : fmt .Sprintf ("unreachable: %s" , arrayCursorType (cur )),
49+ }
4750 }
4851}
4952
50- func newWindowFirstArrayCursor (cur cursors.Cursor , window interval.Window ) cursors.Cursor {
53+ func newWindowFirstArrayCursor (cur cursors.Cursor , window interval.Window ) ( cursors.Cursor , error ) {
5154 if window .IsZero () {
5255 return newLimitArrayCursor (cur )
5356 }
5457 switch cur := cur .(type ) {
5558
5659 case cursors.FloatArrayCursor :
57- return newFloatWindowFirstArrayCursor (cur , window )
60+ return newFloatWindowFirstArrayCursor (cur , window ), nil
5861
5962 case cursors.IntegerArrayCursor :
60- return newIntegerWindowFirstArrayCursor (cur , window )
63+ return newIntegerWindowFirstArrayCursor (cur , window ), nil
6164
6265 case cursors.UnsignedArrayCursor :
63- return newUnsignedWindowFirstArrayCursor (cur , window )
66+ return newUnsignedWindowFirstArrayCursor (cur , window ), nil
6467
6568 case cursors.StringArrayCursor :
66- return newStringWindowFirstArrayCursor (cur , window )
69+ return newStringWindowFirstArrayCursor (cur , window ), nil
6770
6871 case cursors.BooleanArrayCursor :
69- return newBooleanWindowFirstArrayCursor (cur , window )
72+ return newBooleanWindowFirstArrayCursor (cur , window ), nil
7073
7174 default :
72- panic (fmt .Sprintf ("unreachable: %T" , cur ))
75+ return nil , & errors2.Error {
76+ Code : errors2 .EInvalid ,
77+ Msg : fmt .Sprintf ("unreachable: %s" , arrayCursorType (cur )),
78+ }
7379 }
7480}
7581
76- func newWindowLastArrayCursor (cur cursors.Cursor , window interval.Window ) cursors.Cursor {
82+ func newWindowLastArrayCursor (cur cursors.Cursor , window interval.Window ) ( cursors.Cursor , error ) {
7783 if window .IsZero () {
7884 return newLimitArrayCursor (cur )
7985 }
8086 switch cur := cur .(type ) {
8187
8288 case cursors.FloatArrayCursor :
83- return newFloatWindowLastArrayCursor (cur , window )
89+ return newFloatWindowLastArrayCursor (cur , window ), nil
8490
8591 case cursors.IntegerArrayCursor :
86- return newIntegerWindowLastArrayCursor (cur , window )
92+ return newIntegerWindowLastArrayCursor (cur , window ), nil
8793
8894 case cursors.UnsignedArrayCursor :
89- return newUnsignedWindowLastArrayCursor (cur , window )
95+ return newUnsignedWindowLastArrayCursor (cur , window ), nil
9096
9197 case cursors.StringArrayCursor :
92- return newStringWindowLastArrayCursor (cur , window )
98+ return newStringWindowLastArrayCursor (cur , window ), nil
9399
94100 case cursors.BooleanArrayCursor :
95- return newBooleanWindowLastArrayCursor (cur , window )
101+ return newBooleanWindowLastArrayCursor (cur , window ), nil
96102
97103 default :
98- panic (fmt .Sprintf ("unreachable: %T" , cur ))
104+ return nil , & errors2.Error {
105+ Code : errors2 .EInvalid ,
106+ Msg : fmt .Sprintf ("unreachable: %s" , arrayCursorType (cur )),
107+ }
99108 }
100109}
101110
102- func newWindowCountArrayCursor (cur cursors.Cursor , window interval.Window ) cursors.Cursor {
111+ func newWindowCountArrayCursor (cur cursors.Cursor , window interval.Window ) ( cursors.Cursor , error ) {
103112 switch cur := cur .(type ) {
104113
105114 case cursors.FloatArrayCursor :
106- return newFloatWindowCountArrayCursor (cur , window )
115+ return newFloatWindowCountArrayCursor (cur , window ), nil
107116
108117 case cursors.IntegerArrayCursor :
109- return newIntegerWindowCountArrayCursor (cur , window )
118+ return newIntegerWindowCountArrayCursor (cur , window ), nil
110119
111120 case cursors.UnsignedArrayCursor :
112- return newUnsignedWindowCountArrayCursor (cur , window )
121+ return newUnsignedWindowCountArrayCursor (cur , window ), nil
113122
114123 case cursors.StringArrayCursor :
115- return newStringWindowCountArrayCursor (cur , window )
124+ return newStringWindowCountArrayCursor (cur , window ), nil
116125
117126 case cursors.BooleanArrayCursor :
118- return newBooleanWindowCountArrayCursor (cur , window )
127+ return newBooleanWindowCountArrayCursor (cur , window ), nil
119128
120129 default :
121- panic (fmt .Sprintf ("unreachable: %T" , cur ))
130+ return nil , & errors2.Error {
131+ Code : errors2 .EInvalid ,
132+ Msg : fmt .Sprintf ("unreachable: %s" , arrayCursorType (cur )),
133+ }
122134 }
123135}
124136
@@ -142,37 +154,43 @@ func newWindowSumArrayCursor(cur cursors.Cursor, window interval.Window) (cursor
142154 }
143155}
144156
145- func newWindowMinArrayCursor (cur cursors.Cursor , window interval.Window ) cursors.Cursor {
157+ func newWindowMinArrayCursor (cur cursors.Cursor , window interval.Window ) ( cursors.Cursor , error ) {
146158 switch cur := cur .(type ) {
147159
148160 case cursors.FloatArrayCursor :
149- return newFloatWindowMinArrayCursor (cur , window )
161+ return newFloatWindowMinArrayCursor (cur , window ), nil
150162
151163 case cursors.IntegerArrayCursor :
152- return newIntegerWindowMinArrayCursor (cur , window )
164+ return newIntegerWindowMinArrayCursor (cur , window ), nil
153165
154166 case cursors.UnsignedArrayCursor :
155- return newUnsignedWindowMinArrayCursor (cur , window )
167+ return newUnsignedWindowMinArrayCursor (cur , window ), nil
156168
157169 default :
158- panic (fmt .Sprintf ("unsupported for aggregate min: %T" , cur ))
170+ return nil , & errors2.Error {
171+ Code : errors2 .EInvalid ,
172+ Msg : fmt .Sprintf ("unsupported for aggregate min: %s" , arrayCursorType (cur )),
173+ }
159174 }
160175}
161176
162- func newWindowMaxArrayCursor (cur cursors.Cursor , window interval.Window ) cursors.Cursor {
177+ func newWindowMaxArrayCursor (cur cursors.Cursor , window interval.Window ) ( cursors.Cursor , error ) {
163178 switch cur := cur .(type ) {
164179
165180 case cursors.FloatArrayCursor :
166- return newFloatWindowMaxArrayCursor (cur , window )
181+ return newFloatWindowMaxArrayCursor (cur , window ), nil
167182
168183 case cursors.IntegerArrayCursor :
169- return newIntegerWindowMaxArrayCursor (cur , window )
184+ return newIntegerWindowMaxArrayCursor (cur , window ), nil
170185
171186 case cursors.UnsignedArrayCursor :
172- return newUnsignedWindowMaxArrayCursor (cur , window )
187+ return newUnsignedWindowMaxArrayCursor (cur , window ), nil
173188
174189 default :
175- panic (fmt .Sprintf ("unsupported for aggregate max: %T" , cur ))
190+ return nil , & errors2.Error {
191+ Code : errors2 .EInvalid ,
192+ Msg : fmt .Sprintf ("unsupported for aggregate max: %s" , arrayCursorType (cur )),
193+ }
176194 }
177195}
178196
0 commit comments