(
ecx: &ExprContext,
expr: HirScalarExpr,
positions: &[SubscriptPosition<Aug>],
offset: i64,
)
| 4386 | } |
| 4387 | |
| 4388 | fn plan_subscript_array( |
| 4389 | ecx: &ExprContext, |
| 4390 | expr: HirScalarExpr, |
| 4391 | positions: &[SubscriptPosition<Aug>], |
| 4392 | offset: i64, |
| 4393 | ) -> Result<CoercibleScalarExpr, PlanError> { |
| 4394 | let mut exprs = Vec::with_capacity(positions.len() + 1); |
| 4395 | exprs.push(expr); |
| 4396 | |
| 4397 | // Subscripting arrays doesn't yet support slicing, so we always want to |
| 4398 | // extract scalars or error. |
| 4399 | let indexes = extract_scalar_subscript_from_positions(positions, "array")?; |
| 4400 | |
| 4401 | for i in indexes { |
| 4402 | exprs.push(plan_expr(ecx, i)?.cast_to( |
| 4403 | ecx, |
| 4404 | CastContext::Explicit, |
| 4405 | &SqlScalarType::Int64, |
| 4406 | )?); |
| 4407 | } |
| 4408 | |
| 4409 | Ok(HirScalarExpr::call_variadic(ArrayIndex { offset }, exprs).into()) |
| 4410 | } |
| 4411 | |
| 4412 | fn plan_subscript_list( |
| 4413 | ecx: &ExprContext, |
no test coverage detected