235 lines
9.0 KiB
PHP
235 lines
9.0 KiB
PHP
## Usage
|
|
#
|
|
# --let $crud_limit_macros=PATH
|
|
# --source ../include/crud_limit.inc
|
|
#
|
|
|
|
--write_file $MYSQL_TMP_DIR/mysqlx-in.tmp
|
|
|
|
-->import crud.macro
|
|
-->import crud_insert.macro
|
|
-->import %TEST_MACROS%
|
|
|
|
-->echo
|
|
-->echo ## I. Validation of Crud.Find limits
|
|
-->echo #
|
|
-->echo # 1. Different setting in old limit field
|
|
-->echo # a. limit only to first row
|
|
-->echo # b. limit only to first two rows
|
|
-->echo # c. limit only to first hundred rows, still return all rows from collection
|
|
-->echo # d. limit only to last two rows
|
|
-->echo # e. limit only to last two rows, still the last one is out of resultset
|
|
-->echo # 2. Setting literals in limit_expr field
|
|
-->echo # a. limit only to first row
|
|
-->echo # b. limit only to first two rows
|
|
-->echo # c. limit only to first hundred rows, still return all rows from collection
|
|
-->echo # d. limit only to last two rows
|
|
-->echo # e. limit only to last two rows, still the last one is out of resultset
|
|
-->echo # 3. Setting placeholders in limit_expr field
|
|
-->echo # a. limit only to first row
|
|
-->echo # b. limit only to first two rows
|
|
-->echo # c. limit only to first hundred rows, still return all rows from collection
|
|
-->echo # d. limit only to last two rows
|
|
-->echo # e. limit only to last two rows, still the last one is out of resultset
|
|
-->echo
|
|
-->echo ## II. Validation of Crud.Delete limits
|
|
-->echo #
|
|
-->echo # 1. Different setting in old limit field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo # 2. Setting literals in limit_expr field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo # 3. Setting placeholders in limit_expr field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo
|
|
-->echo ## III. Validation of Crud.Update limits
|
|
-->echo #
|
|
-->echo # 1. Different setting in old limit field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo # 2. Setting literals in limit_expr field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo # 3. Setting placeholders in limit_expr field
|
|
-->echo # a. delete only first row
|
|
-->echo # b. delete only first two rows
|
|
-->echo # c. try to delete hundred rows, still only 6 delete (in collection)
|
|
-->echo
|
|
-->echo ## IV. Validation invalid configuration of Crud limits
|
|
-->echo #
|
|
-->echo # 1. 'limit' and 'limit_expr' were set
|
|
-->echo # a. in Crud.Find
|
|
-->echo # b. in Crud.Update
|
|
-->echo # d. in Crud.Delete
|
|
-->echo # 2. 'limit' uses 'offset' field when Crud doesn't support it
|
|
-->echo # a. in Crud.Update
|
|
-->echo # b. in Crud.Delete
|
|
-->echo # 2. 'limit_expr' uses 'offset' field when Crud doesn't support it
|
|
-->echo # a. in Crud.Update
|
|
-->echo # b. in Crud.Delete
|
|
|
|
-->callmacro Setup_testcase
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## I.1
|
|
-->callmacro Setup_collection_with_data
|
|
-->callmacro Find_execute_and_expect 1 limit {row_count:1}
|
|
-->callmacro Find_execute_and_expect 2 limit {row_count:2}
|
|
-->callmacro Find_execute_and_expect 9 limit {row_count:100}
|
|
-->callmacro Find_execute_and_expect 2 limit {row_count:2 offset: 7}
|
|
-->callmacro Find_execute_and_expect 1 limit {row_count:2 offset: 8}
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## I.2
|
|
callmacro Find_execute_and_expect 1
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:1}}};
|
|
callmacro Find_execute_and_expect 2
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:2}}};
|
|
callmacro Find_execute_and_expect 9
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:100}}};
|
|
callmacro Find_execute_and_expect 2
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:2}} offset{type:LITERAL literal {type:V_SINT v_signed_int:7}}};
|
|
callmacro Find_execute_and_expect 1
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:2}} offset{type:LITERAL literal {type:V_SINT v_signed_int:8}}};
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## I.3
|
|
callmacro Find_execute_and_expect 1
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END% };
|
|
callmacro Find_execute_and_expect 2
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 2 %ANY_END% };
|
|
callmacro Find_execute_and_expect 9
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 100 %ANY_END% };
|
|
callmacro Find_execute_and_expect 2
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0} offset{type:PLACEHOLDER position:1}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 2 %ANY_END% } args{ %ANY_START% type:V_SINT v_signed_int: 7 %ANY_END% };
|
|
callmacro Find_execute_and_expect 1
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0} offset { type:PLACEHOLDER position:1}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 2 %ANY_END% } args{ %ANY_START% type:V_SINT v_signed_int: 8 %ANY_END% };
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## II.1
|
|
-->callmacro Setup_collection_with_data
|
|
-->callmacro Delete_execute_and_expect 1 limit {row_count:1}
|
|
-->callmacro Delete_execute_and_expect 2 limit {row_count:2}
|
|
-->callmacro Delete_execute_and_expect 6 limit {row_count:100}
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## II.2
|
|
-->callmacro Setup_collection_with_data
|
|
callmacro Delete_execute_and_expect 1
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:1}}};
|
|
callmacro Delete_execute_and_expect 2
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:2}}};
|
|
callmacro Delete_execute_and_expect 6
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:100}}};
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## II.3
|
|
-->callmacro Setup_collection_with_data
|
|
callmacro Delete_execute_and_expect 1
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END% };
|
|
callmacro Delete_execute_and_expect 2
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 2 %ANY_END% };
|
|
callmacro Delete_execute_and_expect 6
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 100 %ANY_END% };
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## III.1
|
|
-->callmacro Setup_collection_with_data
|
|
-->callmacro Update_execute_and_expect 1 limit {row_count:1}
|
|
-->callmacro Update_execute_and_expect 2 limit {row_count:2}
|
|
-->callmacro Update_execute_and_expect 9 limit {row_count:100}
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## III.2
|
|
callmacro Update_execute_and_expect 1
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:1}}};
|
|
callmacro Update_execute_and_expect 2
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:2}}};
|
|
callmacro Update_execute_and_expect 9
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:100}}};
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## III.3
|
|
callmacro Update_execute_and_expect 1
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END% };
|
|
callmacro Update_execute_and_expect 2
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 2 %ANY_END% };
|
|
callmacro Update_execute_and_expect 9
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}}
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 100 %ANY_END% };
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## IV.1
|
|
callmacro Find_execute_and_expect_error ER_X_BAD_MESSAGE
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}} limit { row_count:1 }
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END% };
|
|
|
|
callmacro Update_execute_and_expect_error ER_X_BAD_MESSAGE
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}} limit { row_count:1 }
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END% };
|
|
|
|
callmacro Delete_execute_and_expect_error ER_X_BAD_MESSAGE
|
|
limit_expr { row_count{ type:PLACEHOLDER position:0}} limit { row_count:1 }
|
|
args{ %ANY_START% type:V_SINT v_signed_int: 1 %ANY_END%};
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## IV.2
|
|
callmacro Update_execute_and_expect_error ER_X_INVALID_ARGUMENT
|
|
limit { row_count:1 offset: 1 };
|
|
|
|
callmacro Delete_execute_and_expect_error ER_X_INVALID_ARGUMENT
|
|
limit { row_count:1 offset: 1 };
|
|
|
|
-->echo
|
|
-->echo #
|
|
-->echo ## IV.3
|
|
callmacro Update_execute_and_expect_error ER_X_INVALID_ARGUMENT
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:1}} offset{type:LITERAL literal {type:V_SINT v_signed_int:1}}};
|
|
|
|
callmacro Delete_execute_and_expect_error ER_X_INVALID_ARGUMENT
|
|
limit_expr {row_count{type:LITERAL literal {type:V_SINT v_signed_int:1}} offset{type:LITERAL literal {type:V_SINT v_signed_int:1}}};
|
|
|
|
EOF
|
|
|
|
CREATE DATABASE xtest;
|
|
|
|
exec $MYSQLXTEST
|
|
-u x_root
|
|
--password=''
|
|
--schema=xtest
|
|
-v%TEST_MACROS%=$crud_limit_macros
|
|
--file=$MYSQL_TMP_DIR/mysqlx-in.tmp 2>&1;
|
|
|
|
## Cleanup
|
|
DROP DATABASE IF EXISTS xtest;
|
|
|
|
--remove_file $MYSQL_TMP_DIR/mysqlx-in.tmp
|