| Line | Hits | Source | Commit |
| 1021 |
- |
exec_command_d(PsqlScanState scan_state, bool active_branch, const char *cmd) |
- |
| 1022 |
- |
{ |
- |
| 1023 |
- |
backslashResult status = PSQL_CMD_SKIP_LINE; |
- |
| 1024 |
- |
bool success = true; |
- |
| 1025 |
- |
|
- |
| 1026 |
- |
if (active_branch) |
- |
| 1027 |
- |
{ |
- |
| 1028 |
- |
char *pattern; |
- |
| 1029 |
- |
bool show_verbose, |
- |
| 1030 |
- |
show_system; |
- |
| 1031 |
- |
unsigned short int save_expanded; |
- |
| 1032 |
- |
|
- |
| 1033 |
- |
/* We don't do SQLID reduction on the pattern yet */ |
- |
| 1034 |
- |
pattern = psql_scan_slash_option(scan_state, |
- |
| 1035 |
- |
OT_NORMAL, NULL, true); |
- |
| 1036 |
- |
|
- |
| 1037 |
- |
show_verbose = strchr(cmd, '+') ? true : false; |
- |
| 1038 |
- |
show_system = strchr(cmd, 'S') ? true : false; |
- |
| 1039 |
- |
|
- |
| 1040 |
- |
/* |
- |
| 1041 |
- |
* The 'x' option turns expanded mode on for this command only. This |
- |
| 1042 |
- |
* is allowed in all \d* commands, except \d by itself, since \dx is a |
- |
| 1043 |
- |
* separate command. So the 'x' option cannot appear immediately after |
- |
| 1044 |
- |
* \d, but it can appear after \d followed by other options. |
- |
| 1045 |
- |
*/ |
- |
| 1046 |
- |
save_expanded = pset.popt.topt.expanded; |
- |
| 1047 |
- |
if (cmd[1] != '\0' && strchr(&cmd[2], 'x')) |
- |
| 1048 |
- |
pset.popt.topt.expanded = 1; |
- |
| 1049 |
- |
|
- |
| 1050 |
- |
switch (cmd[1]) |
- |
| 1051 |
- |
{ |
- |
| 1052 |
- |
case '\0': |
- |
| 1053 |
- |
case '+': |
- |
| 1054 |
- |
case 'S': |
- |
| 1055 |
- |
if (pattern) |
- |
| 1056 |
- |
success = describeTableDetails(pattern, show_verbose, show_system); |
- |
| 1057 |
- |
else |
- |
| 1058 |
- |
/* standard listing of interesting things */ |
- |
| 1059 |
9 |
success = listTables("tvmsEG", NULL, show_verbose, show_system); |
86c14eaWIP: SQL Property Graph Queries (SQL/PGQ) |
| 1060 |
- |
break; |
- |
| 1061 |
- |
case 'A': |
- |
| 1062 |
- |
{ |
- |
| 1063 |
- |
char *pattern2 = NULL; |
- |
| 1064 |
- |
|
- |
| 1065 |
- |
if (pattern && cmd[2] != '\0' && cmd[2] != '+' && cmd[2] != 'x') |
- |
| 1066 |
- |
pattern2 = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, true); |
- |
| 1067 |
- |
|
- |
| 1068 |
- |
switch (cmd[2]) |
- |
| 1069 |
- |
{ |
- |
| 1070 |
- |
case '\0': |
- |
| 1071 |
- |
case '+': |
- |
| 1072 |
- |
case 'x': |
- |
| 1073 |
- |
success = describeAccessMethods(pattern, show_verbose); |
- |
| 1074 |
- |
break; |
- |
| 1075 |
- |
case 'c': |
- |
| 1076 |
- |
success = listOperatorClasses(pattern, pattern2, show_verbose); |
- |
| 1077 |
- |
break; |
- |
| 1078 |
- |
case 'f': |
- |
| 1079 |
- |
success = listOperatorFamilies(pattern, pattern2, show_verbose); |
- |
| 1080 |
- |
break; |
- |
| 1081 |
- |
case 'o': |
- |
| 1082 |
- |
success = listOpFamilyOperators(pattern, pattern2, show_verbose); |
- |
| 1083 |
- |
break; |
- |
| 1084 |
- |
case 'p': |
- |
| 1085 |
- |
success = listOpFamilyFunctions(pattern, pattern2, show_verbose); |
- |
| 1086 |
- |
break; |
- |
| 1087 |
- |
default: |
- |
| 1088 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1089 |
- |
break; |
- |
| 1090 |
- |
} |
- |
| 1091 |
- |
|
- |
| 1092 |
- |
free(pattern2); |
- |
| 1093 |
- |
} |
- |
| 1094 |
- |
break; |
- |
| 1095 |
- |
case 'a': |
- |
| 1096 |
- |
success = describeAggregates(pattern, show_verbose, show_system); |
- |
| 1097 |
- |
break; |
- |
| 1098 |
- |
case 'b': |
- |
| 1099 |
- |
success = describeTablespaces(pattern, show_verbose); |
- |
| 1100 |
- |
break; |
- |
| 1101 |
- |
case 'c': |
- |
| 1102 |
- |
if (strncmp(cmd, "dconfig", 7) == 0) |
- |
| 1103 |
- |
success = describeConfigurationParameters(pattern, |
- |
| 1104 |
- |
show_verbose, |
- |
| 1105 |
- |
show_system); |
- |
| 1106 |
- |
else |
- |
| 1107 |
- |
success = listConversions(pattern, |
- |
| 1108 |
- |
show_verbose, |
- |
| 1109 |
- |
show_system); |
- |
| 1110 |
- |
break; |
- |
| 1111 |
- |
case 'C': |
- |
| 1112 |
- |
success = listCasts(pattern, show_verbose); |
- |
| 1113 |
- |
break; |
- |
| 1114 |
- |
case 'd': |
- |
| 1115 |
- |
if (strncmp(cmd, "ddp", 3) == 0) |
- |
| 1116 |
- |
success = listDefaultACLs(pattern); |
- |
| 1117 |
- |
else |
- |
| 1118 |
- |
success = objectDescription(pattern, show_system); |
- |
| 1119 |
- |
break; |
- |
| 1120 |
- |
case 'D': |
- |
| 1121 |
- |
success = listDomains(pattern, show_verbose, show_system); |
- |
| 1122 |
- |
break; |
- |
| 1123 |
- |
case 'f': /* function subsystem */ |
- |
| 1124 |
- |
switch (cmd[2]) |
- |
| 1125 |
- |
{ |
- |
| 1126 |
- |
case '\0': |
- |
| 1127 |
- |
case '+': |
- |
| 1128 |
- |
case 'S': |
- |
| 1129 |
- |
case 'a': |
- |
| 1130 |
- |
case 'n': |
- |
| 1131 |
- |
case 'p': |
- |
| 1132 |
- |
case 't': |
- |
| 1133 |
- |
case 'w': |
- |
| 1134 |
- |
case 'x': |
- |
| 1135 |
- |
success = exec_command_dfo(scan_state, cmd, pattern, |
- |
| 1136 |
- |
show_verbose, show_system); |
- |
| 1137 |
- |
break; |
- |
| 1138 |
- |
default: |
- |
| 1139 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1140 |
- |
break; |
- |
| 1141 |
- |
} |
- |
| 1142 |
- |
break; |
- |
| 1143 |
- |
case 'g': |
- |
| 1144 |
- |
/* no longer distinct from \du */ |
- |
| 1145 |
- |
success = describeRoles(pattern, show_verbose, show_system); |
- |
| 1146 |
- |
break; |
- |
| 1147 |
- |
case 'l': |
- |
| 1148 |
- |
success = listLargeObjects(show_verbose); |
- |
| 1149 |
- |
break; |
- |
| 1150 |
- |
case 'L': |
- |
| 1151 |
- |
success = listLanguages(pattern, show_verbose, show_system); |
- |
| 1152 |
- |
break; |
- |
| 1153 |
- |
case 'n': |
- |
| 1154 |
- |
success = listSchemas(pattern, show_verbose, show_system); |
- |
| 1155 |
- |
break; |
- |
| 1156 |
- |
case 'o': |
- |
| 1157 |
- |
success = exec_command_dfo(scan_state, cmd, pattern, |
- |
| 1158 |
- |
show_verbose, show_system); |
- |
| 1159 |
- |
break; |
- |
| 1160 |
- |
case 'O': |
- |
| 1161 |
- |
success = listCollations(pattern, show_verbose, show_system); |
- |
| 1162 |
- |
break; |
- |
| 1163 |
- |
case 'p': |
- |
| 1164 |
- |
success = permissionsList(pattern, show_system); |
- |
| 1165 |
- |
break; |
- |
| 1166 |
- |
case 'P': |
- |
| 1167 |
- |
{ |
- |
| 1168 |
- |
switch (cmd[2]) |
- |
| 1169 |
- |
{ |
- |
| 1170 |
- |
case '\0': |
- |
| 1171 |
- |
case '+': |
- |
| 1172 |
- |
case 't': |
- |
| 1173 |
- |
case 'i': |
- |
| 1174 |
- |
case 'n': |
- |
| 1175 |
- |
case 'x': |
- |
| 1176 |
- |
success = listPartitionedTables(&cmd[2], pattern, show_verbose); |
- |
| 1177 |
- |
break; |
- |
| 1178 |
- |
default: |
- |
| 1179 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1180 |
- |
break; |
- |
| 1181 |
- |
} |
- |
| 1182 |
- |
} |
- |
| 1183 |
- |
break; |
- |
| 1184 |
- |
case 'T': |
- |
| 1185 |
- |
success = describeTypes(pattern, show_verbose, show_system); |
- |
| 1186 |
- |
break; |
- |
| 1187 |
- |
case 't': |
- |
| 1188 |
- |
case 'v': |
- |
| 1189 |
- |
case 'm': |
- |
| 1190 |
- |
case 'i': |
- |
| 1191 |
- |
case 's': |
- |
| 1192 |
- |
case 'E': |
- |
| 1193 |
- |
case 'G': |
86c14eaWIP: SQL Property Graph Queries (SQL/PGQ) |
| 1194 |
- |
success = listTables(&cmd[1], pattern, show_verbose, show_system); |
- |
| 1195 |
- |
break; |
- |
| 1196 |
- |
case 'r': |
- |
| 1197 |
- |
if (cmd[2] == 'd' && cmd[3] == 's') |
- |
| 1198 |
- |
{ |
- |
| 1199 |
- |
char *pattern2 = NULL; |
- |
| 1200 |
- |
|
- |
| 1201 |
- |
if (pattern) |
- |
| 1202 |
- |
pattern2 = psql_scan_slash_option(scan_state, |
- |
| 1203 |
- |
OT_NORMAL, NULL, true); |
- |
| 1204 |
- |
success = listDbRoleSettings(pattern, pattern2); |
- |
| 1205 |
- |
|
- |
| 1206 |
- |
free(pattern2); |
- |
| 1207 |
- |
} |
- |
| 1208 |
- |
else if (cmd[2] == 'g') |
- |
| 1209 |
- |
success = describeRoleGrants(pattern, show_system); |
- |
| 1210 |
- |
else |
- |
| 1211 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1212 |
- |
break; |
- |
| 1213 |
- |
case 'R': |
- |
| 1214 |
- |
switch (cmd[2]) |
- |
| 1215 |
- |
{ |
- |
| 1216 |
- |
case 'p': |
- |
| 1217 |
- |
if (show_verbose) |
- |
| 1218 |
- |
success = describePublications(pattern); |
- |
| 1219 |
- |
else |
- |
| 1220 |
- |
success = listPublications(pattern); |
- |
| 1221 |
- |
break; |
- |
| 1222 |
- |
case 's': |
- |
| 1223 |
- |
success = describeSubscriptions(pattern, show_verbose); |
- |
| 1224 |
- |
break; |
- |
| 1225 |
- |
default: |
- |
| 1226 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1227 |
- |
} |
- |
| 1228 |
- |
break; |
- |
| 1229 |
- |
case 'u': |
- |
| 1230 |
- |
success = describeRoles(pattern, show_verbose, show_system); |
- |
| 1231 |
- |
break; |
- |
| 1232 |
- |
case 'F': /* text search subsystem */ |
- |
| 1233 |
- |
switch (cmd[2]) |
- |
| 1234 |
- |
{ |
- |
| 1235 |
- |
case '\0': |
- |
| 1236 |
- |
case '+': |
- |
| 1237 |
- |
case 'x': |
- |
| 1238 |
- |
success = listTSConfigs(pattern, show_verbose); |
- |
| 1239 |
- |
break; |
- |
| 1240 |
- |
case 'p': |
- |
| 1241 |
- |
success = listTSParsers(pattern, show_verbose); |
- |
| 1242 |
- |
break; |
- |
| 1243 |
- |
case 'd': |
- |
| 1244 |
- |
success = listTSDictionaries(pattern, show_verbose); |
- |
| 1245 |
- |
break; |
- |
| 1246 |
- |
case 't': |
- |
| 1247 |
- |
success = listTSTemplates(pattern, show_verbose); |
- |
| 1248 |
- |
break; |
- |
| 1249 |
- |
default: |
- |
| 1250 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1251 |
- |
break; |
- |
| 1252 |
- |
} |
- |
| 1253 |
- |
break; |
- |
| 1254 |
- |
case 'e': /* SQL/MED subsystem */ |
- |
| 1255 |
- |
switch (cmd[2]) |
- |
| 1256 |
- |
{ |
- |
| 1257 |
- |
case 's': |
- |
| 1258 |
- |
success = listForeignServers(pattern, show_verbose); |
- |
| 1259 |
- |
break; |
- |
| 1260 |
- |
case 'u': |
- |
| 1261 |
- |
success = listUserMappings(pattern, show_verbose); |
- |
| 1262 |
- |
break; |
- |
| 1263 |
- |
case 'w': |
- |
| 1264 |
- |
success = listForeignDataWrappers(pattern, show_verbose); |
- |
| 1265 |
- |
break; |
- |
| 1266 |
- |
case 't': |
- |
| 1267 |
- |
success = listForeignTables(pattern, show_verbose); |
- |
| 1268 |
- |
break; |
- |
| 1269 |
- |
default: |
- |
| 1270 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1271 |
- |
break; |
- |
| 1272 |
- |
} |
- |
| 1273 |
- |
break; |
- |
| 1274 |
- |
case 'x': /* Extensions */ |
- |
| 1275 |
- |
if (show_verbose) |
- |
| 1276 |
- |
success = listExtensionContents(pattern); |
- |
| 1277 |
- |
else |
- |
| 1278 |
- |
success = listExtensions(pattern); |
- |
| 1279 |
- |
break; |
- |
| 1280 |
- |
case 'X': /* Extended Statistics */ |
- |
| 1281 |
- |
success = listExtendedStats(pattern); |
- |
| 1282 |
- |
break; |
- |
| 1283 |
- |
case 'y': /* Event Triggers */ |
- |
| 1284 |
- |
success = listEventTriggers(pattern, show_verbose); |
- |
| 1285 |
- |
break; |
- |
| 1286 |
- |
default: |
- |
| 1287 |
- |
status = PSQL_CMD_UNKNOWN; |
- |
| 1288 |
- |
} |
- |
| 1289 |
- |
|
- |
| 1290 |
- |
/* Restore original expanded mode */ |
- |
| 1291 |
- |
pset.popt.topt.expanded = save_expanded; |
- |
| 1292 |
- |
|
- |
| 1293 |
- |
free(pattern); |
- |
| 1294 |
- |
} |
- |
| 1295 |
- |
else |
- |
| 1296 |
- |
ignore_slash_options(scan_state); |
- |
| 1297 |
- |
|
- |
| 1298 |
- |
if (!success) |
- |
| 1299 |
- |
status = PSQL_CMD_ERROR; |
- |
| 1300 |
- |
|
- |
| 1301 |
- |
return status; |
- |
| 1302 |
- |
} |
- |