def _get_crud_params(compiler, stmt, **kw):
compiler.postfetch = []<EOL>compiler.insert_prefetch = []<EOL>compiler.update_prefetch = []<EOL>compiler.returning = []<EOL>if compiler.column_keys is None and stmt.parameters is None:<EOL><INDENT>return [(c, crud._create_bind_param(compiler, c, None,<EOL>required=True))<EOL>for c in stmt.table.columns]<EOL><DEDENT>if stmt._has_multi_parameters:<EOL><INDENT>stmt_parameters = stmt.parameters[<NUM_LIT:0>]<EOL><DEDENT>else:<EOL><INDENT>stmt_parameters = stmt.parameters<EOL><DEDENT>if SA_VERSION >= SA_1_1:<EOL><INDENT>_column_as_key, _getattr_col_key, _col_bind_name =crud._key_getters_for_crud_column(compiler, stmt)<EOL><DEDENT>else:<EOL><INDENT>_column_as_key, _getattr_col_key, _col_bind_name =crud._key_getters_for_crud_column(compiler)<EOL><DEDENT>if compiler.column_keys is None:<EOL><INDENT>parameters = {}<EOL><DEDENT>else:<EOL><INDENT>parameters = dict((_column_as_key(key), crud.REQUIRED)<EOL>for key in compiler.column_keys<EOL>if not stmt_parameters or<EOL>key not in stmt_parameters)<EOL><DEDENT>values = []<EOL>if stmt_parameters is not None:<EOL><INDENT>crud._get_stmt_parameters_params(<EOL>compiler,<EOL>parameters, stmt_parameters, _column_as_key, values, kw)<EOL><DEDENT>check_columns = {}<EOL>crud._scan_cols(compiler, stmt, parameters,<EOL>_getattr_col_key, _column_as_key,<EOL>_col_bind_name, check_columns, values, kw)<EOL>if stmt._has_multi_parameters:<EOL><INDENT>values = crud._extend_values_for_multiparams(compiler, stmt,<EOL>values, kw)<EOL><DEDENT>return values<EOL>
extract values from crud parameters

        taken from SQLAlchemy's crud module (since 1.0.x) and
        adapted for Crate dialect