| 239 | |
| 240 | namespace { |
| 241 | void checkRowFrameBounds(const core::WindowNode::Frame& frame) { |
| 242 | auto frameBoundCheck = [&](const core::TypedExprPtr& frameValue) -> void { |
| 243 | if (frameValue == nullptr) { |
| 244 | return; |
| 245 | } |
| 246 | |
| 247 | BOLT_USER_CHECK( |
| 248 | frameValue->type() == INTEGER() || frameValue->type() == BIGINT(), |
| 249 | "k frame bound must be INTEGER or BIGINT type"); |
| 250 | }; |
| 251 | frameBoundCheck(frame.startValue); |
| 252 | frameBoundCheck(frame.endValue); |
| 253 | } |
| 254 | |
| 255 | void checkKRangeFrameBounds( |
| 256 | const std::shared_ptr<const core::WindowNode>& windowNode, |