Emmanuel BENOîT
be3106c463
* Added in-base logging through a foreign data wrapper, which is only possible using PostgreSQL 9.1 * Renamed database-related configuration files to indicate that they are samples, and added the "real" names to the Git ignore list. Server distribution modified accordingly. * Removed PL/PgSQL registration (it was only necessary on 8.4) * Added pgTAP SQL definitions and a script which will (hopefully) be executed by the build system after the main Java build in order to execute database unit tests. The script supports both admin- and user- level testing. I also added a few tests to make sure the testing framework actually runs them. * Added documentation about the database definitions structure
69 lines
No EOL
1.9 KiB
PL/PgSQL
69 lines
No EOL
1.9 KiB
PL/PgSQL
-- LegacyWorlds Beta 6
|
|
-- PostgreSQL database scripts
|
|
--
|
|
-- Main database script
|
|
--
|
|
-- Initialises the various roles and the database itself,
|
|
-- then processes scripts from the "parts" directory.
|
|
--
|
|
-- Copyright(C) 2004-2010, DeepClone Development
|
|
-- --------------------------------------------------------
|
|
|
|
-- Read configuration from file
|
|
\set pgadmin `grep ^admin= db-config.txt | sed -e s/.*=//`
|
|
\set dbname `grep ^db= db-config.txt | sed -e s/.*=//`
|
|
\set dbname_string '''':dbname''''
|
|
\set dbuser `grep ^user= db-config.txt | sed -e s/.*=//`
|
|
\set dbuser_string '''':dbuser''''
|
|
\set dbupass ''''`grep ^password= db-config.txt | sed -e s/.*=// -e "s/'/''/g"`''''
|
|
|
|
|
|
-- Connect to the main system database
|
|
\c postgres :pgadmin
|
|
|
|
-- Drop the database and users if they exist
|
|
DROP DATABASE IF EXISTS :dbname;
|
|
DROP ROLE IF EXISTS :dbuser;
|
|
|
|
-- Create the LW users
|
|
CREATE ROLE :dbuser WITH LOGIN ENCRYPTED PASSWORD :dbupass;
|
|
|
|
-- Create the database
|
|
CREATE DATABASE :dbname ENCODING='UTF8' TEMPLATE=template0;
|
|
GRANT CONNECT ON DATABASE :dbname TO :dbuser;
|
|
|
|
|
|
-- Connect to the LW database with the PostgreSQL admin user
|
|
\c :dbname :pgadmin
|
|
|
|
-- Register the dblink extension
|
|
CREATE EXTENSION dblink;
|
|
|
|
-- Create foreign data wrapper and server used to write logs from within
|
|
-- transanctions
|
|
CREATE FOREIGN DATA WRAPPER pgsql
|
|
VALIDATOR postgresql_fdw_validator;
|
|
CREATE SERVER srv_logging
|
|
FOREIGN DATA WRAPPER pgsql
|
|
OPTIONS ( hostaddr '127.0.0.1' , dbname :dbname_string );
|
|
CREATE USER MAPPING FOR :dbuser
|
|
SERVER srv_logging
|
|
OPTIONS ( user :dbuser_string , password :dbupass );
|
|
GRANT USAGE ON FOREIGN SERVER srv_logging TO :dbuser;
|
|
|
|
|
|
BEGIN;
|
|
|
|
-- Create database schemas
|
|
\i parts/000-schemas.sql
|
|
|
|
-- Process structure definition scripts
|
|
\i parts/010-data.sql
|
|
|
|
-- Process functions and views definition scripts
|
|
\i parts/020-functions.sql
|
|
|
|
-- Process game update functions
|
|
\i parts/030-updates.sql
|
|
|
|
COMMIT; |