-- -- Licensed to the Apache Software Foundation (ASF) under one or more -- contributor license agreements. See the NOTICE file distributed with -- this work for additional information regarding copyright ownership. -- The ASF licenses this file to You under the Apache License, Version 2.0 -- (the "License"); you may not use this file except in compliance with -- the License. You may obtain a copy of the License at -- -- http://www.apache.org/licenses/LICENSE-2.0 -- -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and -- limitations under the License. -- -------------------------------------------------------------------------------- -- Test 0.1: ddl interaction -------------------------------------------------------------------------------- -- create 1st table. Drop the table, which will get regular X locks on the -- rows in the system catalogs (which are different than insert locks). set connection create1; create table create1 (a int); drop table create1; -- create 2nd table -- The following should not block now that ddl work is done under -- repeatable read no matter what the user isolation level. set connection create2; create table create2 (a int); set connection create1; commit; set connection create2; commit; -------------------------------------------------------------------------------- -- Test 0.2: normal user data, previous key must block on serializable read, -- if create1 session isolation is serializable, otherwise it will -- not block. -------------------------------------------------------------------------------- -- get lock on range of keys 0->10, iso level determines if phantoms allowed. set connection create1; select * from data where keycol <= 10; -- the following must block if create1 isolation level disallows phantoms set connection create2; insert into data values (5, '50'); commit; -- now do the select again from session one to see if a phantom showed up. set connection create1; select * from data where keycol <= 10; set connection create1; commit; delete from data where keycol = 5; commit; set connection create2; commit; -------------------------------------------------------------------------------- -- Test 0.3: normal user data, previous key must block on serializable delete, -- if create1 session isolation is serializable, otherwise it will -- not block. -------------------------------------------------------------------------------- -- get lock on range of keys 0->10, iso level determines if phantoms allowed. set connection create1; delete from data where keycol <= 10; -- the following must block if create1 isolation level disallows phantoms set connection create2; insert into data values (6, '60'); commit; -- now do the select again from session one to see if a phantom showed up. set connection create1; select * from data where keycol <= 10; set connection create1; commit; delete from data where keycol = 6; commit; set connection create2; commit;