(
compiler: SQLCompiler,
stmt: ValuesBase,
compile_state: DMLState,
initial_values: Sequence[_CrudParamElementStr],
_column_as_key: Callable[..., str],
kw: Dict[str, Any],
)
| 1562 | |
| 1563 | |
| 1564 | def _extend_values_for_multiparams( |
| 1565 | compiler: SQLCompiler, |
| 1566 | stmt: ValuesBase, |
| 1567 | compile_state: DMLState, |
| 1568 | initial_values: Sequence[_CrudParamElementStr], |
| 1569 | _column_as_key: Callable[..., str], |
| 1570 | kw: Dict[str, Any], |
| 1571 | ) -> List[Sequence[_CrudParamElementStr]]: |
| 1572 | values_0 = initial_values |
| 1573 | values = [initial_values] |
| 1574 | |
| 1575 | has_visiting_cte = kw.get("visiting_cte") is not None |
| 1576 | mp = compile_state._multi_parameters |
| 1577 | assert mp is not None |
| 1578 | for i, row in enumerate(mp[1:]): |
| 1579 | extension: List[_CrudParamElementStr] = [] |
| 1580 | |
| 1581 | row = {_column_as_key(key): v for key, v in row.items()} |
| 1582 | |
| 1583 | for col, col_expr, param, accumulated_names in values_0: |
| 1584 | if col.key in row: |
| 1585 | key = col.key |
| 1586 | |
| 1587 | if coercions._is_literal(row[key]): |
| 1588 | new_param = _create_bind_param( |
| 1589 | compiler, |
| 1590 | col, |
| 1591 | row[key], |
| 1592 | name=("%s_m%d" % (col.key, i + 1)), |
| 1593 | force_anonymous=has_visiting_cte, |
| 1594 | **kw, |
| 1595 | ) |
| 1596 | else: |
| 1597 | new_param = compiler.process(row[key].self_group(), **kw) |
| 1598 | else: |
| 1599 | new_param = _process_multiparam_default_bind( |
| 1600 | compiler, stmt, col, i, kw |
| 1601 | ) |
| 1602 | |
| 1603 | extension.append((col, col_expr, new_param, accumulated_names)) |
| 1604 | |
| 1605 | values.append(extension) |
| 1606 | |
| 1607 | return values |
| 1608 | |
| 1609 | |
| 1610 | def _get_stmt_parameter_tuples_params( |
no test coverage detected