blob: 7b3663a9a5c9eb7f3fa655a45033787dce41f4fc [file] [log] [blame]
--
-- 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';
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;
-- Get a property that hasn't been set yet - should return null
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
-- Set a couple of properties
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key1', 'one, two, three');
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key2', 'eins, zwei, drei');
-- and fetch them
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key2');
-- and delete one of theme
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('key2', null);
-- and fetch them
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key1');
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('key2');
-- Now check some explicit properties
-- ************ derby.storage.pageSize
-- See what the default is first
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', '16384');
-- this create table should pick up the per-database
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- check that setting to an invalid value reverts to the default
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', 'a');
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- setting to NULL is also invalid
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize', 'NULL');
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- ************ derby.storage.minimumRecordSize
-- See what the default is first
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.minimumRecordSize');
drop table T;
-- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.minimumRecordSize', '42');
-- this create table should pick up the per-database
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.minimumRecordSize');
drop table T;
-- ************ derby.storage.pageReservedSpace
-- See what the default is first
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageReservedSpace');
drop table T;
-- set the per-database value
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageReservedSpace', '17');
-- this create table should pick up the per-database
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageReservedSpace');
drop table T;
-- ************ 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');
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', 'true');
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', 'false');
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.noAutoBoot', null);
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.database.noAutoBoot');
-- 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);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- set system value
CALL TESTROUTINE.SET_SYSTEM_PROPERTY('derby.storage.pageSize', '8192');
-- this create table should pick up the system value - 8192
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
--
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.propertiesOnly', 'true');
-- this create table should pick up the database value - 16384
create table T (i int);
values GET_TABLE_PROPERTY('APP', 'T', 'derby.storage.pageSize');
drop table T;
-- verify that creation time only properties may not be set.
call SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.engineType', '9');
values SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY('derby.engineType');
drop function GET_TABLE_PROPERTY;