object_ownership.slt 69 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081
  1. # Copyright Materialize, Inc. and contributors. All rights reserved.
  2. #
  3. # Use of this software is governed by the Business Source License
  4. # included in the LICENSE file at the root of this repository.
  5. #
  6. # As of the Change Date specified in that file, in accordance with
  7. # the Business Source License, use of this software will be governed
  8. # by the Apache License, Version 2.0.
  9. mode cockroach
  10. reset-server
  11. simple conn=mz_system,user=mz_system
  12. ALTER SYSTEM SET enable_connection_validation_syntax TO true;
  13. ----
  14. COMPLETE 0
  15. simple conn=mz_system,user=mz_system
  16. ALTER SYSTEM SET enable_rbac_checks = true
  17. ----
  18. COMPLETE 0
  19. simple conn=mz_system,user=mz_system
  20. ALTER SYSTEM SET enable_index_options = true
  21. ----
  22. COMPLETE 0
  23. simple conn=mz_system,user=mz_system
  24. ALTER SYSTEM SET enable_logical_compaction_window = true
  25. ----
  26. COMPLETE 0
  27. simple conn=mz_system,user=mz_system
  28. GRANT ALL PRIVILEGES ON SYSTEM TO materialize;
  29. ----
  30. COMPLETE 0
  31. # All objects on a fresh installation should be owned by mz_system (s1)
  32. # except for the mz_analytics connection which is owned by mz_analytics (s3)
  33. # No builtin sinks
  34. query T
  35. SELECT owner_id FROM mz_sinks GROUP BY owner_id
  36. ----
  37. query T
  38. SELECT owner_id FROM mz_indexes GROUP BY owner_id
  39. ----
  40. s1
  41. query T
  42. SELECT owner_id FROM mz_connections GROUP BY owner_id
  43. ----
  44. s3
  45. query T
  46. SELECT owner_id FROM mz_types GROUP BY owner_id
  47. ----
  48. s1
  49. query T
  50. SELECT owner_id FROM mz_functions GROUP BY owner_id
  51. ----
  52. s1
  53. # No builtin secrets
  54. query T
  55. SELECT owner_id FROM mz_secrets GROUP BY owner_id
  56. ----
  57. query T
  58. SELECT owner_id FROM mz_relations GROUP BY owner_id
  59. ----
  60. s1
  61. query T
  62. SELECT owner_id FROM mz_tables GROUP BY owner_id
  63. ----
  64. s1
  65. query T
  66. SELECT owner_id FROM mz_sources GROUP BY owner_id
  67. ----
  68. s1
  69. query T
  70. SELECT owner_id FROM mz_views GROUP BY owner_id
  71. ----
  72. s1
  73. # No builtin materialized views
  74. query T
  75. SELECT owner_id FROM mz_materialized_views GROUP BY owner_id
  76. ----
  77. query T
  78. SELECT owner_id FROM mz_databases GROUP BY owner_id
  79. ----
  80. s1
  81. query T rowsort
  82. SELECT owner_id FROM mz_clusters GROUP BY owner_id
  83. ----
  84. s1
  85. s2
  86. s3
  87. query T
  88. SELECT owner_id FROM mz_cluster_replicas GROUP BY owner_id
  89. ----
  90. s1
  91. query T
  92. SELECT owner_id FROM mz_schemas GROUP BY owner_id
  93. ----
  94. s1
  95. # Test user made objects
  96. simple conn=mz_system,user=mz_system
  97. CREATE ROLE joe;
  98. ----
  99. COMPLETE 0
  100. simple conn=mz_system,user=mz_system
  101. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO joe;
  102. ----
  103. COMPLETE 0
  104. simple conn=mz_system,user=mz_system
  105. CREATE ROLE group_materialize;
  106. ----
  107. COMPLETE 0
  108. simple conn=mz_system,user=mz_system
  109. CREATE ROLE group_no_one;
  110. ----
  111. COMPLETE 0
  112. simple conn=mz_system,user=mz_system
  113. GRANT group_materialize TO materialize;
  114. ----
  115. COMPLETE 0
  116. simple conn=mz_system,user=mz_system
  117. GRANT CREATE ON DATABASE materialize TO materialize;
  118. ----
  119. COMPLETE 0
  120. simple conn=mz_system,user=mz_system
  121. GRANT CREATE ON DATABASE materialize TO joe;
  122. ----
  123. COMPLETE 0
  124. simple conn=mz_system,user=mz_system
  125. GRANT CREATE ON SCHEMA materialize.public TO materialize;
  126. ----
  127. COMPLETE 0
  128. simple conn=mz_system,user=mz_system
  129. GRANT CREATE ON SCHEMA materialize.public TO joe;
  130. ----
  131. COMPLETE 0
  132. simple conn=mz_system,user=mz_system
  133. GRANT CREATE ON CLUSTER quickstart TO materialize;
  134. ----
  135. COMPLETE 0
  136. simple conn=mz_system,user=mz_system
  137. GRANT CREATE ON CLUSTER quickstart TO joe;
  138. ----
  139. COMPLETE 0
  140. ## Tables
  141. statement ok
  142. CREATE TABLE mt (a INT);
  143. query T
  144. SELECT mz_roles.name
  145. FROM mz_tables
  146. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  147. WHERE mz_tables.name = 'mt'
  148. ----
  149. materialize
  150. query T
  151. SELECT mz_roles.name
  152. FROM mz_relations
  153. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  154. WHERE mz_relations.name = 'mt'
  155. ----
  156. materialize
  157. statement error must be a member of "group_no_one"
  158. ALTER TABLE mt OWNER TO group_no_one
  159. statement ok
  160. ALTER TABLE mt OWNER TO group_materialize
  161. query T
  162. SELECT mz_roles.name
  163. FROM mz_relations
  164. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  165. WHERE mz_relations.name = 'mt'
  166. ----
  167. group_materialize
  168. statement ok
  169. ALTER TABLE mt RENAME TO ICs
  170. statement ok
  171. DROP TABLE ICs
  172. simple conn=joe,user=joe
  173. CREATE TABLE jt (a INT);
  174. ----
  175. COMPLETE 0
  176. query T
  177. SELECT mz_roles.name
  178. FROM mz_tables
  179. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  180. WHERE mz_tables.name = 'jt'
  181. ----
  182. joe
  183. query T
  184. SELECT mz_roles.name
  185. FROM mz_relations
  186. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  187. WHERE mz_relations.name = 'jt'
  188. ----
  189. joe
  190. statement error must be owner of TABLE materialize.public.jt
  191. DROP TABLE jt
  192. statement error must be owner of TABLE materialize.public.jt
  193. ALTER TABLE jt RENAME TO cool
  194. statement error must be owner of TABLE materialize.public.jt
  195. ALTER TABLE jt OWNER TO group_materialize
  196. ## Indexes
  197. statement ok
  198. CREATE TABLE mt (a INT);
  199. statement ok
  200. CREATE INDEX mt_ind ON mt(a);
  201. query T
  202. SELECT mz_roles.name
  203. FROM mz_indexes
  204. LEFT JOIN mz_roles ON mz_indexes.owner_id = mz_roles.id
  205. WHERE mz_indexes.name = 'mt_ind'
  206. ----
  207. materialize
  208. statement error must be a member of "group_no_one"
  209. ALTER INDEX mt_ind OWNER TO group_no_one
  210. statement ok
  211. ALTER INDEX mt_ind OWNER TO group_materialize
  212. # Altering the owner of an index is a no-op
  213. query T
  214. SELECT mz_roles.name
  215. FROM mz_indexes
  216. LEFT JOIN mz_roles ON mz_indexes.owner_id = mz_roles.id
  217. WHERE mz_indexes.name = 'mt_ind'
  218. ----
  219. materialize
  220. statement ok
  221. ALTER INDEX mt_ind SET (RETAIN HISTORY = FOR '1000 hours')
  222. statement ok
  223. ALTER INDEX mt_ind RENAME TO ICs
  224. statement ok
  225. DROP INDEX ICs
  226. simple conn=joe,user=joe
  227. CREATE INDEX jt_ind ON jt(a);
  228. ----
  229. COMPLETE 0
  230. query T
  231. SELECT mz_roles.name
  232. FROM mz_indexes
  233. LEFT JOIN mz_roles ON mz_indexes.owner_id = mz_roles.id
  234. WHERE mz_indexes.name = 'jt_ind'
  235. ----
  236. joe
  237. statement error must be owner of INDEX materialize.public.jt_ind
  238. DROP INDEX jt_ind
  239. statement error must be owner of INDEX materialize.public.jt_ind
  240. ALTER INDEX jt_ind RENAME TO cool
  241. statement error must be owner of INDEX materialize.public.jt_ind
  242. ALTER INDEX jt_ind OWNER TO group_materialize
  243. statement error must be owner of INDEX materialize.public.jt_ind
  244. ALTER INDEX jt_ind SET (RETAIN HISTORY = FOR '1000 hours')
  245. ## Sources
  246. statement ok
  247. CREATE SOURCE ms FROM LOAD GENERATOR COUNTER;
  248. query T
  249. SELECT mz_roles.name
  250. FROM mz_sources
  251. LEFT JOIN mz_roles ON mz_sources.owner_id = mz_roles.id
  252. WHERE mz_sources.name = 'ms'
  253. ----
  254. materialize
  255. query T
  256. SELECT mz_roles.name
  257. FROM mz_relations
  258. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  259. WHERE mz_relations.name = 'ms'
  260. ----
  261. materialize
  262. statement error must be a member of "group_no_one"
  263. ALTER SOURCE ms OWNER TO group_no_one
  264. statement ok
  265. ALTER SOURCE ms OWNER TO group_materialize
  266. query T
  267. SELECT mz_roles.name
  268. FROM mz_relations
  269. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  270. WHERE mz_relations.name = 'ms'
  271. ----
  272. group_materialize
  273. statement ok
  274. ALTER SOURCE ms RENAME TO ICs
  275. statement ok
  276. DROP SOURCE ICs
  277. simple conn=joe,user=joe
  278. CREATE SOURCE js FROM LOAD GENERATOR COUNTER;
  279. ----
  280. COMPLETE 0
  281. query T
  282. SELECT mz_roles.name
  283. FROM mz_sources
  284. LEFT JOIN mz_roles ON mz_sources.owner_id = mz_roles.id
  285. WHERE mz_sources.name = 'js'
  286. ----
  287. joe
  288. query T
  289. SELECT mz_roles.name
  290. FROM mz_relations
  291. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  292. WHERE mz_relations.name = 'js'
  293. ----
  294. joe
  295. statement error must be owner of SOURCE materialize.public.js
  296. DROP SOURCE js
  297. statement error must be owner of SOURCE materialize.public.js
  298. ALTER SOURCE js RENAME TO cool
  299. statement error must be owner of SOURCE materialize.public.js
  300. ALTER SOURCE js OWNER TO group_materialize
  301. statement error db error: ERROR: Expected one of TIMESTAMP or RETAIN, found SIZE
  302. ALTER SOURCE js SET (SIZE = '4')
  303. ## Views
  304. statement ok
  305. CREATE VIEW mv AS SELECT 1;
  306. query T
  307. SELECT mz_roles.name
  308. FROM mz_views
  309. LEFT JOIN mz_roles ON mz_views.owner_id = mz_roles.id
  310. WHERE mz_views.name = 'mv'
  311. ----
  312. materialize
  313. query T
  314. SELECT mz_roles.name
  315. FROM mz_relations
  316. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  317. WHERE mz_relations.name = 'mv'
  318. ----
  319. materialize
  320. statement error must be a member of "group_no_one"
  321. ALTER VIEW mv OWNER TO group_no_one
  322. statement ok
  323. ALTER VIEW mv OWNER TO group_materialize
  324. query T
  325. SELECT mz_roles.name
  326. FROM mz_relations
  327. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  328. WHERE mz_relations.name = 'mv'
  329. ----
  330. group_materialize
  331. statement ok
  332. ALTER VIEW mv RENAME TO ICs
  333. statement ok
  334. DROP VIEW ICs
  335. simple conn=joe,user=joe
  336. CREATE VIEW jv AS SELECT 1;
  337. ----
  338. COMPLETE 0
  339. query T
  340. SELECT mz_roles.name
  341. FROM mz_views
  342. LEFT JOIN mz_roles ON mz_views.owner_id = mz_roles.id
  343. WHERE mz_views.name = 'jv'
  344. ----
  345. joe
  346. query T
  347. SELECT mz_roles.name
  348. FROM mz_relations
  349. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  350. WHERE mz_relations.name = 'jv'
  351. ----
  352. joe
  353. statement error must be owner of VIEW materialize.public.jv
  354. DROP VIEW jv
  355. statement error must be owner of VIEW materialize.public.jv
  356. ALTER VIEW jv RENAME TO cool
  357. statement error must be owner of VIEW materialize.public.jv
  358. ALTER VIEW jv OWNER TO group_materialize
  359. ## Materialized Views
  360. statement ok
  361. CREATE MATERIALIZED VIEW mmv AS SELECT 1;
  362. query T
  363. SELECT mz_roles.name
  364. FROM mz_materialized_views
  365. LEFT JOIN mz_roles ON mz_materialized_views.owner_id = mz_roles.id
  366. WHERE mz_materialized_views.name = 'mmv'
  367. ----
  368. materialize
  369. query T
  370. SELECT mz_roles.name
  371. FROM mz_relations
  372. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  373. WHERE mz_relations.name = 'mmv'
  374. ----
  375. materialize
  376. statement error must be a member of "group_no_one"
  377. ALTER MATERIALIZED VIEW mmv OWNER TO group_no_one
  378. statement ok
  379. ALTER MATERIALIZED VIEW mmv OWNER TO group_materialize
  380. query T
  381. SELECT mz_roles.name
  382. FROM mz_relations
  383. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  384. WHERE mz_relations.name = 'mmv'
  385. ----
  386. group_materialize
  387. statement ok
  388. ALTER MATERIALIZED VIEW mmv RENAME TO ICs
  389. statement ok
  390. DROP MATERIALIZED VIEW ICs
  391. simple conn=joe,user=joe
  392. CREATE MATERIALIZED VIEW jmv AS SELECT 1;
  393. ----
  394. COMPLETE 0
  395. query T
  396. SELECT mz_roles.name
  397. FROM mz_materialized_views
  398. LEFT JOIN mz_roles ON mz_materialized_views.owner_id = mz_roles.id
  399. WHERE mz_materialized_views.name = 'jmv'
  400. ----
  401. joe
  402. query T
  403. SELECT mz_roles.name
  404. FROM mz_relations
  405. LEFT JOIN mz_roles ON mz_relations.owner_id = mz_roles.id
  406. WHERE mz_relations.name = 'jmv'
  407. ----
  408. joe
  409. statement error must be owner of MATERIALIZED VIEW materialize.public.jmv
  410. DROP MATERIALIZED VIEW jmv
  411. statement error must be owner of MATERIALIZED VIEW materialize.public.jmv
  412. ALTER MATERIALIZED VIEW jmv RENAME TO cool
  413. statement error must be owner of MATERIALIZED VIEW materialize.public.jmv
  414. ALTER MATERIALIZED VIEW jmv OWNER TO group_materialize
  415. ## Connections
  416. statement ok
  417. CREATE CONNECTION mc TO KAFKA (BROKER 'localhost:9092', SECURITY PROTOCOL PLAINTEXT) WITH (VALIDATE = false);
  418. query T
  419. SELECT mz_roles.name
  420. FROM mz_connections
  421. LEFT JOIN mz_roles ON mz_connections.owner_id = mz_roles.id
  422. WHERE mz_connections.name = 'mc'
  423. ----
  424. materialize
  425. statement error must be a member of "group_no_one"
  426. ALTER CONNECTION mc OWNER TO group_no_one
  427. statement ok
  428. ALTER CONNECTION mc OWNER TO group_materialize
  429. query T
  430. SELECT mz_roles.name
  431. FROM mz_connections
  432. LEFT JOIN mz_roles ON mz_connections.owner_id = mz_roles.id
  433. WHERE mz_connections.name = 'mc'
  434. ----
  435. group_materialize
  436. statement ok
  437. ALTER CONNECTION mc RENAME TO ICs
  438. statement ok
  439. DROP CONNECTION ICs
  440. statement ok
  441. CREATE CONNECTION mssh TO SSH TUNNEL (HOST 'ssh-bastion-host', USER 'mz', PORT 22) WITH (VALIDATE = false);
  442. statement ok
  443. ALTER CONNECTION mssh ROTATE KEYS
  444. simple conn=joe,user=joe
  445. CREATE CONNECTION jc TO KAFKA (BROKER 'localhost:9092', SECURITY PROTOCOL PLAINTEXT) WITH (VALIDATE = false);
  446. ----
  447. COMPLETE 0
  448. query T
  449. SELECT mz_roles.name
  450. FROM mz_connections
  451. LEFT JOIN mz_roles ON mz_connections.owner_id = mz_roles.id
  452. WHERE mz_connections.name = 'jc'
  453. ----
  454. joe
  455. statement error must be owner of CONNECTION materialize.public.jc
  456. DROP CONNECTION jc
  457. statement error must be owner of CONNECTION materialize.public.jc
  458. ALTER CONNECTION jc RENAME TO cool
  459. statement error must be owner of CONNECTION materialize.public.jc
  460. ALTER CONNECTION jc OWNER TO group_materialize
  461. simple conn=joe,user=joe
  462. CREATE CONNECTION jssh TO SSH TUNNEL (HOST 'ssh-bastion-host', USER 'mz', PORT 22) WITH (VALIDATE = false);
  463. ----
  464. COMPLETE 0
  465. statement error must be owner of CONNECTION materialize.public.jssh
  466. ALTER CONNECTION jssh ROTATE KEYS
  467. ## Types
  468. statement ok
  469. CREATE TYPE mty AS LIST (ELEMENT TYPE=bool);
  470. query T
  471. SELECT mz_roles.name
  472. FROM mz_types
  473. LEFT JOIN mz_roles ON mz_types.owner_id = mz_roles.id
  474. WHERE mz_types.name = 'mty'
  475. ----
  476. materialize
  477. statement error must be a member of "group_no_one"
  478. ALTER TYPE mty OWNER TO group_no_one
  479. statement ok
  480. ALTER TYPE mty OWNER TO group_materialize
  481. query T
  482. SELECT mz_roles.name
  483. FROM mz_types
  484. LEFT JOIN mz_roles ON mz_types.owner_id = mz_roles.id
  485. WHERE mz_types.name = 'mty'
  486. ----
  487. group_materialize
  488. statement ok
  489. DROP TYPE mty
  490. simple conn=joe,user=joe
  491. CREATE TYPE jty AS LIST (ELEMENT TYPE=bool);
  492. ----
  493. COMPLETE 0
  494. query T
  495. SELECT mz_roles.name
  496. FROM mz_types
  497. LEFT JOIN mz_roles ON mz_types.owner_id = mz_roles.id
  498. WHERE mz_types.name = 'jty'
  499. ----
  500. joe
  501. statement error must be owner of TYPE materialize.public.jty
  502. DROP TYPE jty
  503. statement error must be owner of TYPE materialize.public.jty
  504. ALTER TYPE jty OWNER TO group_materialize
  505. ## Secrets
  506. statement ok
  507. CREATE SECRET mse AS decode('c2VjcmV0Cg==', 'base64');
  508. query T
  509. SELECT mz_roles.name
  510. FROM mz_secrets
  511. LEFT JOIN mz_roles ON mz_secrets.owner_id = mz_roles.id
  512. WHERE mz_secrets.name = 'mse'
  513. ----
  514. materialize
  515. statement error must be a member of "group_no_one"
  516. ALTER SECRET mse OWNER TO group_no_one
  517. statement ok
  518. ALTER SECRET mse OWNER TO group_materialize
  519. query T
  520. SELECT mz_roles.name
  521. FROM mz_secrets
  522. LEFT JOIN mz_roles ON mz_secrets.owner_id = mz_roles.id
  523. WHERE mz_secrets.name = 'mse'
  524. ----
  525. group_materialize
  526. statement ok
  527. ALTER SECRET mse AS decode('c2VjcmV0Cg==', 'base64');
  528. statement ok
  529. ALTER SECRET mse RENAME TO ICs
  530. statement ok
  531. DROP SECRET ICs
  532. simple conn=joe,user=joe
  533. CREATE SECRET jse AS decode('c2VjcmV0Cg==', 'base64');
  534. ----
  535. COMPLETE 0
  536. query T
  537. SELECT mz_roles.name
  538. FROM mz_secrets
  539. LEFT JOIN mz_roles ON mz_secrets.owner_id = mz_roles.id
  540. WHERE mz_secrets.name = 'jse'
  541. ----
  542. joe
  543. statement error must be owner of SECRET materialize.public.jse
  544. DROP SECRET jse
  545. statement error must be owner of SECRET materialize.public.jse
  546. ALTER SECRET jse RENAME TO cool
  547. statement error must be owner of SECRET materialize.public.jse
  548. ALTER SECRET jse OWNER TO group_materialize
  549. statement error must be owner of SECRET materialize.public.jse
  550. ALTER SECRET jse AS decode('c2VjcmV0Cg==', 'base64');
  551. ## Databases
  552. statement ok
  553. CREATE DATABASE mdb;
  554. query T
  555. SELECT mz_roles.name
  556. FROM mz_databases
  557. LEFT JOIN mz_roles ON mz_databases.owner_id = mz_roles.id
  558. WHERE mz_databases.name = 'mdb'
  559. ----
  560. materialize
  561. statement error must be a member of "group_no_one"
  562. ALTER DATABASE mdb OWNER TO group_no_one
  563. statement ok
  564. ALTER DATABASE mdb OWNER TO group_materialize
  565. query T
  566. SELECT mz_roles.name
  567. FROM mz_databases
  568. LEFT JOIN mz_roles ON mz_databases.owner_id = mz_roles.id
  569. WHERE mz_databases.name = 'mdb'
  570. ----
  571. group_materialize
  572. statement ok
  573. DROP DATABASE mdb
  574. simple conn=joe,user=joe
  575. CREATE DATABASE jdb;
  576. ----
  577. COMPLETE 0
  578. query T
  579. SELECT mz_roles.name
  580. FROM mz_databases
  581. LEFT JOIN mz_roles ON mz_databases.owner_id = mz_roles.id
  582. WHERE mz_databases.name = 'jdb'
  583. ----
  584. joe
  585. statement error must be owner of DATABASE jdb
  586. DROP DATABASE jdb
  587. statement error must be owner of DATABASE jdb
  588. ALTER DATABASE jdb OWNER TO group_materialize
  589. ## Schemas
  590. statement ok
  591. CREATE SCHEMA msc;
  592. query T
  593. SELECT mz_roles.name
  594. FROM mz_schemas
  595. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  596. WHERE mz_schemas.name = 'msc'
  597. ----
  598. materialize
  599. statement error must be a member of "group_no_one"
  600. ALTER SCHEMA msc OWNER TO group_no_one
  601. statement ok
  602. ALTER SCHEMA msc OWNER TO group_materialize
  603. query T
  604. SELECT mz_roles.name
  605. FROM mz_schemas
  606. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  607. WHERE mz_schemas.name = 'msc'
  608. ----
  609. group_materialize
  610. statement ok
  611. DROP SCHEMA msc
  612. simple conn=joe,user=joe
  613. CREATE SCHEMA jsc;
  614. ----
  615. COMPLETE 0
  616. query T
  617. SELECT mz_roles.name
  618. FROM mz_schemas
  619. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  620. WHERE mz_schemas.name = 'jsc'
  621. ----
  622. joe
  623. statement error must be owner of SCHEMA materialize.jsc
  624. DROP SCHEMA jsc
  625. statement error must be owner of SCHEMA materialize.jsc
  626. ALTER SCHEMA jsc OWNER TO group_materialize
  627. simple conn=mz_system,user=mz_system
  628. GRANT CREATE ON DATABASE jdb TO materialize;
  629. ----
  630. COMPLETE 0
  631. statement ok
  632. CREATE SCHEMA jdb.msc_cross;
  633. query T
  634. SELECT mz_roles.name
  635. FROM mz_schemas
  636. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  637. WHERE mz_schemas.name = 'msc_cross'
  638. ----
  639. materialize
  640. ## Clusters
  641. statement ok
  642. CREATE CLUSTER mclus REPLICAS (mr1 (SIZE '1'));
  643. query T
  644. SELECT mz_roles.name
  645. FROM mz_clusters
  646. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  647. WHERE mz_clusters.name = 'mclus'
  648. ----
  649. materialize
  650. query T
  651. SELECT mz_roles.name
  652. FROM mz_cluster_replicas
  653. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  654. WHERE mz_cluster_replicas.name = 'mr1'
  655. ----
  656. materialize
  657. statement error must be a member of "group_no_one"
  658. ALTER CLUSTER mclus OWNER TO group_no_one
  659. statement ok
  660. ALTER CLUSTER mclus OWNER TO group_materialize
  661. query T
  662. SELECT mz_roles.name
  663. FROM mz_clusters
  664. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  665. WHERE mz_clusters.name = 'mclus'
  666. ----
  667. group_materialize
  668. query T
  669. SELECT mz_roles.name
  670. FROM mz_cluster_replicas
  671. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  672. WHERE mz_cluster_replicas.name = 'mr1'
  673. ----
  674. group_materialize
  675. statement ok
  676. DROP CLUSTER mclus
  677. simple conn=joe,user=joe
  678. CREATE CLUSTER jclus REPLICAS (jr1 (SIZE '1'));
  679. ----
  680. COMPLETE 0
  681. query T
  682. SELECT mz_roles.name
  683. FROM mz_clusters
  684. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  685. WHERE mz_clusters.name = 'jclus'
  686. ----
  687. joe
  688. query T
  689. SELECT mz_roles.name
  690. FROM mz_cluster_replicas
  691. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  692. WHERE mz_cluster_replicas.name = 'jr1'
  693. ----
  694. joe
  695. statement error must be owner of CLUSTER jclus
  696. DROP CLUSTER jclus
  697. statement error must be owner of CLUSTER jclus
  698. ALTER CLUSTER jclus RENAME TO jclus2
  699. simple conn=joe,user=joe
  700. ALTER CLUSTER jclus RENAME TO jclus2;
  701. ----
  702. COMPLETE 0
  703. simple conn=joe,user=joe
  704. ALTER CLUSTER jclus2 RENAME TO jclus;
  705. ----
  706. COMPLETE 0
  707. statement error must be owner of CLUSTER jclus
  708. ALTER CLUSTER jclus OWNER TO group_materialize
  709. simple conn=joe,user=joe
  710. DROP CLUSTER jclus;
  711. ----
  712. COMPLETE 0
  713. ## Cluster Replicas
  714. statement ok
  715. CREATE CLUSTER mclus REPLICAS (mr1 (SIZE '1'));
  716. statement ok
  717. CREATE CLUSTER REPLICA mclus.mr2 SIZE '1';
  718. query T
  719. SELECT mz_roles.name
  720. FROM mz_cluster_replicas
  721. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  722. WHERE mz_cluster_replicas.name = 'mr2'
  723. ----
  724. materialize
  725. statement error altering the owner of a cluster replica is not supported
  726. ALTER CLUSTER REPLICA mclus.mr2 OWNER TO group_no_one
  727. statement error altering the owner of a cluster replica is not supported
  728. ALTER CLUSTER REPLICA mclus.mr2 OWNER TO group_materialize
  729. query T
  730. SELECT mz_roles.name
  731. FROM mz_cluster_replicas
  732. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  733. WHERE mz_cluster_replicas.name = 'mr2'
  734. ----
  735. materialize
  736. statement ok
  737. ALTER CLUSTER REPLICA mclus.mr2 RENAME TO mr3
  738. query T
  739. SELECT mz_roles.name
  740. FROM mz_cluster_replicas
  741. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  742. WHERE mz_cluster_replicas.name = 'mr3'
  743. ----
  744. materialize
  745. statement ok
  746. ALTER CLUSTER mclus OWNER TO group_materialize
  747. query T
  748. SELECT mz_roles.name
  749. FROM mz_cluster_replicas
  750. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  751. WHERE mz_cluster_replicas.name = 'mr3'
  752. ----
  753. group_materialize
  754. statement ok
  755. DROP CLUSTER REPLICA mclus.mr3
  756. statement ok
  757. DROP CLUSTER mclus
  758. simple conn=joe,user=joe
  759. CREATE CLUSTER jclus REPLICAS (jr1 (SIZE '1'));
  760. ----
  761. COMPLETE 0
  762. simple conn=joe,user=joe
  763. CREATE CLUSTER REPLICA jclus.jr2 SIZE '1';
  764. ----
  765. COMPLETE 0
  766. query T
  767. SELECT mz_roles.name
  768. FROM mz_cluster_replicas
  769. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  770. WHERE mz_cluster_replicas.name = 'jr2'
  771. ----
  772. joe
  773. statement error must be owner of CLUSTER REPLICA jclus.jr2
  774. DROP CLUSTER REPLICA jclus.jr2
  775. statement error must be owner of CLUSTER REPLICA jclus.jr2
  776. ALTER CLUSTER REPLICA jclus.jr2 RENAME TO jr3
  777. statement error altering the owner of a cluster replica is not supported
  778. ALTER CLUSTER REPLICA jclus.jr2 OWNER TO group_materialize
  779. simple conn=joe,user=joe
  780. DROP CLUSTER REPLICA jclus.jr2;
  781. ----
  782. COMPLETE 0
  783. simple conn=joe,user=joe
  784. DROP CLUSTER jclus;
  785. ----
  786. COMPLETE 0
  787. ## Clean up
  788. simple conn=mz_system,user=mz_system
  789. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM joe;
  790. ----
  791. COMPLETE 0
  792. # Renaming does not change owner
  793. statement ok
  794. CREATE TABLE old_table ();
  795. query T
  796. SELECT mz_roles.name
  797. FROM mz_tables
  798. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  799. WHERE mz_tables.name = 'old_table'
  800. ----
  801. materialize
  802. simple conn=mz_system,user=mz_system
  803. ALTER TABLE mt RENAME TO new_table;
  804. ----
  805. COMPLETE 0
  806. query T
  807. SELECT mz_roles.name
  808. FROM mz_tables
  809. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  810. WHERE mz_tables.name = 'new_table'
  811. ----
  812. materialize
  813. # Prevent dropping roles while owned objects exist
  814. ## Tables
  815. statement ok
  816. CREATE ROLE owner
  817. simple conn=mz_system,user=mz_system
  818. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  819. ----
  820. COMPLETE 0
  821. simple conn=mz_system,user=mz_system
  822. GRANT CREATE ON DATABASE materialize TO owner;
  823. ----
  824. COMPLETE 0
  825. simple conn=mz_system,user=mz_system
  826. GRANT CREATE ON SCHEMA materialize.public TO owner;
  827. ----
  828. COMPLETE 0
  829. simple conn=mz_system,user=mz_system
  830. GRANT CREATE ON CLUSTER quickstart TO owner;
  831. ----
  832. COMPLETE 0
  833. simple conn=owner1,user=owner
  834. CREATE TABLE t (a INT);
  835. ----
  836. COMPLETE 0
  837. simple conn=materialize,user=materialize
  838. DROP ROLE owner
  839. ----
  840. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  841. DETAIL: owner: owner of TABLE "materialize.public.t"
  842. owner: privileges on TABLE "materialize.public.t" granted by owner
  843. owner: privileges granted on TABLE "materialize.public.t" to owner
  844. owner: privileges on DATABASE "materialize" granted by mz_system
  845. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  846. owner: privileges on CLUSTER "quickstart" granted by mz_system
  847. owner: privileges on SYSTEM granted by mz_system
  848. simple conn=owner1,user=owner
  849. DROP TABLE t;
  850. ----
  851. COMPLETE 0
  852. simple conn=materialize,user=materialize
  853. DROP ROLE owner
  854. ----
  855. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  856. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  857. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  858. owner: privileges on CLUSTER "quickstart" granted by mz_system
  859. owner: privileges on SYSTEM granted by mz_system
  860. simple conn=mz_system,user=mz_system
  861. REVOKE CREATE ON DATABASE materialize FROM owner;
  862. ----
  863. COMPLETE 0
  864. simple conn=mz_system,user=mz_system
  865. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  866. ----
  867. COMPLETE 0
  868. simple conn=mz_system,user=mz_system
  869. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  870. ----
  871. COMPLETE 0
  872. simple conn=mz_system,user=mz_system
  873. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  874. ----
  875. COMPLETE 0
  876. statement ok
  877. DROP ROLE owner
  878. ## Indexes
  879. statement ok
  880. CREATE ROLE owner
  881. simple conn=mz_system,user=mz_system
  882. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  883. ----
  884. COMPLETE 0
  885. simple conn=mz_system,user=mz_system
  886. GRANT CREATE ON DATABASE materialize TO owner;
  887. ----
  888. COMPLETE 0
  889. simple conn=mz_system,user=mz_system
  890. GRANT CREATE ON SCHEMA materialize.public TO owner;
  891. ----
  892. COMPLETE 0
  893. simple conn=mz_system,user=mz_system
  894. GRANT CREATE ON CLUSTER quickstart TO owner;
  895. ----
  896. COMPLETE 0
  897. simple conn=owner2,user=owner
  898. create TABLE t (a INT);
  899. ----
  900. COMPLETE 0
  901. simple conn=owner2,user=owner
  902. CREATE INDEX ind ON t(a);
  903. ----
  904. COMPLETE 0
  905. simple conn=materialize,user=materialize
  906. DROP ROLE owner
  907. ----
  908. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  909. DETAIL: owner: owner of TABLE "materialize.public.t"
  910. owner: privileges on TABLE "materialize.public.t" granted by owner
  911. owner: privileges granted on TABLE "materialize.public.t" to owner
  912. owner: owner of INDEX "materialize.public.ind"
  913. owner: privileges on INDEX "materialize.public.ind" granted by owner
  914. owner: privileges granted on INDEX "materialize.public.ind" to owner
  915. owner: privileges on DATABASE "materialize" granted by mz_system
  916. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  917. owner: privileges on CLUSTER "quickstart" granted by mz_system
  918. owner: privileges on SYSTEM granted by mz_system
  919. simple conn=owner2,user=owner
  920. DROP INDEX ind;
  921. ----
  922. COMPLETE 0
  923. simple conn=owner2,user=owner
  924. DROP TABLE t;
  925. ----
  926. COMPLETE 0
  927. simple conn=materialize,user=materialize
  928. DROP ROLE owner
  929. ----
  930. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  931. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  932. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  933. owner: privileges on CLUSTER "quickstart" granted by mz_system
  934. owner: privileges on SYSTEM granted by mz_system
  935. simple conn=mz_system,user=mz_system
  936. REVOKE CREATE ON DATABASE materialize FROM owner;
  937. ----
  938. COMPLETE 0
  939. simple conn=mz_system,user=mz_system
  940. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  941. ----
  942. COMPLETE 0
  943. simple conn=mz_system,user=mz_system
  944. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  945. ----
  946. COMPLETE 0
  947. simple conn=mz_system,user=mz_system
  948. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  949. ----
  950. COMPLETE 0
  951. statement ok
  952. DROP ROLE owner
  953. ## Sources
  954. statement ok
  955. CREATE ROLE owner
  956. simple conn=mz_system,user=mz_system
  957. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  958. ----
  959. COMPLETE 0
  960. simple conn=mz_system,user=mz_system
  961. GRANT CREATE ON DATABASE materialize TO owner;
  962. ----
  963. COMPLETE 0
  964. simple conn=mz_system,user=mz_system
  965. GRANT CREATE ON SCHEMA materialize.public TO owner;
  966. ----
  967. COMPLETE 0
  968. simple conn=mz_system,user=mz_system
  969. GRANT CREATE ON CLUSTER quickstart TO owner;
  970. ----
  971. COMPLETE 0
  972. simple conn=owner3,user=owner
  973. create SOURCE s FROM LOAD GENERATOR COUNTER;
  974. ----
  975. COMPLETE 0
  976. simple conn=materialize,user=materialize
  977. DROP ROLE owner
  978. ----
  979. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  980. DETAIL: owner: owner of SOURCE "materialize.public.s_progress"
  981. owner: privileges granted on SOURCE "materialize.public.s_progress" to mz_support
  982. owner: privileges on SOURCE "materialize.public.s_progress" granted by owner
  983. owner: privileges granted on SOURCE "materialize.public.s_progress" to owner
  984. owner: owner of SOURCE "materialize.public.s"
  985. owner: privileges on SOURCE "materialize.public.s" granted by owner
  986. owner: privileges granted on SOURCE "materialize.public.s" to owner
  987. owner: privileges on DATABASE "materialize" granted by mz_system
  988. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  989. owner: privileges on CLUSTER "quickstart" granted by mz_system
  990. owner: privileges on SYSTEM granted by mz_system
  991. simple conn=owner3,user=owner
  992. DROP SOURCE s;
  993. ----
  994. COMPLETE 0
  995. simple conn=materialize,user=materialize
  996. DROP ROLE owner
  997. ----
  998. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  999. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1000. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1001. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1002. owner: privileges on SYSTEM granted by mz_system
  1003. simple conn=mz_system,user=mz_system
  1004. REVOKE CREATE ON DATABASE materialize FROM owner;
  1005. ----
  1006. COMPLETE 0
  1007. simple conn=mz_system,user=mz_system
  1008. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1009. ----
  1010. COMPLETE 0
  1011. simple conn=mz_system,user=mz_system
  1012. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1013. ----
  1014. COMPLETE 0
  1015. simple conn=mz_system,user=mz_system
  1016. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1017. ----
  1018. COMPLETE 0
  1019. statement ok
  1020. DROP ROLE owner
  1021. ## Views
  1022. statement ok
  1023. CREATE ROLE owner
  1024. simple conn=mz_system,user=mz_system
  1025. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1026. ----
  1027. COMPLETE 0
  1028. simple conn=mz_system,user=mz_system
  1029. GRANT CREATE ON DATABASE materialize TO owner;
  1030. ----
  1031. COMPLETE 0
  1032. simple conn=mz_system,user=mz_system
  1033. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1034. ----
  1035. COMPLETE 0
  1036. simple conn=mz_system,user=mz_system
  1037. GRANT CREATE ON CLUSTER quickstart TO owner;
  1038. ----
  1039. COMPLETE 0
  1040. simple conn=owner4,user=owner
  1041. CREATE VIEW v AS SELECT 1;
  1042. ----
  1043. COMPLETE 0
  1044. simple conn=materialize,user=materialize
  1045. DROP ROLE owner
  1046. ----
  1047. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1048. DETAIL: owner: owner of VIEW "materialize.public.v"
  1049. owner: privileges on VIEW "materialize.public.v" granted by owner
  1050. owner: privileges granted on VIEW "materialize.public.v" to owner
  1051. owner: privileges on DATABASE "materialize" granted by mz_system
  1052. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1053. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1054. owner: privileges on SYSTEM granted by mz_system
  1055. simple conn=owner4,user=owner
  1056. DROP VIEW v;
  1057. ----
  1058. COMPLETE 0
  1059. simple conn=materialize,user=materialize
  1060. DROP ROLE owner
  1061. ----
  1062. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1063. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1064. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1065. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1066. owner: privileges on SYSTEM granted by mz_system
  1067. simple conn=mz_system,user=mz_system
  1068. REVOKE CREATE ON DATABASE materialize FROM owner;
  1069. ----
  1070. COMPLETE 0
  1071. simple conn=mz_system,user=mz_system
  1072. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1073. ----
  1074. COMPLETE 0
  1075. simple conn=mz_system,user=mz_system
  1076. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1077. ----
  1078. COMPLETE 0
  1079. simple conn=mz_system,user=mz_system
  1080. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1081. ----
  1082. COMPLETE 0
  1083. statement ok
  1084. DROP ROLE owner
  1085. ## Materialized Views
  1086. statement ok
  1087. CREATE ROLE owner
  1088. simple conn=mz_system,user=mz_system
  1089. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1090. ----
  1091. COMPLETE 0
  1092. simple conn=mz_system,user=mz_system
  1093. GRANT CREATE ON DATABASE materialize TO owner;
  1094. ----
  1095. COMPLETE 0
  1096. simple conn=mz_system,user=mz_system
  1097. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1098. ----
  1099. COMPLETE 0
  1100. simple conn=mz_system,user=mz_system
  1101. GRANT CREATE ON CLUSTER quickstart TO owner;
  1102. ----
  1103. COMPLETE 0
  1104. simple conn=owner5,user=owner
  1105. CREATE MATERIALIZED VIEW mvv AS SELECT 1;
  1106. ----
  1107. COMPLETE 0
  1108. simple conn=materialize,user=materialize
  1109. DROP ROLE owner
  1110. ----
  1111. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1112. DETAIL: owner: owner of MATERIALIZED VIEW "materialize.public.mvv"
  1113. owner: privileges on MATERIALIZED VIEW "materialize.public.mvv" granted by owner
  1114. owner: privileges granted on MATERIALIZED VIEW "materialize.public.mvv" to owner
  1115. owner: privileges on DATABASE "materialize" granted by mz_system
  1116. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1117. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1118. owner: privileges on SYSTEM granted by mz_system
  1119. simple conn=owner5,user=owner
  1120. DROP MATERIALIZED VIEW mvv;
  1121. ----
  1122. COMPLETE 0
  1123. simple conn=materialize,user=materialize
  1124. DROP ROLE owner
  1125. ----
  1126. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1127. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1128. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1129. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1130. owner: privileges on SYSTEM granted by mz_system
  1131. simple conn=mz_system,user=mz_system
  1132. REVOKE CREATE ON DATABASE materialize FROM owner;
  1133. ----
  1134. COMPLETE 0
  1135. simple conn=mz_system,user=mz_system
  1136. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1137. ----
  1138. COMPLETE 0
  1139. simple conn=mz_system,user=mz_system
  1140. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1141. ----
  1142. COMPLETE 0
  1143. simple conn=mz_system,user=mz_system
  1144. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1145. ----
  1146. COMPLETE 0
  1147. statement ok
  1148. DROP ROLE owner
  1149. ## Connections
  1150. statement ok
  1151. CREATE ROLE owner
  1152. simple conn=mz_system,user=mz_system
  1153. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1154. ----
  1155. COMPLETE 0
  1156. simple conn=mz_system,user=mz_system
  1157. GRANT CREATE ON DATABASE materialize TO owner;
  1158. ----
  1159. COMPLETE 0
  1160. simple conn=mz_system,user=mz_system
  1161. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1162. ----
  1163. COMPLETE 0
  1164. simple conn=mz_system,user=mz_system
  1165. GRANT CREATE ON CLUSTER quickstart TO owner;
  1166. ----
  1167. COMPLETE 0
  1168. simple conn=owner6,user=owner
  1169. CREATE CONNECTION c TO KAFKA (BROKER 'localhost:9092', SECURITY PROTOCOL PLAINTEXT) WITH (VALIDATE = false);
  1170. ----
  1171. COMPLETE 0
  1172. simple conn=materialize,user=materialize
  1173. DROP ROLE owner
  1174. ----
  1175. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1176. DETAIL: owner: owner of CONNECTION "materialize.public.c"
  1177. owner: privileges on CONNECTION "materialize.public.c" granted by owner
  1178. owner: privileges granted on CONNECTION "materialize.public.c" to owner
  1179. owner: privileges on DATABASE "materialize" granted by mz_system
  1180. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1181. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1182. owner: privileges on SYSTEM granted by mz_system
  1183. simple conn=owner6,user=owner
  1184. DROP CONNECTION c;
  1185. ----
  1186. COMPLETE 0
  1187. simple conn=materialize,user=materialize
  1188. DROP ROLE owner
  1189. ----
  1190. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1191. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1192. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1193. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1194. owner: privileges on SYSTEM granted by mz_system
  1195. simple conn=mz_system,user=mz_system
  1196. REVOKE CREATE ON DATABASE materialize FROM owner;
  1197. ----
  1198. COMPLETE 0
  1199. simple conn=mz_system,user=mz_system
  1200. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1201. ----
  1202. COMPLETE 0
  1203. simple conn=mz_system,user=mz_system
  1204. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1205. ----
  1206. COMPLETE 0
  1207. simple conn=mz_system,user=mz_system
  1208. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1209. ----
  1210. COMPLETE 0
  1211. statement ok
  1212. DROP ROLE owner
  1213. ## Types
  1214. statement ok
  1215. CREATE ROLE owner
  1216. simple conn=mz_system,user=mz_system
  1217. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1218. ----
  1219. COMPLETE 0
  1220. simple conn=mz_system,user=mz_system
  1221. GRANT CREATE ON DATABASE materialize TO owner;
  1222. ----
  1223. COMPLETE 0
  1224. simple conn=mz_system,user=mz_system
  1225. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1226. ----
  1227. COMPLETE 0
  1228. simple conn=mz_system,user=mz_system
  1229. GRANT CREATE ON CLUSTER quickstart TO owner;
  1230. ----
  1231. COMPLETE 0
  1232. simple conn=owner7,user=owner
  1233. CREATE TYPE ty AS LIST (ELEMENT TYPE=bool);
  1234. ----
  1235. COMPLETE 0
  1236. simple conn=materialize,user=materialize
  1237. DROP ROLE owner
  1238. ----
  1239. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1240. DETAIL: owner: owner of TYPE "materialize.public.ty"
  1241. owner: privileges on TYPE "materialize.public.ty" granted by owner
  1242. owner: privileges granted on TYPE "materialize.public.ty" to owner
  1243. owner: privileges granted on TYPE "materialize.public.ty" to public
  1244. owner: privileges on DATABASE "materialize" granted by mz_system
  1245. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1246. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1247. owner: privileges on SYSTEM granted by mz_system
  1248. simple conn=owner7,user=owner
  1249. DROP TYPE ty;
  1250. ----
  1251. COMPLETE 0
  1252. simple conn=materialize,user=materialize
  1253. DROP ROLE owner
  1254. ----
  1255. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1256. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1257. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1258. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1259. owner: privileges on SYSTEM granted by mz_system
  1260. simple conn=mz_system,user=mz_system
  1261. REVOKE CREATE ON DATABASE materialize FROM owner;
  1262. ----
  1263. COMPLETE 0
  1264. simple conn=mz_system,user=mz_system
  1265. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1266. ----
  1267. COMPLETE 0
  1268. simple conn=mz_system,user=mz_system
  1269. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1270. ----
  1271. COMPLETE 0
  1272. simple conn=mz_system,user=mz_system
  1273. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1274. ----
  1275. COMPLETE 0
  1276. statement ok
  1277. DROP ROLE owner
  1278. ## Secrets
  1279. statement ok
  1280. CREATE ROLE owner
  1281. simple conn=mz_system,user=mz_system
  1282. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1283. ----
  1284. COMPLETE 0
  1285. simple conn=mz_system,user=mz_system
  1286. GRANT CREATE ON DATABASE materialize TO owner;
  1287. ----
  1288. COMPLETE 0
  1289. simple conn=mz_system,user=mz_system
  1290. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1291. ----
  1292. COMPLETE 0
  1293. simple conn=mz_system,user=mz_system
  1294. GRANT CREATE ON CLUSTER quickstart TO owner;
  1295. ----
  1296. COMPLETE 0
  1297. simple conn=owner8,user=owner
  1298. CREATE SECRET se AS decode('c2VjcmV0Cg==', 'base64');
  1299. ----
  1300. COMPLETE 0
  1301. simple conn=materialize,user=materialize
  1302. DROP ROLE owner
  1303. ----
  1304. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1305. DETAIL: owner: owner of SECRET "materialize.public.se"
  1306. owner: privileges on SECRET "materialize.public.se" granted by owner
  1307. owner: privileges granted on SECRET "materialize.public.se" to owner
  1308. owner: privileges on DATABASE "materialize" granted by mz_system
  1309. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1310. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1311. owner: privileges on SYSTEM granted by mz_system
  1312. simple conn=owner8,user=owner
  1313. DROP SECRET se;
  1314. ----
  1315. COMPLETE 0
  1316. simple conn=materialize,user=materialize
  1317. DROP ROLE owner
  1318. ----
  1319. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1320. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1321. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1322. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1323. owner: privileges on SYSTEM granted by mz_system
  1324. simple conn=mz_system,user=mz_system
  1325. REVOKE CREATE ON DATABASE materialize FROM owner;
  1326. ----
  1327. COMPLETE 0
  1328. simple conn=mz_system,user=mz_system
  1329. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1330. ----
  1331. COMPLETE 0
  1332. simple conn=mz_system,user=mz_system
  1333. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1334. ----
  1335. COMPLETE 0
  1336. simple conn=mz_system,user=mz_system
  1337. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1338. ----
  1339. COMPLETE 0
  1340. statement ok
  1341. DROP ROLE owner
  1342. ## Databases
  1343. statement ok
  1344. CREATE ROLE owner
  1345. simple conn=mz_system,user=mz_system
  1346. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1347. ----
  1348. COMPLETE 0
  1349. simple conn=mz_system,user=mz_system
  1350. GRANT CREATE ON DATABASE materialize TO owner;
  1351. ----
  1352. COMPLETE 0
  1353. simple conn=mz_system,user=mz_system
  1354. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1355. ----
  1356. COMPLETE 0
  1357. simple conn=mz_system,user=mz_system
  1358. GRANT CREATE ON CLUSTER quickstart TO owner;
  1359. ----
  1360. COMPLETE 0
  1361. simple conn=owner9,user=owner
  1362. CREATE DATABASE db;
  1363. ----
  1364. COMPLETE 0
  1365. simple conn=materialize,user=materialize
  1366. DROP ROLE owner
  1367. ----
  1368. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1369. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1370. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1371. owner: owner of DATABASE "db"
  1372. owner: privileges granted on DATABASE "db" to mz_support
  1373. owner: privileges on DATABASE "db" granted by owner
  1374. owner: privileges granted on DATABASE "db" to owner
  1375. owner: owner of SCHEMA "db.public"
  1376. owner: privileges granted on SCHEMA "db.public" to mz_support
  1377. owner: privileges on SCHEMA "db.public" granted by owner
  1378. owner: privileges granted on SCHEMA "db.public" to owner
  1379. owner: privileges granted on SCHEMA "db.public" to public
  1380. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1381. owner: privileges on SYSTEM granted by mz_system
  1382. simple conn=owner9,user=owner
  1383. DROP DATABASE db;
  1384. ----
  1385. COMPLETE 0
  1386. simple conn=materialize,user=materialize
  1387. DROP ROLE owner
  1388. ----
  1389. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1390. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1391. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1392. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1393. owner: privileges on SYSTEM granted by mz_system
  1394. simple conn=mz_system,user=mz_system
  1395. REVOKE CREATE ON DATABASE materialize FROM owner;
  1396. ----
  1397. COMPLETE 0
  1398. simple conn=mz_system,user=mz_system
  1399. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1400. ----
  1401. COMPLETE 0
  1402. simple conn=mz_system,user=mz_system
  1403. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1404. ----
  1405. COMPLETE 0
  1406. simple conn=mz_system,user=mz_system
  1407. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1408. ----
  1409. COMPLETE 0
  1410. statement ok
  1411. DROP ROLE owner
  1412. ## Schemas
  1413. statement ok
  1414. CREATE ROLE owner
  1415. simple conn=mz_system,user=mz_system
  1416. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1417. ----
  1418. COMPLETE 0
  1419. simple conn=mz_system,user=mz_system
  1420. GRANT CREATE ON DATABASE materialize TO owner;
  1421. ----
  1422. COMPLETE 0
  1423. simple conn=mz_system,user=mz_system
  1424. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1425. ----
  1426. COMPLETE 0
  1427. simple conn=mz_system,user=mz_system
  1428. GRANT CREATE ON CLUSTER quickstart TO owner;
  1429. ----
  1430. COMPLETE 0
  1431. simple conn=owner10,user=owner
  1432. CREATE SCHEMA sc;
  1433. ----
  1434. COMPLETE 0
  1435. simple conn=materialize,user=materialize
  1436. DROP ROLE owner
  1437. ----
  1438. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1439. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1440. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1441. owner: owner of SCHEMA "materialize.sc"
  1442. owner: privileges granted on SCHEMA "materialize.sc" to mz_support
  1443. owner: privileges on SCHEMA "materialize.sc" granted by owner
  1444. owner: privileges granted on SCHEMA "materialize.sc" to owner
  1445. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1446. owner: privileges on SYSTEM granted by mz_system
  1447. simple conn=owner10,user=owner
  1448. DROP SCHEMA sc;
  1449. ----
  1450. COMPLETE 0
  1451. simple conn=materialize,user=materialize
  1452. DROP ROLE owner
  1453. ----
  1454. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1455. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1456. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1457. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1458. owner: privileges on SYSTEM granted by mz_system
  1459. simple conn=mz_system,user=mz_system
  1460. REVOKE CREATE ON DATABASE materialize FROM owner;
  1461. ----
  1462. COMPLETE 0
  1463. simple conn=mz_system,user=mz_system
  1464. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1465. ----
  1466. COMPLETE 0
  1467. simple conn=mz_system,user=mz_system
  1468. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1469. ----
  1470. COMPLETE 0
  1471. simple conn=mz_system,user=mz_system
  1472. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1473. ----
  1474. COMPLETE 0
  1475. statement ok
  1476. DROP ROLE owner
  1477. ## Clusters
  1478. statement ok
  1479. CREATE ROLE owner
  1480. simple conn=mz_system,user=mz_system
  1481. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1482. ----
  1483. COMPLETE 0
  1484. simple conn=mz_system,user=mz_system
  1485. GRANT CREATE ON DATABASE materialize TO owner;
  1486. ----
  1487. COMPLETE 0
  1488. simple conn=mz_system,user=mz_system
  1489. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1490. ----
  1491. COMPLETE 0
  1492. simple conn=mz_system,user=mz_system
  1493. GRANT CREATE ON CLUSTER quickstart TO owner;
  1494. ----
  1495. COMPLETE 0
  1496. simple conn=owner11,user=owner
  1497. CREATE CLUSTER clus REPLICAS (r1 (SIZE '1'));
  1498. ----
  1499. COMPLETE 0
  1500. simple conn=materialize,user=materialize
  1501. DROP ROLE owner
  1502. ----
  1503. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1504. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1505. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1506. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1507. owner: owner of CLUSTER "clus"
  1508. owner: privileges granted on CLUSTER "clus" to mz_support
  1509. owner: privileges on CLUSTER "clus" granted by owner
  1510. owner: privileges granted on CLUSTER "clus" to owner
  1511. owner: owner of CLUSTER REPLICA "r1"
  1512. owner: privileges on SYSTEM granted by mz_system
  1513. simple conn=owner11,user=owner
  1514. DROP CLUSTER clus;
  1515. ----
  1516. COMPLETE 0
  1517. simple conn=materialize,user=materialize
  1518. DROP ROLE owner
  1519. ----
  1520. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1521. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1522. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1523. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1524. owner: privileges on SYSTEM granted by mz_system
  1525. simple conn=mz_system,user=mz_system
  1526. REVOKE CREATE ON DATABASE materialize FROM owner;
  1527. ----
  1528. COMPLETE 0
  1529. simple conn=mz_system,user=mz_system
  1530. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1531. ----
  1532. COMPLETE 0
  1533. simple conn=mz_system,user=mz_system
  1534. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1535. ----
  1536. COMPLETE 0
  1537. simple conn=mz_system,user=mz_system
  1538. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1539. ----
  1540. COMPLETE 0
  1541. statement ok
  1542. DROP ROLE owner
  1543. ## Cluster Replicas
  1544. statement ok
  1545. CREATE ROLE owner
  1546. simple conn=mz_system,user=mz_system
  1547. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1548. ----
  1549. COMPLETE 0
  1550. simple conn=mz_system,user=mz_system
  1551. GRANT CREATE ON DATABASE materialize TO owner;
  1552. ----
  1553. COMPLETE 0
  1554. simple conn=mz_system,user=mz_system
  1555. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1556. ----
  1557. COMPLETE 0
  1558. simple conn=owner12,user=owner
  1559. CREATE CLUSTER clus REPLICAS (r1 (SIZE '1'));
  1560. ----
  1561. COMPLETE 0
  1562. simple conn=owner12,user=owner
  1563. CREATE CLUSTER REPLICA clus.r2 SIZE '1';
  1564. ----
  1565. COMPLETE 0
  1566. simple conn=materialize,user=materialize
  1567. DROP ROLE owner
  1568. ----
  1569. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1570. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1571. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1572. owner: owner of CLUSTER "clus"
  1573. owner: privileges granted on CLUSTER "clus" to mz_support
  1574. owner: privileges on CLUSTER "clus" granted by owner
  1575. owner: privileges granted on CLUSTER "clus" to owner
  1576. owner: owner of CLUSTER REPLICA "r1"
  1577. owner: owner of CLUSTER REPLICA "r2"
  1578. owner: privileges on SYSTEM granted by mz_system
  1579. simple conn=owner12,user=owner
  1580. DROP CLUSTER REPLICA clus.r2;
  1581. ----
  1582. COMPLETE 0
  1583. simple conn=materialize,user=materialize
  1584. DROP ROLE owner
  1585. ----
  1586. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1587. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1588. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1589. owner: owner of CLUSTER "clus"
  1590. owner: privileges granted on CLUSTER "clus" to mz_support
  1591. owner: privileges on CLUSTER "clus" granted by owner
  1592. owner: privileges granted on CLUSTER "clus" to owner
  1593. owner: owner of CLUSTER REPLICA "r1"
  1594. owner: privileges on SYSTEM granted by mz_system
  1595. simple conn=owner12,user=owner
  1596. DROP CLUSTER clus;
  1597. ----
  1598. COMPLETE 0
  1599. simple conn=mz_system,user=mz_system
  1600. REVOKE CREATE ON DATABASE materialize FROM owner;
  1601. ----
  1602. COMPLETE 0
  1603. simple conn=mz_system,user=mz_system
  1604. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1605. ----
  1606. COMPLETE 0
  1607. simple conn=mz_system,user=mz_system
  1608. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1609. ----
  1610. COMPLETE 0
  1611. simple conn=mz_system,user=mz_system
  1612. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1613. ----
  1614. COMPLETE 0
  1615. statement ok
  1616. DROP ROLE owner
  1617. ## Multiple Objects
  1618. statement ok
  1619. CREATE ROLE owner
  1620. simple conn=mz_system,user=mz_system
  1621. GRANT CREATECLUSTER, CREATEDB ON SYSTEM TO owner;
  1622. ----
  1623. COMPLETE 0
  1624. simple conn=mz_system,user=mz_system
  1625. GRANT CREATE ON DATABASE materialize TO owner;
  1626. ----
  1627. COMPLETE 0
  1628. simple conn=mz_system,user=mz_system
  1629. GRANT CREATE ON SCHEMA materialize.public TO owner;
  1630. ----
  1631. COMPLETE 0
  1632. simple conn=mz_system,user=mz_system
  1633. GRANT CREATE ON CLUSTER quickstart TO owner;
  1634. ----
  1635. COMPLETE 0
  1636. simple conn=owner13,user=owner
  1637. CREATE TABLE t (a INT)
  1638. ----
  1639. COMPLETE 0
  1640. simple conn=owner13,user=owner
  1641. CREATE VIEW v AS SELECT 1
  1642. ----
  1643. COMPLETE 0
  1644. simple conn=materialize,user=materialize
  1645. DROP ROLE owner
  1646. ----
  1647. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1648. DETAIL: owner: owner of TABLE "materialize.public.t"
  1649. owner: privileges on TABLE "materialize.public.t" granted by owner
  1650. owner: privileges granted on TABLE "materialize.public.t" to owner
  1651. owner: owner of VIEW "materialize.public.v"
  1652. owner: privileges on VIEW "materialize.public.v" granted by owner
  1653. owner: privileges granted on VIEW "materialize.public.v" to owner
  1654. owner: privileges on DATABASE "materialize" granted by mz_system
  1655. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1656. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1657. owner: privileges on SYSTEM granted by mz_system
  1658. simple conn=owner13,user=owner
  1659. DROP TABLE t
  1660. ----
  1661. COMPLETE 0
  1662. simple conn=materialize,user=materialize
  1663. DROP ROLE owner
  1664. ----
  1665. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1666. DETAIL: owner: owner of VIEW "materialize.public.v"
  1667. owner: privileges on VIEW "materialize.public.v" granted by owner
  1668. owner: privileges granted on VIEW "materialize.public.v" to owner
  1669. owner: privileges on DATABASE "materialize" granted by mz_system
  1670. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1671. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1672. owner: privileges on SYSTEM granted by mz_system
  1673. simple conn=owner13,user=owner
  1674. DROP VIEW v
  1675. ----
  1676. COMPLETE 0
  1677. simple conn=materialize,user=materialize
  1678. DROP ROLE owner
  1679. ----
  1680. db error: ERROR: role "owner" cannot be dropped because some objects depend on it
  1681. DETAIL: owner: privileges on DATABASE "materialize" granted by mz_system
  1682. owner: privileges on SCHEMA "materialize.public" granted by mz_system
  1683. owner: privileges on CLUSTER "quickstart" granted by mz_system
  1684. owner: privileges on SYSTEM granted by mz_system
  1685. simple conn=mz_system,user=mz_system
  1686. REVOKE CREATE ON DATABASE materialize FROM owner;
  1687. ----
  1688. COMPLETE 0
  1689. simple conn=mz_system,user=mz_system
  1690. REVOKE CREATE ON SCHEMA materialize.public FROM owner;
  1691. ----
  1692. COMPLETE 0
  1693. simple conn=mz_system,user=mz_system
  1694. REVOKE CREATE ON CLUSTER quickstart FROM owner;
  1695. ----
  1696. COMPLETE 0
  1697. simple conn=mz_system,user=mz_system
  1698. REVOKE CREATECLUSTER, CREATEDB ON SYSTEM FROM owner;
  1699. ----
  1700. COMPLETE 0
  1701. statement ok
  1702. DROP ROLE owner
  1703. # Prevent altering the owner of system resources
  1704. simple conn=mz_system,user=mz_system
  1705. ALTER CLUSTER mz_system OWNER TO mz_system
  1706. ----
  1707. db error: ERROR: system cluster 'mz_system' cannot be modified
  1708. simple conn=mz_system,user=mz_system
  1709. ALTER CLUSTER REPLICA mz_system.r1 OWNER TO mz_system
  1710. ----
  1711. db error: ERROR: altering the owner of a cluster replica is not supported
  1712. simple conn=mz_system,user=mz_system
  1713. ALTER SCHEMA mz_catalog OWNER TO mz_system
  1714. ----
  1715. db error: ERROR: cannot alter schema mz_catalog because it is required by the database system
  1716. simple conn=mz_system,user=mz_system
  1717. ALTER VIEW mz_introspection.mz_dataflow_operators OWNER TO mz_system
  1718. ----
  1719. db error: ERROR: cannot alter item mz_introspection.mz_dataflow_operators because it is required by the database system
  1720. simple conn=mz_system,user=mz_system
  1721. ALTER TABLE mz_views OWNER TO mz_system
  1722. ----
  1723. db error: ERROR: cannot alter item mz_catalog.mz_views because it is required by the database system
  1724. simple conn=mz_system,user=mz_system
  1725. ALTER VIEW mz_relations OWNER TO mz_system
  1726. ----
  1727. db error: ERROR: cannot alter item mz_catalog.mz_relations because it is required by the database system
  1728. simple conn=mz_system,user=mz_system
  1729. ALTER TYPE int4 OWNER TO mz_system
  1730. ----
  1731. db error: ERROR: cannot alter item pg_catalog.int4 because it is required by the database system
  1732. simple conn=mz_system,user=mz_system
  1733. ALTER INDEX mz_catalog.mz_databases_ind OWNER TO mz_system
  1734. ----
  1735. db error: ERROR: cannot alter item mz_catalog.mz_databases_ind because it is required by the database system
  1736. # Superusers can alter the owner to a role that they are not a member of
  1737. statement ok
  1738. CREATE TABLE t ()
  1739. simple conn=mz_system,user=mz_system
  1740. CREATE ROLE group1;
  1741. ----
  1742. COMPLETE 0
  1743. simple conn=mz_system,user=mz_system
  1744. ALTER TABLE t OWNER TO group1;
  1745. ----
  1746. COMPLETE 0
  1747. statement ok
  1748. CREATE ROLE group2;
  1749. simple conn=mz_system,user=mz_system
  1750. ALTER TABLE t OWNER TO group2;
  1751. ----
  1752. COMPLETE 0
  1753. simple conn=mz_system,user=mz_system
  1754. DROP TABLE t;
  1755. ----
  1756. COMPLETE 0
  1757. # Test that ownership is not checked with cascading deletes
  1758. statement ok
  1759. CREATE TABLE t (a INT);
  1760. simple conn=joe,user=joe
  1761. CREATE VIEW v AS SELECT * FROM t;
  1762. ----
  1763. COMPLETE 0
  1764. statement error must be owner of VIEW materialize.public.v
  1765. DROP VIEW v
  1766. statement ok
  1767. DROP TABLE t CASCADE;
  1768. statement ok
  1769. CREATE VIEW v AS SELECT 1 AS a;
  1770. statement ok
  1771. CREATE INDEX i ON v(a);
  1772. statement ok
  1773. CREATE OR REPLACE VIEW v AS SELECT 2 AS a;
  1774. statement ok
  1775. DROP VIEW v;
  1776. statement ok
  1777. CREATE MATERIALIZED VIEW mv AS SELECT 1 AS a;
  1778. statement ok
  1779. CREATE INDEX i ON mv(a);
  1780. statement ok
  1781. CREATE OR REPLACE MATERIALIZED VIEW mv AS SELECT 2 AS a;
  1782. statement ok
  1783. DROP MATERIALIZED VIEW mv;
  1784. # Test that index owners are consistent with their underlying relation
  1785. statement ok
  1786. CREATE TABLE t (a INT)
  1787. simple conn=joe,user=joe
  1788. CREATE INDEX i1 ON t (a);
  1789. ----
  1790. db error: ERROR: must be owner of TABLE materialize.public.t
  1791. simple conn=mz_system,user=mz_system
  1792. CREATE INDEX i1 IN CLUSTER quickstart ON t (a);
  1793. ----
  1794. COMPLETE 0
  1795. statement ok
  1796. CREATE INDEX i2 ON t (a);
  1797. query TT
  1798. SELECT mz_indexes.name, mz_roles.name
  1799. FROM mz_indexes
  1800. LEFT JOIN mz_roles ON mz_indexes.owner_id = mz_roles.id
  1801. WHERE mz_indexes.name = 'i1' OR mz_indexes.name = 'i2'
  1802. ----
  1803. i1 materialize
  1804. i2 materialize
  1805. simple conn=mz_system,user=mz_system
  1806. ALTER TABLE t OWNER TO joe
  1807. ----
  1808. COMPLETE 0
  1809. query TT
  1810. SELECT mz_indexes.name, mz_roles.name
  1811. FROM mz_indexes
  1812. LEFT JOIN mz_roles ON mz_indexes.owner_id = mz_roles.id
  1813. WHERE mz_indexes.name = 'i1' OR mz_indexes.name = 'i2'
  1814. ----
  1815. i1 joe
  1816. i2 joe
  1817. simple conn=joe,user=joe
  1818. DROP INDEX i1
  1819. ----
  1820. COMPLETE 0
  1821. simple conn=joe,user=joe
  1822. DROP INDEX i2
  1823. ----
  1824. COMPLETE 0
  1825. simple conn=joe,user=joe
  1826. DROP TABLE t
  1827. ----
  1828. COMPLETE 0
  1829. # Test that linked replica, and subsource owners are consistent with their linked
  1830. # object and primary source owners.
  1831. statement ok
  1832. CREATE SOURCE s FROM LOAD GENERATOR AUCTION
  1833. statement ok
  1834. CREATE TABLE accounts FROM SOURCE s (REFERENCE accounts);
  1835. statement ok
  1836. CREATE TABLE auctions FROM SOURCE s (REFERENCE auctions);
  1837. statement ok
  1838. CREATE TABLE bids FROM SOURCE s (REFERENCE bids);
  1839. statement ok
  1840. CREATE TABLE organizations FROM SOURCE s (REFERENCE organizations);
  1841. statement ok
  1842. CREATE TABLE users FROM SOURCE s (REFERENCE users);
  1843. query TT
  1844. SELECT mz_sources.name, mz_roles.name
  1845. FROM mz_sources
  1846. LEFT JOIN mz_roles ON mz_sources.owner_id = mz_roles.id
  1847. WHERE mz_sources.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1848. ORDER BY mz_sources.name
  1849. ----
  1850. s materialize
  1851. s_progress materialize
  1852. query TT
  1853. SELECT mz_tables.name, mz_roles.name
  1854. FROM mz_tables
  1855. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  1856. WHERE mz_tables.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1857. ORDER BY mz_tables.name
  1858. ----
  1859. accounts materialize
  1860. auctions materialize
  1861. bids materialize
  1862. organizations materialize
  1863. users materialize
  1864. query TT
  1865. SELECT mz_clusters.name, mz_roles.name
  1866. FROM mz_clusters
  1867. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  1868. WHERE mz_clusters.name = 'materialize_public_s'
  1869. ----
  1870. query TT
  1871. SELECT mz_cluster_replicas.name, mz_roles.name
  1872. FROM mz_cluster_replicas
  1873. LEFT JOIN mz_clusters ON mz_cluster_replicas.cluster_id = mz_clusters.id
  1874. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  1875. WHERE mz_clusters.name = 'materialize_public_s' AND mz_cluster_replicas.name = 'linked'
  1876. ----
  1877. statement error db error: ERROR: unknown cluster 'materialize_public_s'
  1878. ALTER CLUSTER materialize_public_s OWNER TO joe
  1879. statement error altering the owner of a cluster replica is not supported
  1880. ALTER CLUSTER REPLICA materialize_public_s.linked OWNER TO joe
  1881. simple conn=mz_system,user=mz_system
  1882. ALTER SOURCE accounts OWNER TO joe
  1883. ----
  1884. db error: ERROR: accounts is a table not a source
  1885. simple conn=mz_system,user=mz_system
  1886. ALTER TABLE accounts OWNER TO joe
  1887. ----
  1888. COMPLETE 0
  1889. statement error cannot ALTER this type of source
  1890. ALTER SOURCE s_progress OWNER TO joe
  1891. query TT
  1892. SELECT mz_sources.name, mz_roles.name
  1893. FROM mz_sources
  1894. LEFT JOIN mz_roles ON mz_sources.owner_id = mz_roles.id
  1895. WHERE mz_sources.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1896. ORDER BY mz_sources.name
  1897. ----
  1898. s materialize
  1899. s_progress materialize
  1900. query TT
  1901. SELECT mz_tables.name, mz_roles.name
  1902. FROM mz_tables
  1903. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  1904. WHERE mz_tables.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1905. ORDER BY mz_tables.name
  1906. ----
  1907. accounts joe
  1908. auctions materialize
  1909. bids materialize
  1910. organizations materialize
  1911. users materialize
  1912. query TT
  1913. SELECT mz_clusters.name, mz_roles.name
  1914. FROM mz_clusters
  1915. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  1916. WHERE mz_clusters.name = 'materialize_public_s'
  1917. ----
  1918. query TT
  1919. SELECT mz_cluster_replicas.name, mz_roles.name
  1920. FROM mz_cluster_replicas
  1921. LEFT JOIN mz_clusters ON mz_cluster_replicas.cluster_id = mz_clusters.id
  1922. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  1923. WHERE mz_clusters.name = 'materialize_public_s' AND mz_cluster_replicas.name = 'linked'
  1924. ----
  1925. simple conn=mz_system,user=mz_system
  1926. ALTER SOURCE s OWNER TO joe
  1927. ----
  1928. COMPLETE 0
  1929. query TT
  1930. SELECT mz_sources.name, mz_roles.name
  1931. FROM mz_sources
  1932. LEFT JOIN mz_roles ON mz_sources.owner_id = mz_roles.id
  1933. WHERE mz_sources.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1934. ORDER BY mz_sources.name
  1935. ----
  1936. s joe
  1937. s_progress joe
  1938. query TT
  1939. SELECT mz_tables.name, mz_roles.name
  1940. FROM mz_tables
  1941. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  1942. WHERE mz_tables.name IN ('s', 's_progress', 'accounts', 'auctions', 'bids', 'organizations', 'users')
  1943. ORDER BY mz_tables.name
  1944. ----
  1945. accounts joe
  1946. auctions materialize
  1947. bids materialize
  1948. organizations materialize
  1949. users materialize
  1950. query TT
  1951. SELECT mz_clusters.name, mz_roles.name
  1952. FROM mz_clusters
  1953. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  1954. WHERE mz_clusters.name = 'materialize_public_s'
  1955. ----
  1956. query TT
  1957. SELECT mz_cluster_replicas.name, mz_roles.name
  1958. FROM mz_cluster_replicas
  1959. LEFT JOIN mz_clusters ON mz_cluster_replicas.cluster_id = mz_clusters.id
  1960. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  1961. WHERE mz_clusters.name = 'materialize_public_s' AND mz_cluster_replicas.name = 'linked'
  1962. ----
  1963. simple conn=mz_system,user=mz_system
  1964. DROP SOURCE s CASCADE
  1965. ----
  1966. COMPLETE 0
  1967. # Test DROP OWNED
  1968. simple conn=mz_system,user=mz_system
  1969. REVOKE ALL PRIVILEGES ON SYSTEM FROM materialize;
  1970. ----
  1971. COMPLETE 0
  1972. simple conn=mz_system,user=mz_system
  1973. GRANT CREATEDB, CREATECLUSTER ON SYSTEM TO materialize;
  1974. ----
  1975. COMPLETE 0
  1976. simple conn=mz_system,user=mz_system
  1977. GRANT CREATE ON DATABASE materialize TO PUBLIC;
  1978. ----
  1979. COMPLETE 0
  1980. simple conn=mz_system,user=mz_system
  1981. GRANT CREATE ON SCHEMA materialize.public TO PUBLIC;
  1982. ----
  1983. COMPLETE 0
  1984. statement ok
  1985. CREATE DATABASE db
  1986. query T
  1987. SELECT name FROM mz_databases WHERE name = 'db'
  1988. ----
  1989. db
  1990. statement ok
  1991. CREATE SCHEMA s
  1992. query T
  1993. SELECT name FROM mz_schemas WHERE name = 's'
  1994. ----
  1995. s
  1996. statement ok
  1997. CREATE TABLE t ();
  1998. query T
  1999. SELECT name FROM mz_tables WHERE name = 't'
  2000. ----
  2001. t
  2002. statement ok
  2003. CREATE CLUSTER c REPLICAS (replica1 (SIZE '1'));
  2004. query T
  2005. SELECT name FROM mz_clusters WHERE name = 'c'
  2006. ----
  2007. c
  2008. query T
  2009. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2010. ----
  2011. replica1
  2012. simple conn=mz_system,user=mz_system
  2013. CREATE VIEW v AS SELECT 1;
  2014. ----
  2015. COMPLETE 0
  2016. simple conn=mz_system,user=mz_system
  2017. GRANT SELECT ON v TO materialize;
  2018. ----
  2019. COMPLETE 0
  2020. query TT rowsort
  2021. SELECT name, unnest(privileges)::text FROM mz_views WHERE name = 'v'
  2022. ----
  2023. v mz_system=r/mz_system
  2024. v materialize=r/mz_system
  2025. query T
  2026. SELECT privileges::text FROM mz_system_privileges
  2027. ----
  2028. materialize=BN/mz_system
  2029. mz_system=RBNP/mz_system
  2030. simple conn=mz_system,user=mz_system
  2031. DROP OWNED BY materialize;
  2032. ----
  2033. COMPLETE 0
  2034. query T
  2035. SELECT name FROM mz_databases WHERE name = 'db'
  2036. ----
  2037. query T
  2038. SELECT name FROM mz_schemas WHERE name = 's'
  2039. ----
  2040. query T
  2041. SELECT name FROM mz_tables WHERE name = 't'
  2042. ----
  2043. query T
  2044. SELECT name FROM mz_clusters WHERE name = 'c'
  2045. ----
  2046. query T
  2047. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2048. ----
  2049. query TT
  2050. SELECT name, unnest(privileges)::text FROM mz_views WHERE name = 'v'
  2051. ----
  2052. v mz_system=r/mz_system
  2053. query T
  2054. SELECT privileges::text FROM mz_system_privileges
  2055. ----
  2056. mz_system=RBNP/mz_system
  2057. simple conn=mz_system,user=mz_system
  2058. DROP VIEW v;
  2059. ----
  2060. COMPLETE 0
  2061. ## Test invalid revokes
  2062. simple conn=mz_system,user=mz_system
  2063. GRANT CREATEDB, CREATECLUSTER ON SYSTEM TO materialize;
  2064. ----
  2065. COMPLETE 0
  2066. statement ok
  2067. CREATE DATABASE db
  2068. query T
  2069. SELECT name FROM mz_databases WHERE name = 'db'
  2070. ----
  2071. db
  2072. statement ok
  2073. CREATE SCHEMA s
  2074. query T
  2075. SELECT name FROM mz_schemas WHERE name = 's'
  2076. ----
  2077. s
  2078. statement ok
  2079. CREATE TABLE t ();
  2080. query T
  2081. SELECT name FROM mz_tables WHERE name = 't'
  2082. ----
  2083. t
  2084. statement ok
  2085. CREATE CLUSTER c REPLICAS (replica1 (SIZE '1'));
  2086. query T
  2087. SELECT name FROM mz_clusters WHERE name = 'c'
  2088. ----
  2089. c
  2090. query T
  2091. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2092. ----
  2093. replica1
  2094. simple conn=mz_system,user=mz_system
  2095. CREATE VIEW v AS SELECT 1;
  2096. ----
  2097. COMPLETE 0
  2098. simple conn=mz_system,user=mz_system
  2099. GRANT SELECT ON v TO materialize;
  2100. ----
  2101. COMPLETE 0
  2102. query TT rowsort
  2103. SELECT name, unnest(privileges)::text FROM mz_views WHERE name = 'v'
  2104. ----
  2105. v mz_system=r/mz_system
  2106. v materialize=r/mz_system
  2107. simple conn=materialize,user=materialize
  2108. DROP OWNED BY materialize;
  2109. ----
  2110. COMPLETE 0
  2111. query T
  2112. SELECT name FROM mz_databases WHERE name = 'db'
  2113. ----
  2114. query T
  2115. SELECT name FROM mz_schemas WHERE name = 's'
  2116. ----
  2117. query T
  2118. SELECT name FROM mz_tables WHERE name = 't'
  2119. ----
  2120. query T
  2121. SELECT name FROM mz_clusters WHERE name = 'c'
  2122. ----
  2123. query T
  2124. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2125. ----
  2126. query TT rowsort
  2127. SELECT name, unnest(privileges)::text FROM mz_views WHERE name = 'v'
  2128. ----
  2129. v mz_system=r/mz_system
  2130. v materialize=r/mz_system
  2131. simple conn=mz_system,user=mz_system
  2132. DROP VIEW v;
  2133. ----
  2134. COMPLETE 0
  2135. ## Test CASCADE
  2136. statement ok
  2137. CREATE DATABASE db
  2138. query T
  2139. SELECT name FROM mz_databases WHERE name = 'db'
  2140. ----
  2141. db
  2142. statement ok
  2143. CREATE SCHEMA s
  2144. query T
  2145. SELECT name FROM mz_schemas WHERE name = 's'
  2146. ----
  2147. s
  2148. statement ok
  2149. CREATE TABLE t ();
  2150. query T
  2151. SELECT name FROM mz_tables WHERE name = 't'
  2152. ----
  2153. t
  2154. statement ok
  2155. CREATE CLUSTER c REPLICAS (replica1 (SIZE '1'));
  2156. query T
  2157. SELECT name FROM mz_clusters WHERE name = 'c'
  2158. ----
  2159. c
  2160. query T
  2161. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2162. ----
  2163. replica1
  2164. simple conn=mz_system,user=mz_system
  2165. CREATE SCHEMA db.s;
  2166. ----
  2167. COMPLETE 0
  2168. simple conn=mz_system,user=mz_system
  2169. DROP OWNED BY materialize;
  2170. ----
  2171. db error: ERROR: database "db" cannot be dropped without CASCADE while it contains non-owned schemas
  2172. simple conn=mz_system,user=mz_system
  2173. CREATE VIEW s.v AS SELECT 1;
  2174. ----
  2175. COMPLETE 0
  2176. simple conn=mz_system,user=mz_system
  2177. DROP OWNED BY materialize;
  2178. ----
  2179. db error: ERROR: schema "materialize.s" cannot be dropped without CASCADE while it contains non-owned objects
  2180. simple conn=mz_system,user=mz_system
  2181. CREATE VIEW v1 AS SELECT * FROM t;
  2182. ----
  2183. COMPLETE 0
  2184. simple conn=mz_system,user=mz_system
  2185. DROP OWNED BY materialize;
  2186. ----
  2187. db error: ERROR: cannot drop table "materialize.public.t": still depended upon by view "materialize.public.v1"
  2188. HINT: Use DROP ... CASCADE to drop the dependent objects too.
  2189. simple conn=mz_system,user=mz_system
  2190. CREATE VIEW v2 AS SELECT * FROM t;
  2191. ----
  2192. COMPLETE 0
  2193. simple conn=mz_system,user=mz_system
  2194. DROP OWNED BY materialize;
  2195. ----
  2196. db error: ERROR: cannot drop table "materialize.public.t": still depended upon by view "materialize.public.v1", view "materialize.public.v2"
  2197. HINT: Use DROP ... CASCADE to drop the dependent objects too.
  2198. simple conn=mz_system,user=mz_system
  2199. CREATE MATERIALIZED VIEW mv IN CLUSTER c AS SELECT 1;
  2200. ----
  2201. COMPLETE 0
  2202. simple conn=mz_system,user=mz_system
  2203. DROP OWNED BY materialize;
  2204. ----
  2205. db error: ERROR: cannot drop cluster "c": still depended upon by materialized view "materialize.public.mv"
  2206. HINT: Use DROP ... CASCADE to drop the dependent objects too.
  2207. simple conn=mz_system,user=mz_system
  2208. DROP OWNED BY materialize CASCADE;
  2209. ----
  2210. COMPLETE 0
  2211. query T
  2212. SELECT name FROM mz_databases WHERE name = 'db'
  2213. ----
  2214. query T
  2215. SELECT name FROM mz_schemas WHERE name = 's'
  2216. ----
  2217. query T
  2218. SELECT name FROM mz_tables WHERE name = 't'
  2219. ----
  2220. query T
  2221. SELECT name FROM mz_clusters WHERE name = 'c'
  2222. ----
  2223. query T
  2224. SELECT name FROM mz_cluster_replicas WHERE name = 'replica1'
  2225. ----
  2226. simple conn=mz_system,user=mz_system
  2227. REVOKE CREATEDB, CREATECLUSTER ON SYSTEM FROM materialize;
  2228. ----
  2229. COMPLETE 0
  2230. ## Test dropping temporary objects
  2231. statement ok
  2232. CREATE TEMP VIEW v AS SELECT 1
  2233. statement ok
  2234. DROP OWNED BY materialize
  2235. ## Test dropping system objects
  2236. simple conn=mz_system,user=mz_system
  2237. DROP OWNED BY mz_system CASCADE;
  2238. ----
  2239. db error: ERROR: cannot drop objects owned by role "mz_system", "mz_analytics" because they are required by the database system
  2240. ## Test dropping PUBLIC objects
  2241. simple conn=mz_system,user=mz_system
  2242. DROP OWNED BY PUBLIC;
  2243. ----
  2244. db error: ERROR: role name "public" is reserved
  2245. DETAIL: The role "public" and the prefixes "mz_" and "pg_" are reserved for system roles.
  2246. simple conn=mz_system,user=mz_system
  2247. GRANT ALL PRIVILEGES ON SYSTEM TO materialize;
  2248. ----
  2249. COMPLETE 0
  2250. ## Testing dropping a cluster with bound objects
  2251. statement ok
  2252. CREATE CLUSTER c REPLICAS (r1 (SIZE '1'));
  2253. statement ok
  2254. CREATE MATERIALIZED VIEW mv IN CLUSTER c AS SELECT 1;
  2255. query T
  2256. SELECT name FROM mz_clusters WHERE name = 'c'
  2257. ----
  2258. c
  2259. query T
  2260. SELECT name FROM mz_materialized_views WHERE name = 'mv'
  2261. ----
  2262. mv
  2263. statement ok
  2264. DROP OWNED BY materialize
  2265. query T
  2266. SELECT name FROM mz_clusters WHERE name = 'c'
  2267. ----
  2268. query T
  2269. SELECT name FROM mz_materialized_views WHERE name = 'mv'
  2270. ----
  2271. statement ok
  2272. CREATE CLUSTER c REPLICAS (r1 (SIZE '1'));
  2273. statement ok
  2274. GRANT CREATE ON CLUSTER c TO joe
  2275. simple conn=mz_system,user=mz_system
  2276. GRANT CREATE ON SCHEMA public TO joe
  2277. ----
  2278. COMPLETE 0
  2279. simple conn=joe,user=joe
  2280. CREATE MATERIALIZED VIEW mv IN CLUSTER c AS SELECT 1;
  2281. ----
  2282. COMPLETE 0
  2283. query T
  2284. SELECT name FROM mz_clusters WHERE name = 'c'
  2285. ----
  2286. c
  2287. query T
  2288. SELECT name FROM mz_materialized_views WHERE name = 'mv'
  2289. ----
  2290. mv
  2291. statement error cannot drop cluster "c": still depended upon by materialized view "materialize.public.mv"
  2292. DROP OWNED BY materialize
  2293. query T
  2294. SELECT name FROM mz_clusters WHERE name = 'c'
  2295. ----
  2296. c
  2297. query T
  2298. SELECT name FROM mz_materialized_views WHERE name = 'mv'
  2299. ----
  2300. mv
  2301. statement ok
  2302. DROP OWNED BY materialize CASCADE
  2303. query T
  2304. SELECT name FROM mz_clusters WHERE name = 'c'
  2305. ----
  2306. query T
  2307. SELECT name FROM mz_materialized_views WHERE name = 'mv'
  2308. ----
  2309. simple conn=mz_system,user=mz_system
  2310. REVOKE CREATE ON SCHEMA public FROM joe
  2311. ----
  2312. COMPLETE 0
  2313. statement ok
  2314. DROP OWNED BY materialize CASCADE
  2315. # Test REASSIGN OWNED
  2316. statement ok
  2317. CREATE DATABASE db
  2318. query T
  2319. SELECT mz_roles.name
  2320. FROM mz_databases
  2321. LEFT JOIN mz_roles ON mz_databases.owner_id = mz_roles.id
  2322. WHERE mz_databases.name = 'db'
  2323. ----
  2324. materialize
  2325. statement ok
  2326. CREATE SCHEMA s
  2327. query T
  2328. SELECT mz_roles.name
  2329. FROM mz_schemas
  2330. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  2331. WHERE mz_schemas.name = 's'
  2332. ----
  2333. materialize
  2334. statement ok
  2335. CREATE TABLE t ();
  2336. query T
  2337. SELECT mz_roles.name
  2338. FROM mz_tables
  2339. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  2340. WHERE mz_tables.name = 't'
  2341. ----
  2342. materialize
  2343. simple conn=joe,user=joe
  2344. CREATE TABLE t1 ();
  2345. ----
  2346. COMPLETE 0
  2347. query T
  2348. SELECT mz_roles.name
  2349. FROM mz_tables
  2350. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  2351. WHERE mz_tables.name = 't1'
  2352. ----
  2353. joe
  2354. statement ok
  2355. CREATE CLUSTER c REPLICAS (replica1 (SIZE '1'));
  2356. query T
  2357. SELECT mz_roles.name
  2358. FROM mz_clusters
  2359. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  2360. WHERE mz_clusters.name = 'c'
  2361. ----
  2362. materialize
  2363. query T
  2364. SELECT mz_roles.name
  2365. FROM mz_cluster_replicas
  2366. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  2367. WHERE mz_cluster_replicas.name = 'replica1'
  2368. ----
  2369. materialize
  2370. simple conn=mz_system,user=mz_system
  2371. REASSIGN OWNED BY materialize, joe TO group1;
  2372. ----
  2373. COMPLETE 0
  2374. query T
  2375. SELECT mz_roles.name
  2376. FROM mz_databases
  2377. LEFT JOIN mz_roles ON mz_databases.owner_id = mz_roles.id
  2378. WHERE mz_databases.name = 'db'
  2379. ----
  2380. group1
  2381. query T
  2382. SELECT mz_roles.name
  2383. FROM mz_schemas
  2384. LEFT JOIN mz_roles ON mz_schemas.owner_id = mz_roles.id
  2385. WHERE mz_schemas.name = 's'
  2386. ----
  2387. group1
  2388. query T
  2389. SELECT mz_roles.name
  2390. FROM mz_tables
  2391. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  2392. WHERE mz_tables.name = 't'
  2393. ----
  2394. group1
  2395. query T
  2396. SELECT mz_roles.name
  2397. FROM mz_tables
  2398. LEFT JOIN mz_roles ON mz_tables.owner_id = mz_roles.id
  2399. WHERE mz_tables.name = 't1'
  2400. ----
  2401. group1
  2402. query T
  2403. SELECT mz_roles.name
  2404. FROM mz_clusters
  2405. LEFT JOIN mz_roles ON mz_clusters.owner_id = mz_roles.id
  2406. WHERE mz_clusters.name = 'c'
  2407. ----
  2408. group1
  2409. query T
  2410. SELECT mz_roles.name
  2411. FROM mz_cluster_replicas
  2412. LEFT JOIN mz_roles ON mz_cluster_replicas.owner_id = mz_roles.id
  2413. WHERE mz_cluster_replicas.name = 'replica1'
  2414. ----
  2415. group1
  2416. ## Test reassigning temporary objects. It's weird that this is allowed, but it is.
  2417. simple conn=mz_system,user=mz_system
  2418. GRANT joe TO materialize
  2419. ----
  2420. COMPLETE 0
  2421. statement ok
  2422. CREATE TEMPORARY VIEW v AS SELECT 1
  2423. statement ok
  2424. REASSIGN OWNED BY materialize TO joe
  2425. ## Test reassigning system objects
  2426. simple conn=mz_system,user=mz_system
  2427. REASSIGN OWNED BY mz_system TO materialize;
  2428. ----
  2429. db error: ERROR: cannot reassign objects owned by role "mz_system" because they are required by the database system
  2430. ## Test reassigning PUBLIC objects
  2431. simple conn=mz_system,user=mz_system
  2432. REASSIGN OWNED BY PUBLIC TO materialize;
  2433. ----
  2434. db error: ERROR: role name "public" is reserved
  2435. DETAIL: The role "public" and the prefixes "mz_" and "pg_" are reserved for system roles.
  2436. simple conn=mz_system,user=mz_system
  2437. REASSIGN OWNED BY materialize TO PUBLIC;
  2438. ----
  2439. db error: ERROR: role name "public" is reserved
  2440. DETAIL: The role "public" and the prefixes "mz_" and "pg_" are reserved for system roles.
  2441. # Disable rbac checks.
  2442. simple conn=mz_system,user=mz_system
  2443. ALTER SYSTEM SET enable_rbac_checks TO false;
  2444. ----
  2445. COMPLETE 0