1## Validate a collection definition by creating collection index
2#  with various form of  document members
3
4--source include/xplugin_preamble.inc
5--source include/xplugin_create_user.inc
6
7
8## Test starts here
9--let $xtest_file= $MYSQL_TMP_DIR/admin_list_objects_docpath.tmp
10--write_file $xtest_file
11-->quiet
12## Test data
13-->macro Create_index  %MEMBER%
14-->title =Member: %MEMBER%
15-->stmtadmin create_collection_index	{"schema":"xtest", "collection":"books", "name": "index", "unique": true, "fields":{"field": "%MEMBER%", "type": "text(20)", "required": false}}
16-->recvresult be-quiet
17-->endmacro
18
19-->macro Correct_path_to_member  %MEMBER%
20-->callmacro Create_index	%MEMBER%
21-->stmtadmin list_objects	{"schema":"xtest"}
22-->recvtovar %TYPE% type
23-->assert_eq COLLECTION	%TYPE%
24-->stmtsql select generation_expression from information_schema.columns where column_name like '$%'
25-->recvresult
26-->stmtadmin drop_collection_index	{"schema":"xtest", "collection":"books", "name": "index"}
27-->recvresult be-quiet
28-->endmacro
29
30-->macro Incorrect_path_to_member  %MEMBER%
31-->expecterror ER_X_CMD_ARGUMENT_VALUE
32-->callmacro Create_index	%MEMBER%
33-->endmacro
34
35
36-->stmtadmin create_collection	{"schema":"xtest", "name":"books"}
37-->recvresult
38
39-->callmacro Correct_path_to_member	$
40-->callmacro Correct_path_to_member	$.path
41-->callmacro Correct_path_to_member	$.path.to.member
42-->callmacro Correct_path_to_member	$.p1ath
43-->callmacro Correct_path_to_member	$.path1
44-->callmacro Correct_path_to_member	$.$
45-->callmacro Correct_path_to_member	$.$$
46-->callmacro Correct_path_to_member	$.$$$
47-->callmacro Correct_path_to_member	$.$.path
48-->callmacro Correct_path_to_member	$.path.$
49-->callmacro Correct_path_to_member	$.$path
50-->callmacro Correct_path_to_member	$.pa$th
51-->callmacro Correct_path_to_member	$.path$
52-->callmacro Correct_path_to_member	$.$pa$th$
53-->callmacro Correct_path_to_member	$._
54-->callmacro Correct_path_to_member	$.__
55-->callmacro Correct_path_to_member	$.___
56-->callmacro Correct_path_to_member	$._.path
57-->callmacro Correct_path_to_member	$.path._
58-->callmacro Correct_path_to_member	$._path
59-->callmacro Correct_path_to_member	$.pa_th
60-->callmacro Correct_path_to_member	$.path_
61-->callmacro Correct_path_to_member	$._pa_th_
62-->callmacro Correct_path_to_member	$.*
63-->callmacro Correct_path_to_member	$.*.path
64-->callmacro Correct_path_to_member	$.path.*
65-->callmacro Correct_path_to_member	$.path[1]
66-->callmacro Correct_path_to_member	$.path[123]
67-->callmacro Correct_path_to_member	$.path[1].path[2]
68-->callmacro Correct_path_to_member	$.path[1].path
69-->callmacro Correct_path_to_member	$.path[1].*
70-->callmacro Correct_path_to_member	$.*.path[1]
71-->callmacro Correct_path_to_member	$.path[*]
72-->callmacro Correct_path_to_member	$[1]
73-->callmacro Correct_path_to_member	$[1][2]
74-->callmacro Correct_path_to_member	$[1].path[2]
75-->callmacro Correct_path_to_member	$[1][2].path
76-->callmacro Correct_path_to_member	$.path[1][2]
77-->callmacro Correct_path_to_member	$.\"pa th\"
78-->callmacro Correct_path_to_member	$.\"pa\tth\"
79-->callmacro Correct_path_to_member	$.\"\"\"
80-->callmacro Correct_path_to_member	$.\"\"path\"
81-->callmacro Correct_path_to_member	$.\"path\"\"
82-->callmacro Correct_path_to_member	$.\"#\"
83-->callmacro Correct_path_to_member	$.\"path#\"
84-->callmacro Correct_path_to_member	$.\"#path\"
85-->callmacro Correct_path_to_member	$.\"#\"[1]
86-->callmacro Correct_path_to_member	$.\"\"
87-->callmacro Correct_path_to_member	$**.path
88-->callmacro Correct_path_to_member	$**[1]
89-->callmacro Correct_path_to_member	$.path**.path
90-->callmacro Correct_path_to_member	$.path**[1]
91-->callmacro Correct_path_to_member	$[1]**.path
92-->callmacro Correct_path_to_member	$[1]**[1]
93-->callmacro Correct_path_to_member	$.***.path
94-->callmacro Correct_path_to_member	$.\"**\"
95-->callmacro Correct_path_to_member	$.\"***\"
96-->callmacro Correct_path_to_member	$.\"pa.th\"
97
98-->callmacro Incorrect_path_to_member	$.
99-->callmacro Incorrect_path_to_member	.path
100-->callmacro Incorrect_path_to_member	path
101-->callmacro Incorrect_path_to_member	$.1
102-->callmacro Incorrect_path_to_member	$.1path
103-->callmacro Incorrect_path_to_member	$.**
104-->callmacro Incorrect_path_to_member	$.***
105-->callmacro Incorrect_path_to_member	$.*path
106-->callmacro Incorrect_path_to_member	$.pa*th
107-->callmacro Incorrect_path_to_member	$.path*
108-->callmacro Incorrect_path_to_member	$.*pa*th*
109-->callmacro Incorrect_path_to_member	$.path[-1]
110-->callmacro Incorrect_path_to_member	$.path[a]
111-->callmacro Incorrect_path_to_member	$.path[]
112-->callmacro Incorrect_path_to_member	$.path[
113-->callmacro Incorrect_path_to_member	$.path]
114-->callmacro Incorrect_path_to_member	$.[path]
115-->callmacro Incorrect_path_to_member	$.[1]
116-->callmacro Incorrect_path_to_member	$.path[**]
117-->callmacro Incorrect_path_to_member	$.path[*1]
118-->callmacro Incorrect_path_to_member	$.path[1*]
119-->callmacro Incorrect_path_to_member	$.path[1*1]
120-->callmacro Incorrect_path_to_member	$.pa th
121-->callmacro Incorrect_path_to_member	$.pa\th
122-->callmacro Incorrect_path_to_member	$.\"
123-->callmacro Incorrect_path_to_member	$.\"path
124-->callmacro Incorrect_path_to_member	$.path\"
125-->callmacro Incorrect_path_to_member	$.#
126-->callmacro Incorrect_path_to_member	$.path#
127-->callmacro Incorrect_path_to_member	$.#path
128-->callmacro Incorrect_path_to_member	$**
129-->callmacro Incorrect_path_to_member	$.path**
130-->callmacro Incorrect_path_to_member	$[1]**
131-->callmacro Incorrect_path_to_member	$***
132-->callmacro Incorrect_path_to_member	$.path***
133-->callmacro Incorrect_path_to_member	$[1]***
134-->callmacro Incorrect_path_to_member	$.**.path
135-->callmacro Incorrect_path_to_member	$*
136EOF
137
138
139CREATE SCHEMA xtest DEFAULT CHARSET 'utf8mb4';
140
141exec $MYSQLXTEST
142  -ux_root
143  --password=''
144  --file=$xtest_file 2>&1;
145
146## Cleanup
147DROP SCHEMA IF EXISTS xtest;
148--remove_file $xtest_file
149--source include/xplugin_drop_user.inc
150