1682
1682
convert_table_priv_string(text *priv_type_text)
1684
1684
static const priv_map table_priv_map[] = {
1685
{ "SELECT", ACL_SELECT },
1686
{ "SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT) },
1687
{ "INSERT", ACL_INSERT },
1688
{ "INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT) },
1689
{ "UPDATE", ACL_UPDATE },
1690
{ "UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE) },
1691
{ "DELETE", ACL_DELETE },
1692
{ "DELETE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_DELETE) },
1693
{ "TRUNCATE", ACL_TRUNCATE },
1694
{ "TRUNCATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRUNCATE) },
1695
{ "REFERENCES", ACL_REFERENCES },
1696
{ "REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES) },
1697
{ "TRIGGER", ACL_TRIGGER },
1698
{ "TRIGGER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRIGGER) },
1699
{ "RULE", 0 }, /* ignore old RULE privileges */
1700
{ "RULE WITH GRANT OPTION", 0 },
1685
{"SELECT", ACL_SELECT},
1686
{"SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT)},
1687
{"INSERT", ACL_INSERT},
1688
{"INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT)},
1689
{"UPDATE", ACL_UPDATE},
1690
{"UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE)},
1691
{"DELETE", ACL_DELETE},
1692
{"DELETE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_DELETE)},
1693
{"TRUNCATE", ACL_TRUNCATE},
1694
{"TRUNCATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRUNCATE)},
1695
{"REFERENCES", ACL_REFERENCES},
1696
{"REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES)},
1697
{"TRIGGER", ACL_TRIGGER},
1698
{"TRIGGER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_TRIGGER)},
1699
{"RULE", 0}, /* ignore old RULE privileges */
1700
{"RULE WITH GRANT OPTION", 0},
1704
1704
return convert_any_priv_string(priv_type_text, table_priv_map);
1928
1928
* existence of the pg_class row before risking calling pg_class_aclcheck.
1929
1929
* Note: it might seem there's a race condition against concurrent DROP,
1930
1930
* but really it's safe because there will be no syscache flush between
1931
* here and there. So if we see the row in the syscache, so will
1931
* here and there. So if we see the row in the syscache, so will
1932
1932
* pg_class_aclcheck.
1934
1934
if (!SearchSysCacheExists(RELOID,
2314
2314
convert_column_priv_string(text *priv_type_text)
2316
2316
static const priv_map column_priv_map[] = {
2317
{ "SELECT", ACL_SELECT },
2318
{ "SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT) },
2319
{ "INSERT", ACL_INSERT },
2320
{ "INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT) },
2321
{ "UPDATE", ACL_UPDATE },
2322
{ "UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE) },
2323
{ "REFERENCES", ACL_REFERENCES },
2324
{ "REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES) },
2317
{"SELECT", ACL_SELECT},
2318
{"SELECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_SELECT)},
2319
{"INSERT", ACL_INSERT},
2320
{"INSERT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_INSERT)},
2321
{"UPDATE", ACL_UPDATE},
2322
{"UPDATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_UPDATE)},
2323
{"REFERENCES", ACL_REFERENCES},
2324
{"REFERENCES WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_REFERENCES)},
2328
2328
return convert_any_priv_string(priv_type_text, column_priv_map);
2524
2524
convert_database_priv_string(text *priv_type_text)
2526
2526
static const priv_map database_priv_map[] = {
2527
{ "CREATE", ACL_CREATE },
2528
{ "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
2529
{ "TEMPORARY", ACL_CREATE_TEMP },
2530
{ "TEMPORARY WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP) },
2531
{ "TEMP", ACL_CREATE_TEMP },
2532
{ "TEMP WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP) },
2533
{ "CONNECT", ACL_CONNECT },
2534
{ "CONNECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CONNECT) },
2527
{"CREATE", ACL_CREATE},
2528
{"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
2529
{"TEMPORARY", ACL_CREATE_TEMP},
2530
{"TEMPORARY WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP)},
2531
{"TEMP", ACL_CREATE_TEMP},
2532
{"TEMP WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE_TEMP)},
2533
{"CONNECT", ACL_CONNECT},
2534
{"CONNECT WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CONNECT)},
2538
2538
return convert_any_priv_string(priv_type_text, database_priv_map);
2919
2919
convert_function_priv_string(text *priv_type_text)
2921
2921
static const priv_map function_priv_map[] = {
2922
{ "EXECUTE", ACL_EXECUTE },
2923
{ "EXECUTE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_EXECUTE) },
2922
{"EXECUTE", ACL_EXECUTE},
2923
{"EXECUTE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_EXECUTE)},
2927
2927
return convert_any_priv_string(priv_type_text, function_priv_map);
3331
3331
convert_schema_priv_string(text *priv_type_text)
3333
3333
static const priv_map schema_priv_map[] = {
3334
{ "CREATE", ACL_CREATE },
3335
{ "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3336
{ "USAGE", ACL_USAGE },
3337
{ "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE) },
3334
{"CREATE", ACL_CREATE},
3335
{"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3336
{"USAGE", ACL_USAGE},
3337
{"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_USAGE)},
3341
3341
return convert_any_priv_string(priv_type_text, schema_priv_map);
3705
3705
convert_tablespace_priv_string(text *priv_type_text)
3707
3707
static const priv_map tablespace_priv_map[] = {
3708
{ "CREATE", ACL_CREATE },
3709
{ "CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3708
{"CREATE", ACL_CREATE},
3709
{"CREATE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3713
3713
return convert_any_priv_string(priv_type_text, tablespace_priv_map);
3881
3881
convert_role_priv_string(text *priv_type_text)
3883
3883
static const priv_map role_priv_map[] = {
3884
{ "USAGE", ACL_USAGE },
3885
{ "MEMBER", ACL_CREATE },
3886
{ "USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3887
{ "USAGE WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3888
{ "MEMBER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3889
{ "MEMBER WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE) },
3884
{"USAGE", ACL_USAGE},
3885
{"MEMBER", ACL_CREATE},
3886
{"USAGE WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3887
{"USAGE WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3888
{"MEMBER WITH GRANT OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3889
{"MEMBER WITH ADMIN OPTION", ACL_GRANT_OPTION_FOR(ACL_CREATE)},
3893
3893
return convert_any_priv_string(priv_type_text, role_priv_map);