ij(CONNECTION1)> --
--   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.
--
run resource '/org/apache/derbyTesting/functionTests/util/testRoutines.sql';
ij(CONNECTION1)> --
--   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.
--
-- Changed to create individual procedures so that this will work with JSR169. 
-- Direct call to 'installRoutines' uses nested connection
CREATE PROCEDURE TESTROUTINE.SET_SYSTEM_PROPERTY(IN PROPERTY_KEY VARCHAR(32000), IN PROPERTY_VALUE VARCHAR(32000)) NO SQL EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestRoutines.setSystemProperty' language java parameter style java;
0 rows inserted/updated/deleted
ij(CONNECTION1)> CREATE PROCEDURE TESTROUTINE.SLEEP(IN SLEEP_TIME_MS BIGINT) NO SQL EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestRoutines.sleep' language java parameter style java;
0 rows inserted/updated/deleted
ij(CONNECTION1)> CREATE FUNCTION TESTROUTINE.HAS_SECURITY_MANAGER() RETURNS INT NO SQL EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestRoutines.hasSecurityManager' language java parameter style java;
0 rows inserted/updated/deleted
ij(CONNECTION1)> CREATE FUNCTION TESTROUTINE.READ_FILE(FILE_NAME VARCHAR(60), ENCODING VARCHAR(60)) RETURNS VARCHAR(32000) NO SQL EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestRoutines.readFile' language java parameter style java;
0 rows inserted/updated/deleted
ij(CONNECTION1)> CREATE FUNCTION GET_TABLE_PROPERTY (SCHEMA_NAME VARCHAR(128), TABLE_NAME VARCHAR(128), PROP_KEY VARCHAR(1000)) RETURNS VARCHAR(1000) EXTERNAL NAME 'org.apache.derbyTesting.functionTests.util.TestPropertyInfo.getTableProperty' LANGUAGE JAVA PARAMETER STYLE JAVA;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- Get a property that hasn't been set yet - should return null
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
NULL                                                                                                                            
ij(CONNECTION1)> -- Set a couple of properties
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key1', 'one, two, three');
0 rows inserted/updated/deleted
ij(CONNECTION1)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key2', 'eins, zwei, drei');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- and fetch them
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
one, two, three                                                                                                                 
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key2');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
eins, zwei, drei                                                                                                                
ij(CONNECTION1)> -- and delete one of theme
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key2', null);
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- and fetch them
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
one, two, three                                                                                                                 
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key2');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
NULL                                                                                                                            
ij(CONNECTION1)> -- Now check some explicit properties

-- ************ derby.storage.pageSize

-- See what the default is first
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
4096                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', '16384');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- this create table should pick up the per-database
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
16384                                                                                                                           
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- check that setting to an invalid value reverts to the default
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', 'a');
0 rows inserted/updated/deleted
ij(CONNECTION1)> create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
4096                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- setting to NULL is also invalid
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', 'NULL');
0 rows inserted/updated/deleted
ij(CONNECTION1)> create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
4096                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- ************ derby.storage.minimumRecordSize

-- See what the default is first
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.minimumRecordSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
12                                                                                                                              
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.minimumRecordSize', '42');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- this create table should pick up the per-database
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.minimumRecordSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
42                                                                                                                              
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- ************ derby.storage.pageReservedSpace

-- See what the default is first
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageReservedSpace');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
20                                                                                                                              
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageReservedSpace', '17');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- this create table should pick up the per-database
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageReservedSpace');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
17                                                                                                                              
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- ************ derby.database.noAutoBoot
-- should be set in service.properties, not the conglomerate, but that's transparent here ... 

values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
NULL                                                                                                                            
ij(CONNECTION1)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', 'true');
0 rows inserted/updated/deleted
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
true                                                                                                                            
ij(CONNECTION1)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', 'false');
0 rows inserted/updated/deleted
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
false                                                                                                                           
ij(CONNECTION1)> call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', null);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
NULL                                                                                                                            
ij(CONNECTION1)> -- Now check some explicit properties


-- Now check with derby.storage.pageSize if derby.database.propertiesOnly
-- ensures that system wide properties are ignored

-- See is currently set, should be 16384
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
4096                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- set system value
CALL TESTROUTINE.SET_SYSTEM_PROPERTY('derby.storage.pageSize', '8192');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- this create table should pick up the system value - 8192
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
8192                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- 
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.propertiesOnly', 'true');
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- this create table should pick up the database value - 16384
create table T (i int);
0 rows inserted/updated/deleted
ij(CONNECTION1)> values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
4096                                                                                                                            
ij(CONNECTION1)> drop table T;
0 rows inserted/updated/deleted
ij(CONNECTION1)> -- verify that creation time only properties may not be set.
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.engineType', '9');
ERROR XCY02: The requested property change is not supported 'derby.engineType'='9'.
ij(CONNECTION1)> values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.engineType');
1                                                                                                                               
--------------------------------------------------------------------------------------------------------------------------------
NULL                                                                                                                            
ij(CONNECTION1)> drop function GET_TABLE_PROPERTY;
0 rows inserted/updated/deleted
ij(CONNECTION1)> 