Refactor directory structure and tests

- Directory structure now matches common practices
- Regression tests now run with pg_regress via the PGXS infrastructure.
- Unit tests do not integrate well with pg_regress and have to be run
  separately.
- Docker functionality is separate from main Makefile. Run with
  `make -f docker.mk` to build and `make -f docker.mk run` to run
  the database in a container.
This commit is contained in:
Erik Nordström 2017-01-31 14:56:41 +01:00
parent 4fd1d9d299
commit 7b94c573ba
211 changed files with 899 additions and 316 deletions

9
.gitignore vendored
View File

@ -1,2 +1,7 @@
extension/sql/tests/unit/testoutputs.tmp /sql/tests/unit/testoutputs.tmp
data/ /sql/iobeamdb--*.sql
/data/
/src/*.o
/src/*.so
/.vscode/
/iobeamdb.so

View File

@ -8,7 +8,15 @@ RUN apt-get update && apt-get install -y \
build-essential \ build-essential \
daemontools \ daemontools \
postgresql-server-dev-$PG_MAJOR \ postgresql-server-dev-$PG_MAJOR \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY extension /extension RUN mkdir -p /build/{src/deps,test/results}
RUN cd /extension && make install && rm -rf /extension COPY sql /build/sql
COPY src/*.c src/*.h build/src/
COPY src/deps/*.h build/src/deps/
COPY test/expected /build/test/
COPY test/sql /build/test/
COPY test/runner.sh /build/test/runner.sh
COPY iobeamdb.control /build/
COPY Makefile build/Makefile
RUN make -C /build install && rm -rf /build

View File

@ -1,44 +1,62 @@
EXTENSION = iobeamdb
SQL_FILES = $(shell cat sql/load_order.txt)
IMAGE_NAME = iobeamdb EXT_VERSION = 1.0
MAKE = make EXT_SQL_FILE = sql/$(EXTENSION)--$(EXT_VERSION).sql
all: test-docker DATA = $(EXT_SQL_FILE)
MODULE_big = $(EXTENSION)
# Targets for installing the extension without using Docker SRCS = src/iobeamdb.c src/murmur3.c src/pgmurmur3.c
clean: OBJS = $(SRCS:.c=.o)
$(MAKE) -C ./extension clean
@rm -f ./extension/iobeamdb--*.sql
install: MKFILE_PATH := $(abspath $(MAKEFILE_LIST))
$(MAKE) -C ./extension install CURRENT_DIR = $(dir $(MKFILE_PATH))
# Targets for building/running Docker images TEST_PGPORT ?= 5432
build-docker: TEST_PGHOST ?= localhost
@docker build . -t $(IMAGE_NAME) TEST_PGUSER ?= postgres
TESTS = $(sort $(wildcard test/sql/*.sql))
USE_MODULE_DB=true
REGRESS = $(patsubst test/sql/%.sql,%,$(TESTS))
REGRESS_OPTS = \
--inputdir=test \
--outputdir=test \
--launcher=test/runner.sh \
--host=$(TEST_PGHOST) \
--port=$(TEST_PGPORT) \
--user=$(TEST_PGUSER) \
--load-language=plpgsql \
--load-extension=dblink \
--load-extension=postgres_fdw \
--load-extension=hstore \
--load-extension=iobeamdb
docker-run: PG_CONFIG = pg_config
@IMAGE_NAME=$(IMAGE_NAME) ./scripts/docker-run.sh PGXS := $(shell $(PG_CONFIG) --pgxs)
start-test-docker: EXTRA_CLEAN = $(EXT_SQL_FILE)
@ . scripts/test-docker-config.sh && IMAGE_NAME=$(IMAGE_NAME) CONTAINER_NAME=iobeamdb_testing ./scripts/start-test-docker.sh
stop-test-docker: include $(PGXS)
@docker rm -f iobeamdb_testing override CFLAGS += -DINCLUDE_PACKAGE_SUPPORT=0
override pg_regress_clean_files = test/results/ test/regression.diffs test/regression.out tmp_check/ log/
# Targets for tests all: $(EXT_SQL_FILE)
test-regression:
@ . scripts/test-docker-config.sh && cd extension/sql/tests/regression && ./run.sh
test-unit: $(EXT_SQL_FILE): $(SQL_FILES)
@ . scripts/test-docker-config.sh && cd extension/sql/tests/unit && ./run.sh @cat $^ > $@
test-all: test-regression test-unit check-sql-files:
@echo Running all tests @echo $(SQL_FILES)
test-docker: build-docker start-test-docker test-all stop-test-docker install: $(EXT_SQL_FILE)
# Setting up a single node database package: clean $(EXT_SQL_FILE)
setup-single-node-db: @mkdir -p package/lib
@PGDATABASE=postgres ./scripts/run_sql.sh setup_single_node_db.psql @mkdir -p package/extension
$(install_sh) -m 755 $(EXTENSION).so 'package/lib/$(EXTENSION).so'
$(install_sh) -m 644 $(EXTENSION).control 'package/extension/'
$(install_sh) -m 644 $(EXT_SQL_FILE) 'package/extension/'
.PHONY: check-sql-files all
.PHONY: build-docker start-docker stop-docker test-regression test-unit test-all test all setup-single-node-db

View File

@ -1,40 +1,44 @@
### Prerequisites ### Prerequisites
You'll need to install and run [Docker](https://docs.docker.com/engine/installation/), - The [Postgres client](https://wiki.postgresql.org/wiki/Detailed_installation_guides) (psql)
which is the current way to run the database. - A standard PostgreSQL installation with development environment (header files), or
- Docker (see separate build and run instructions)
You need to install the [Postgres client](https://wiki.postgresql.org/wiki/Detailed_installation_guides)(psql). ### Build and install
### Building and running in Docker
The `Makefile` included in this repo has convenient commands for building,
starting, and stopping a Docker image of **iobeamdb**:
```bash ```bash
# To build the image # To build the extension
make build-docker make
# To start the image using docker run.
# This creates a docker container named `iobeamdb` # To install
# with a data volume mount inside the `data` subdirectory. make install
make docker-run
# To stop the container # To run tests (needs running Postgres server with preloaded extension)
docker stop iobeamdb make checkinstall
``` ```
You can then run any other docker command on the container named `iobeamdb`. ### Build and run in Docker
With the Docker image running you can run the tests (see Testing) or create ```
your own single-node cluster. # To build a Docker image
make -f docker.mk build
# To run a container
make -f docker.mk run
# To run tests
make -f docker test
```
### Setting up a local single node database ### Setting up a local single node database
After starting the Docker image, you can start a local single node database: After starting the Docker image, you can start a local single node database:
```bash ```bash
make setup-single-node-db psql -U postgres -h localhost < scripts/sql/setup_single_node_db.psql
``` ```
This will set up a database named `iobeam` which can be accessed with: This will set up a database named `iobeamdb` which can be accessed with:
```bash ```bash
psql -U postgres -h localhost -d iobeam psql -U postgres -h localhost -d iobeamdb
``` ```
#### Creating a table #### Creating a table
@ -123,16 +127,3 @@ this creates a more compact, and thus efficient, index.
### Examples ### Examples
TODO PROVIDE EXAMPLES TODO PROVIDE EXAMPLES
### Testing
There are four commands to run tests:
```bash
# Build and run a docker image and run all tests in that image
make test-docker
# Run all tests (no image built)
make test-all
# Run regression tests (no image built)
make test-regression
# Run unit tests (no image built)
make test-unit
```

28
docker.mk Normal file
View File

@ -0,0 +1,28 @@
IMAGE_NAME = iobeamdb
CONTAINER_NAME = iobeamdb
TEST_CONTAINER_NAME = $(CONTAINER_NAME)_testing
MAKE = make
PGPORT = 5432
TEST_PGPORT = 6543
TEST_TABLESPACE_PATH = /tmp/tspace1
build-image: Dockerfile
@docker build . -t $(IMAGE_NAME)
start-container:
-docker rm -f $(CONTAINER_NAME)
@IMAGE_NAME=$(IMAGE_NAME) DATA_DIR="" CONTAINER_NAME=$(CONTAINER_NAME) PGPORT=$(PGPORT) ./scripts/docker-run.sh
start-test-container:
@IMAGE_NAME=$(IMAGE_NAME) CONTAINER_NAME=$(TEST_CONTAINER_NAME) \
PGPORT=$(TEST_PGPORT) TEST_TABLESPACE_PATH=$(TEST_TABLESPACE_PATH) ./scripts/start-test-docker.sh
test: build-image start-test-container installcheck
@docker rm -f $(TEST_CONTAINER_NAME)
run: build-image start-container
include Makefile
.PHONY: test start-container start-test-container build-image

View File

@ -1,38 +0,0 @@
EXTENSION = iobeamdb
SQL_FILES = $(shell cat sql/load_order.txt)
EXT_VERSION = 1.0
EXT_SQL_FILE = iobeamdb--$(EXT_VERSION).sql
DATA = $(EXT_SQL_FILE)
MODULE_big = iobeamdb
SRCS = src/iobeamdb.c src/murmur3.c src/pgmurmur3.c
OBJS = $(SRCS:.c=.o)
EXTENSION = $(MODULE_big)
MKFILE_PATH := $(abspath $(MAKEFILE_LIST))
CURRENT_DIR = $(dir $(MKFILE_PATH))
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
override CFLAGS += -DINCLUDE_PACKAGE_SUPPORT=0
check-sql-files:
@echo $(EXT_SQL_FILES)
generate-sql-install-file:
@cat $(SQL_FILES) > $(EXT_SQL_FILE)
install: generate-sql-install-file
package: clean all generate-sql-install-file
@mkdir -p package/lib
@mkdir -p package/extension
$(install_sh) -m 755 iobeamdb.so 'package/lib/iobeamdb.so'
$(install_sh) -m 644 iobeamdb.control 'package/extension/'
$(install_sh) -m 644 iobeamdb--1.0.sql 'package/extension/'
.PHONY: check-sql-files generate-sql-install-file

View File

@ -1,2 +0,0 @@
actual/
dump/

View File

@ -1,36 +0,0 @@
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
\c test2
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 1 | 2 | t
1257894000000000000 | dev1 | 1.5 | 2 | |
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
1257987600000000000 | dev1 | 1.5 | 1 | |
1257987600000000000 | dev1 | 1.5 | 2 | |
1257894000000000000 | dev20 | 1.5 | 1 | |
1257894000000000000 | dev20 | 1.5 | 2 | |
(10 rows)
DELETE FROM "testNs" WHERE series_0 = 1.5;
DELETE FROM "testNs" WHERE series_0 = 100;
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
(4 rows)

View File

@ -1,42 +0,0 @@
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
\c test2
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 1 | 2 | t
1257894000000000000 | dev1 | 1.5 | 2 | |
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
1257987600000000000 | dev1 | 1.5 | 1 | |
1257987600000000000 | dev1 | 1.5 | 2 | |
1257894000000000000 | dev20 | 1.5 | 1 | |
1257894000000000000 | dev20 | 1.5 | 2 | |
(10 rows)
UPDATE "testNs" SET series_1 = 47;
UPDATE "testNs" SET series_bool = true;
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 47 | 2 | t
1257894000000000000 | dev1 | 1.5 | 47 | | t
1257894000000001000 | dev1 | 2.5 | 47 | | t
1257894001000000000 | dev1 | 3.5 | 47 | | t
1257897600000000000 | dev1 | 4.5 | 47 | | t
1257894002000000000 | dev1 | 2.5 | 47 | | t
1257987600000000000 | dev1 | 1.5 | 47 | | t
1257987600000000000 | dev1 | 1.5 | 47 | | t
1257894000000000000 | dev20 | 1.5 | 47 | | t
1257894000000000000 | dev20 | 1.5 | 47 | | t
(10 rows)

View File

@ -1,42 +0,0 @@
#!/bin/bash
set -e
UPDATE=${UPDATE:-false}
golden_test() {
psql -h localhost -U postgres -q -X -f $1 2>&1 | tee actual/$2
if diff expected/$2 actual/$2;
then
echo "$2 matches golden file"
else
if [ $UPDATE = true ]
then
echo "updating $2 golden file"
mv actual/$2 expected/$2
else
echo "ERROR: golden file doesn't match: $2"
exit 1
fi
fi
}
mkdir -p actual
rm -fr actual/*
mkdir -p dump
rm -fr dump/*
if [ "$#" -ne 0 ]; then
tests="$@"
else
tests=`ls -1 *.sql`
fi
for file in $tests
do
prefix="${file%%.*}"
echo "Running test '$prefix'"
golden_test ${prefix}.sql ${prefix}.out
done
echo "Success"

View File

@ -43,4 +43,3 @@ for i in {1..10}; do
fi fi
done done

View File

@ -2,8 +2,6 @@
set -e set -e
. `dirname $0`/test-docker-config.sh
if [[ -z "$CONTAINER_NAME" ]]; then if [[ -z "$CONTAINER_NAME" ]]; then
echo "The CONTAINER_NAME must be set" echo "The CONTAINER_NAME must be set"
exit 1 exit 1
@ -23,10 +21,13 @@ fi
CONTAINER_NAME=$CONTAINER_NAME \ CONTAINER_NAME=$CONTAINER_NAME \
DATA_DIR="" \ DATA_DIR="" \
IMAGE_NAME=$IMAGE_NAME \ IMAGE_NAME=$IMAGE_NAME \
PGPORT=${PGPORT:-5432} \
$(dirname $0)/docker-run.sh $(dirname $0)/docker-run.sh
TEST_TABLESPACE_PATH=${TEST_TABLESPACE_PATH:-/tmp/tspace1}
# Create data directories for tablespaces tests # Create data directories for tablespaces tests
docker exec -i $CONTAINER_NAME /bin/bash << 'EOF' docker exec -i $CONTAINER_NAME /bin/bash << EOF
mkdir -p /var/lib/postgresql/data/tests/tspace{1,2} mkdir -p ${TEST_TABLESPACE_PATH}
chown postgres:postgres /var/lib/postgresql/data/tests/tspace{1,2} chown postgres ${TEST_TABLESPACE_PATH}
EOF EOF

View File

@ -1,3 +0,0 @@
export PGPORT=${PGPORT:=6543}

5
test/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
results/
dump/
regression.diffs
regression.out
unit/testoutputs.tmp

View File

@ -1,36 +1,61 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
setup_meta setup_meta
------------ ------------
(1 row) (1 row)
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user
@ -58,13 +83,9 @@ SELECT add_node('test2' :: NAME, 'localhost');
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT add_node('should_fail' :: NAME, 'localhost', -1); SELECT add_node('should_fail' :: NAME, 'localhost', -1);
psql:cluster.sql:18: ERROR: 08001: could not connect to server "should_fail" ERROR: 08001: could not connect to server "should_fail"
DETAIL: invalid port number: "-1" DETAIL: invalid port number: "-1"
LOCATION: connect_pg_server, connection.c:241 LOCATION: connect_pg_server, connection.c:241
SELECT add_node('should_fail' :: NAME, '!@#€%&%&(%#&())', 5432);
psql:cluster.sql:19: ERROR: 08001: could not connect to server "should_fail"
DETAIL: could not translate host name "!@#€%&%&(%#&())" to address: Name or service not known
LOCATION: connect_pg_server, connection.c:241
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
\c Test1 \c Test1
CREATE TABLE PUBLIC."testNs" ( CREATE TABLE PUBLIC."testNs" (
@ -75,7 +96,7 @@ CREATE TABLE PUBLIC."testNs" (
latitude BIGINT NULL, latitude BIGINT NULL,
really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL
); );
psql:cluster.sql:32: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
CREATE TABLE PUBLIC."testNs2" ( CREATE TABLE PUBLIC."testNs2" (
time BIGINT NOT NULL, time BIGINT NOT NULL,
@ -85,19 +106,19 @@ CREATE TABLE PUBLIC."testNs2" (
latitude BIGINT NULL, latitude BIGINT NULL,
really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL
); );
psql:cluster.sql:41: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
CREATE INDEX ON PUBLIC."testNs" ("Device_id", time DESC NULLS LAST) WHERE "Device_id" IS NOT NULL; CREATE INDEX ON PUBLIC."testNs" ("Device_id", time DESC NULLS LAST) WHERE "Device_id" IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" (temp, time DESC NULLS LAST) WHERE temp IS NOT NULL; CREATE INDEX ON PUBLIC."testNs" (temp, time DESC NULLS LAST) WHERE temp IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" (really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on, time DESC NULLS LAST) WHERE really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on IS NOT NULL; CREATE INDEX ON PUBLIC."testNs" (really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on, time DESC NULLS LAST) WHERE really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on IS NOT NULL;
psql:cluster.sql:45: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
psql:cluster.sql:45: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
CREATE INDEX ON PUBLIC."testNs" (time DESC NULLS LAST, really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on) WHERE really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on IS NOT NULL; CREATE INDEX ON PUBLIC."testNs" (time DESC NULLS LAST, really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on) WHERE really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on IS NOT NULL;
psql:cluster.sql:46: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
psql:cluster.sql:46: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id');
create_hypertable create_hypertable
@ -107,7 +128,7 @@ SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id');
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id');
psql:cluster.sql:52: ERROR: IO110: hypertable public."testNs" already exists ERROR: IO110: hypertable public."testNs" already exists
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
SELECT * FROM create_hypertable('"public"."testNs2"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."testNs2"', 'time', 'Device_id');
@ -337,16 +358,16 @@ FROM _iobeamdb_catalog.hypertable_column;
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
UPDATE _iobeamdb_catalog.cluster_user SET password = 'foo'; UPDATE _iobeamdb_catalog.cluster_user SET password = 'foo';
psql:cluster.sql:112: ERROR: IO101: Operation UPDATE not supported on _iobeamdb_catalog.cluster_user ERROR: IO101: Operation UPDATE not supported on _iobeamdb_catalog.cluster_user
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
UPDATE _iobeamdb_catalog.node SET active = FALSE; UPDATE _iobeamdb_catalog.node SET active = FALSE;
psql:cluster.sql:113: ERROR: IO101: Operation UPDATE not supported on _iobeamdb_catalog.node ERROR: IO101: Operation UPDATE not supported on _iobeamdb_catalog.node
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
DELETE FROM _iobeamdb_catalog.meta WHERE TRUE; DELETE FROM _iobeamdb_catalog.meta WHERE TRUE;
psql:cluster.sql:114: ERROR: IO101: Operation DELETE not supported on _iobeamdb_catalog.meta ERROR: IO101: Operation DELETE not supported on _iobeamdb_catalog.meta
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
TRUNCATE TABLE _iobeamdb_catalog.meta; TRUNCATE TABLE _iobeamdb_catalog.meta;
psql:cluster.sql:115: ERROR: IO101: Operation TRUNCATE not supported on _iobeamdb_catalog.meta ERROR: IO101: Operation TRUNCATE not supported on _iobeamdb_catalog.meta
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
\des+ \des+
@ -614,7 +635,7 @@ Child tables: _iobeamdb_internal._hyper_3_0_replica
\c meta \c meta
SELECT _iobeamdb_meta.close_chunk_end(1); SELECT _iobeamdb_meta.close_chunk_end(1);
psql:cluster.sql:134: WARNING: 01000: Cannot close an empty chunk table WARNING: 01000: Cannot close an empty chunk table
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
close_chunk_end close_chunk_end
----------------- -----------------
@ -777,11 +798,11 @@ CREATE TABLE PUBLIC."testNsOnMeta" (
latitude BIGINT NULL, latitude BIGINT NULL,
really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on BIGINT NULL
); );
psql:cluster.sql:158: NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a" NOTICE: 42622: identifier "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_and_on_and_on" will be truncated to "really_long_column_goes_on_and_on_and_on_and_on_and_on_and_on_a"
LOCATION: truncate_identifier, scansup.c:205 LOCATION: truncate_identifier, scansup.c:205
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT * FROM create_hypertable('"public"."testNsOnMeta"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."testNsOnMeta"', 'time', 'Device_id');
psql:cluster.sql:161: ERROR: IO101: database not configured for hypertable storage (not setup as a data-node) ERROR: IO101: database not configured for hypertable storage (not setup as a data-node)
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
DROP TABLE PUBLIC."testNsOnMeta"; DROP TABLE PUBLIC."testNsOnMeta";

View File

@ -1,36 +1,61 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
setup_meta setup_meta
------------ ------------
(1 row) (1 row)
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user

View File

@ -1,21 +1,48 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\o /dev/null
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
\o
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user

View File

@ -1,21 +1,48 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\o /dev/null
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
\o
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user
@ -26,7 +53,7 @@ SELECT add_cluster_user('postgres', NULL);
-- Expect error when adding user again -- Expect error when adding user again
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
psql:ddl_errors.sql:16: ERROR: IO130: User postgres already exists ERROR: IO130: User postgres already exists
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
SELECT set_meta('meta' :: NAME, 'localhost'); SELECT set_meta('meta' :: NAME, 'localhost');
@ -50,10 +77,10 @@ SELECT add_node('test2' :: NAME, 'localhost');
-- Expect error when adding node again -- Expect error when adding node again
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT add_node('test2' :: NAME, 'localhost'); SELECT add_node('test2' :: NAME, 'localhost');
psql:ddl_errors.sql:25: ERROR: IO120: Node test2 already exists ERROR: IO120: Node test2 already exists
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
SELECT add_node('test2' :: NAME, 'otherhost'); SELECT add_node('test2' :: NAME, 'otherhost');
psql:ddl_errors.sql:26: ERROR: IO120: Node test2 already exists ERROR: IO120: Node test2 already exists
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
\c Test1 \c Test1
@ -65,22 +92,22 @@ CREATE TABLE PUBLIC."Hypertable_1" (
CREATE INDEX ON PUBLIC."Hypertable_1" (time, "Device_id"); CREATE INDEX ON PUBLIC."Hypertable_1" (time, "Device_id");
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT * FROM create_hypertable('"public"."Hypertable_1_mispelled"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."Hypertable_1_mispelled"', 'time', 'Device_id');
psql:ddl_errors.sql:39: ERROR: 42P01: relation "public.Hypertable_1_mispelled" does not exist ERROR: 42P01: relation "public.Hypertable_1_mispelled" does not exist
LINE 1: SELECT * FROM create_hypertable('"public"."Hypertable_1_misp... LINE 1: SELECT * FROM create_hypertable('"public"."Hypertable_1_misp...
^ ^
LOCATION: RangeVarGetRelidExtended, namespace.c:415 LOCATION: RangeVarGetRelidExtended, namespace.c:415
SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time_mispelled', 'Device_id'); SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time_mispelled', 'Device_id');
psql:ddl_errors.sql:40: ERROR: IO102: column "time_mispelled" does not exist ERROR: IO102: column "time_mispelled" does not exist
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'Device_id', 'Device_id'); SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'Device_id', 'Device_id');
psql:ddl_errors.sql:41: ERROR: IO102: illegal type for time column "Device_id": text ERROR: IO102: illegal type for time column "Device_id": text
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id_mispelled'); SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id_mispelled');
psql:ddl_errors.sql:42: ERROR: IO102: column "Device_id_mispelled" does not exist ERROR: IO102: column "Device_id_mispelled" does not exist
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
INSERT INTO PUBLIC."Hypertable_1" VALUES(1,'dev_1', 3); INSERT INTO PUBLIC."Hypertable_1" VALUES(1,'dev_1', 3);
SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id');
psql:ddl_errors.sql:46: ERROR: IO102: the table being converted to a hypertable must be empty ERROR: IO102: the table being converted to a hypertable must be empty
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165
DELETE FROM PUBLIC."Hypertable_1" ; DELETE FROM PUBLIC."Hypertable_1" ;
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
@ -92,5 +119,5 @@ SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id');
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id'); SELECT * FROM create_hypertable('"public"."Hypertable_1"', 'time', 'Device_id');
psql:ddl_errors.sql:54: ERROR: IO110: hypertable public."Hypertable_1" already exists ERROR: IO110: hypertable public."Hypertable_1" already exists
LOCATION: exec_stmt_raise, pl_exec.c:3165 LOCATION: exec_stmt_raise, pl_exec.c:3165

View File

@ -1,9 +1,24 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\o /dev/null
\ir include/create_single_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS single;
SET client_min_messages = NOTICE;
CREATE DATABASE single;
\c single
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "dblink" psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "hstore" psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
SELECT setup_meta();
SELECT setup_main();
\o
\set ECHO ALL
\c single \c single
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user

116
test/expected/delete.out Normal file
View File

@ -0,0 +1,116 @@
\set ON_ERROR_STOP 1
\o /dev/null
\ir include/insert.sql
\set ON_ERROR_STOP 1
\ir create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
select setup_main();
\c meta
SELECT add_cluster_user('postgres', NULL);
SELECT set_meta('meta' :: NAME, 'localhost');
SELECT add_node('Test1' :: NAME, 'localhost');
SELECT add_node('test2' :: NAME, 'localhost');
\c Test1
CREATE TABLE PUBLIC."testNs" (
"timeCustom" BIGINT NOT NULL,
device_id TEXT NOT NULL,
series_0 DOUBLE PRECISION NULL,
series_1 DOUBLE PRECISION NULL,
series_2 DOUBLE PRECISION NULL,
series_bool BOOLEAN NULL
);
CREATE INDEX ON PUBLIC."testNs" (device_id, "timeCustom" DESC NULLS LAST) WHERE device_id IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_0) WHERE series_0 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_1) WHERE series_1 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_2) WHERE series_2 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_bool) WHERE series_bool IS NOT NULL;
SELECT * FROM create_hypertable('"public"."testNs"', 'timeCustom', 'device_id', associated_schema_name=>'_iobeamdb_internal' );
\c Test1
BEGIN;
\COPY public."testNs" FROM 'data/ds1_dev1_1.tsv' NULL AS '';
COMMIT;
SELECT _iobeamdb_meta_api.close_chunk_end_immediate(c.id)
FROM get_open_partition_for_key((SELECT id FROM _iobeamdb_catalog.hypertable WHERE table_name = 'testNs'), 'dev1') part
INNER JOIN _iobeamdb_catalog.chunk c ON (c.partition_id = part.id);
\c Test1
INSERT INTO public."testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257987600000000000, 'dev1', 1.5, 1),
(1257987600000000000, 'dev1', 1.5, 2),
(1257894000000000000, 'dev20', 1.5, 1),
(1257894002000000000, 'dev1', 2.5, 3);
\c test2
INSERT INTO "testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257894000000000000, 'dev20', 1.5, 2);
\c test2
CREATE TABLE chunk_closing_test(
time BIGINT,
metric INTEGER,
device_id TEXT
);
-- Test chunk closing/creation
SELECT * FROM create_hypertable('chunk_closing_test', 'time', 'device_id', chunk_size_bytes => 10000);
INSERT INTO chunk_closing_test VALUES(1, 1, 'dev1');
INSERT INTO chunk_closing_test VALUES(2, 2, 'dev2');
INSERT INTO chunk_closing_test VALUES(3, 3, 'dev3');
SELECT * FROM chunk_closing_test;
SELECT * FROM _iobeamdb_catalog.chunk c
LEFT JOIN _iobeamdb_catalog.chunk_replica_node crn ON (c.id = crn.chunk_id)
LEFT JOIN _iobeamdb_catalog.partition_replica pr ON (crn.partition_replica_id = pr.id)
LEFT JOIN _iobeamdb_catalog.hypertable h ON (pr.hypertable_id = h.id)
WHERE h.schema_name = 'public' AND h.table_name = 'chunk_closing_test';
\o
\set ECHO ALL
\c test2
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 1 | 2 | t
1257894000000000000 | dev1 | 1.5 | 2 | |
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
1257987600000000000 | dev1 | 1.5 | 1 | |
1257987600000000000 | dev1 | 1.5 | 2 | |
1257894000000000000 | dev20 | 1.5 | 1 | |
1257894000000000000 | dev20 | 1.5 | 2 | |
(10 rows)
DELETE FROM "testNs" WHERE series_0 = 1.5;
DELETE FROM "testNs" WHERE series_0 = 100;
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
(4 rows)

View File

@ -1,21 +1,48 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\o /dev/null
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
\o
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user

View File

@ -1,12 +1,92 @@
\set ON_ERROR_STOP 1
\o /dev/null
\ir include/insert.sql
\set ON_ERROR_STOP 1
\ir create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
select setup_main();
\c meta
SELECT add_cluster_user('postgres', NULL);
SELECT set_meta('meta' :: NAME, 'localhost');
SELECT add_node('Test1' :: NAME, 'localhost');
SELECT add_node('test2' :: NAME, 'localhost');
\c Test1
CREATE TABLE PUBLIC."testNs" (
"timeCustom" BIGINT NOT NULL,
device_id TEXT NOT NULL,
series_0 DOUBLE PRECISION NULL,
series_1 DOUBLE PRECISION NULL,
series_2 DOUBLE PRECISION NULL,
series_bool BOOLEAN NULL
);
CREATE INDEX ON PUBLIC."testNs" (device_id, "timeCustom" DESC NULLS LAST) WHERE device_id IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_0) WHERE series_0 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_1) WHERE series_1 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_2) WHERE series_2 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_bool) WHERE series_bool IS NOT NULL;
SELECT * FROM create_hypertable('"public"."testNs"', 'timeCustom', 'device_id', associated_schema_name=>'_iobeamdb_internal' );
\c Test1
BEGIN;
\COPY public."testNs" FROM 'data/ds1_dev1_1.tsv' NULL AS '';
COMMIT;
SELECT _iobeamdb_meta_api.close_chunk_end_immediate(c.id)
FROM get_open_partition_for_key((SELECT id FROM _iobeamdb_catalog.hypertable WHERE table_name = 'testNs'), 'dev1') part
INNER JOIN _iobeamdb_catalog.chunk c ON (c.partition_id = part.id);
\c Test1
INSERT INTO public."testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257987600000000000, 'dev1', 1.5, 1),
(1257987600000000000, 'dev1', 1.5, 2),
(1257894000000000000, 'dev20', 1.5, 1),
(1257894002000000000, 'dev1', 2.5, 3);
\c test2
INSERT INTO "testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257894000000000000, 'dev20', 1.5, 2);
\c test2
CREATE TABLE chunk_closing_test(
time BIGINT,
metric INTEGER,
device_id TEXT
);
-- Test chunk closing/creation
SELECT * FROM create_hypertable('chunk_closing_test', 'time', 'device_id', chunk_size_bytes => 10000);
INSERT INTO chunk_closing_test VALUES(1, 1, 'dev1');
INSERT INTO chunk_closing_test VALUES(2, 2, 'dev2');
INSERT INTO chunk_closing_test VALUES(3, 3, 'dev3');
SELECT * FROM chunk_closing_test;
SELECT * FROM _iobeamdb_catalog.chunk c
LEFT JOIN _iobeamdb_catalog.chunk_replica_node crn ON (c.id = crn.chunk_id)
LEFT JOIN _iobeamdb_catalog.partition_replica pr ON (crn.partition_replica_id = pr.id)
LEFT JOIN _iobeamdb_catalog.hypertable h ON (pr.hypertable_id = h.id)
WHERE h.schema_name = 'public' AND h.table_name = 'chunk_closing_test';
\o
\set ECHO ALL
\c Test1 \c Test1
\d+ "_iobeamdb_internal".* \d+ "_iobeamdb_internal".*
Index "_iobeamdb_internal.1-testNs_device_id_timeCustom_idx" Index "_iobeamdb_internal.1-testNs_device_id_timeCustom_idx"

View File

@ -1,3 +1,5 @@
\set ON_ERROR_STOP 1
\set ECHO ALL
\ir include/insert.sql \ir include/insert.sql
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
\ir create_clustered_db.sql \ir create_clustered_db.sql

View File

@ -1,3 +1,5 @@
\set ON_ERROR_STOP 1
\set ECHO ALL
\ir include/insert_single.sql \ir include/insert_single.sql
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1
\ir create_single_db.sql \ir create_single_db.sql
@ -291,10 +293,10 @@ INSERT INTO "1dim" VALUES('2017-01-20T09:00:01', 22.5);
INSERT INTO "1dim" VALUES('2017-01-20T09:00:21', 21.2); INSERT INTO "1dim" VALUES('2017-01-20T09:00:21', 21.2);
INSERT INTO "1dim" VALUES('2017-01-20T09:00:47', 25.1); INSERT INTO "1dim" VALUES('2017-01-20T09:00:47', 25.1);
SELECT * FROM "1dim"; SELECT * FROM "1dim";
time | temp time | temp
---------------------+------ --------------------------+------
2017-01-20 09:00:01 | 22.5 Fri Jan 20 09:00:01 2017 | 22.5
2017-01-20 09:00:21 | 21.2 Fri Jan 20 09:00:21 2017 | 21.2
2017-01-20 09:00:47 | 25.1 Fri Jan 20 09:00:47 2017 | 25.1
(3 rows) (3 rows)

View File

@ -1,21 +1,103 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\o /dev/null
\ir include/insert.sql
\set ON_ERROR_STOP 1
\ir create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
\c meta
SELECT add_cluster_user('postgres', NULL);
SELECT set_meta('meta' :: NAME, 'localhost');
SELECT add_node('Test1' :: NAME, 'localhost');
SELECT add_node('test2' :: NAME, 'localhost');
\c Test1
CREATE TABLE PUBLIC."testNs" (
"timeCustom" BIGINT NOT NULL,
device_id TEXT NOT NULL,
series_0 DOUBLE PRECISION NULL,
series_1 DOUBLE PRECISION NULL,
series_2 DOUBLE PRECISION NULL,
series_bool BOOLEAN NULL
);
CREATE INDEX ON PUBLIC."testNs" (device_id, "timeCustom" DESC NULLS LAST) WHERE device_id IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_0) WHERE series_0 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_1) WHERE series_1 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_2) WHERE series_2 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_bool) WHERE series_bool IS NOT NULL;
SELECT * FROM create_hypertable('"public"."testNs"', 'timeCustom', 'device_id', associated_schema_name=>'_iobeamdb_internal' );
\c Test1
BEGIN;
\COPY public."testNs" FROM 'data/ds1_dev1_1.tsv' NULL AS '';
COMMIT;
SELECT _iobeamdb_meta_api.close_chunk_end_immediate(c.id)
FROM get_open_partition_for_key((SELECT id FROM _iobeamdb_catalog.hypertable WHERE table_name = 'testNs'), 'dev1') part
INNER JOIN _iobeamdb_catalog.chunk c ON (c.partition_id = part.id);
\c Test1
INSERT INTO public."testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257987600000000000, 'dev1', 1.5, 1),
(1257987600000000000, 'dev1', 1.5, 2),
(1257894000000000000, 'dev20', 1.5, 1),
(1257894002000000000, 'dev1', 2.5, 3);
\c test2
INSERT INTO "testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257894000000000000, 'dev20', 1.5, 2);
\c test2
CREATE TABLE chunk_closing_test(
time BIGINT,
metric INTEGER,
device_id TEXT
);
-- Test chunk closing/creation
SELECT * FROM create_hypertable('chunk_closing_test', 'time', 'device_id', chunk_size_bytes => 10000);
INSERT INTO chunk_closing_test VALUES(1, 1, 'dev1');
INSERT INTO chunk_closing_test VALUES(2, 2, 'dev2');
INSERT INTO chunk_closing_test VALUES(3, 3, 'dev3');
SELECT * FROM chunk_closing_test;
SELECT * FROM _iobeamdb_catalog.chunk c
LEFT JOIN _iobeamdb_catalog.chunk_replica_node crn ON (c.id = crn.chunk_id)
LEFT JOIN _iobeamdb_catalog.partition_replica pr ON (crn.partition_replica_id = pr.id)
LEFT JOIN _iobeamdb_catalog.hypertable h ON (pr.hypertable_id = h.id)
WHERE h.schema_name = 'public' AND h.table_name = 'chunk_closing_test';
\o
\set ECHO ALL
\c postgres \c postgres
\! pg_dump -h localhost -U postgres -Fc Test1 > dump/Test1.sql \! pg_dump -h localhost -U postgres -Fc Test1 > dump/Test1.sql
\! pg_dump -h localhost -U postgres -Fc test2 > dump/test2.sql \! pg_dump -h localhost -U postgres -Fc test2 > dump/test2.sql

View File

@ -1,12 +1,92 @@
\set ON_ERROR_STOP 1
\o /dev/null
\ir include/insert.sql
\set ON_ERROR_STOP 1
\ir create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
select setup_main();
\c meta
SELECT add_cluster_user('postgres', NULL);
SELECT set_meta('meta' :: NAME, 'localhost');
SELECT add_node('Test1' :: NAME, 'localhost');
SELECT add_node('test2' :: NAME, 'localhost');
\c Test1
CREATE TABLE PUBLIC."testNs" (
"timeCustom" BIGINT NOT NULL,
device_id TEXT NOT NULL,
series_0 DOUBLE PRECISION NULL,
series_1 DOUBLE PRECISION NULL,
series_2 DOUBLE PRECISION NULL,
series_bool BOOLEAN NULL
);
CREATE INDEX ON PUBLIC."testNs" (device_id, "timeCustom" DESC NULLS LAST) WHERE device_id IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_0) WHERE series_0 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_1) WHERE series_1 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_2) WHERE series_2 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_bool) WHERE series_bool IS NOT NULL;
SELECT * FROM create_hypertable('"public"."testNs"', 'timeCustom', 'device_id', associated_schema_name=>'_iobeamdb_internal' );
\c Test1
BEGIN;
\COPY public."testNs" FROM 'data/ds1_dev1_1.tsv' NULL AS '';
COMMIT;
SELECT _iobeamdb_meta_api.close_chunk_end_immediate(c.id)
FROM get_open_partition_for_key((SELECT id FROM _iobeamdb_catalog.hypertable WHERE table_name = 'testNs'), 'dev1') part
INNER JOIN _iobeamdb_catalog.chunk c ON (c.partition_id = part.id);
\c Test1
INSERT INTO public."testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257987600000000000, 'dev1', 1.5, 1),
(1257987600000000000, 'dev1', 1.5, 2),
(1257894000000000000, 'dev20', 1.5, 1),
(1257894002000000000, 'dev1', 2.5, 3);
\c test2
INSERT INTO "testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257894000000000000, 'dev20', 1.5, 2);
\c test2
CREATE TABLE chunk_closing_test(
time BIGINT,
metric INTEGER,
device_id TEXT
);
-- Test chunk closing/creation
SELECT * FROM create_hypertable('chunk_closing_test', 'time', 'device_id', chunk_size_bytes => 10000);
INSERT INTO chunk_closing_test VALUES(1, 1, 'dev1');
INSERT INTO chunk_closing_test VALUES(2, 2, 'dev2');
INSERT INTO chunk_closing_test VALUES(3, 3, 'dev3');
SELECT * FROM chunk_closing_test;
SELECT * FROM _iobeamdb_catalog.chunk c
LEFT JOIN _iobeamdb_catalog.chunk_replica_node crn ON (c.id = crn.chunk_id)
LEFT JOIN _iobeamdb_catalog.partition_replica pr ON (crn.partition_replica_id = pr.id)
LEFT JOIN _iobeamdb_catalog.hypertable h ON (pr.hypertable_id = h.id)
WHERE h.schema_name = 'public' AND h.table_name = 'chunk_closing_test';
\o
\set ECHO ALL
\c Test1 \c Test1
SELECT * FROM PUBLIC."testNs"; SELECT * FROM PUBLIC."testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool timeCustom | device_id | series_0 | series_1 | series_2 | series_bool

View File

@ -1,36 +1,61 @@
\set ON_ERROR_STOP 1
\set VERBOSITY verbose
\set SHOW_CONTEXT never
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_meta();
setup_meta setup_meta
------------ ------------
(1 row) (1 row)
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
LOCATION: CreateExtensionInternal, extension.c:1441 LOCATION: CreateExtensionInternal, extension.c:1441
select setup_main();
setup_main setup_main
------------ ------------
(1 row) (1 row)
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user
@ -58,7 +83,7 @@ SELECT add_node('test2' :: NAME, 'localhost');
\c Test1 \c Test1
--test hypertable with tables space --test hypertable with tables space
create tablespace tspace1 location '/var/lib/postgresql/data/tests/tspace1'; create tablespace tspace1 location :TEST_TABLESPACE_PATH;
create table test_tspace(time timestamp, temp float, device_id text) tablespace tspace1; create table test_tspace(time timestamp, temp float, device_id text) tablespace tspace1;
select create_hypertable('test_tspace', 'time', 'device_id'); select create_hypertable('test_tspace', 'time', 'device_id');
create_hypertable create_hypertable

View File

@ -1,12 +1,37 @@
\set ON_ERROR_STOP 1
\o /dev/null
\ir include/create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore" psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
select setup_main();
\o
\set ECHO ALL
\c meta \c meta
SELECT add_cluster_user('postgres', NULL); SELECT add_cluster_user('postgres', NULL);
add_cluster_user add_cluster_user
@ -76,13 +101,13 @@ INSERT INTO PUBLIC."testNs"("timeCustom", device_id, series_0, series_1) VALUES
('2009-11-10T23:00:00+00:00', 'dev2', 1.5, 1), ('2009-11-10T23:00:00+00:00', 'dev2', 1.5, 1),
('2009-11-10T23:00:00+00:00', 'dev2', 1.5, 2); ('2009-11-10T23:00:00+00:00', 'dev2', 1.5, 2);
SELECT * FROM PUBLIC."testNs"; SELECT * FROM PUBLIC."testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+------------- --------------------------+-----------+----------+----------+----------+-------------
2009-11-12 01:00:00 | dev1 | 1.5 | 1 | | Thu Nov 12 01:00:00 2009 | dev1 | 1.5 | 1 | |
2009-11-12 01:00:00 | dev1 | 1.5 | 2 | | Thu Nov 12 01:00:00 2009 | dev1 | 1.5 | 2 | |
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | | Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
(5 rows) (5 rows)
SET client_min_messages = WARNING; SET client_min_messages = WARNING;
@ -91,17 +116,17 @@ The next 2 queries will differ in output between UTC and EST since the mod is on
SET timezone = 'UTC'; SET timezone = 'UTC';
SELECT date_group("timeCustom", '100 days') AS time, sum(series_0) SELECT date_group("timeCustom", '100 days') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-09-13 00:00:00 | 8.5 Sun Sep 13 00:00:00 2009 | 8.5
(1 row) (1 row)
SET timezone = 'EST'; SET timezone = 'EST';
SELECT date_group("timeCustom", '100 days') AS time, sum(series_0) SELECT date_group("timeCustom", '100 days') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-09-12 19:00:00 | 8.5 Sat Sep 12 19:00:00 2009 | 8.5
(1 row) (1 row)
\echo 'The rest of the queries will be the same in output between UTC and EST' \echo 'The rest of the queries will be the same in output between UTC and EST'
@ -116,10 +141,10 @@ SELECT dblink_disconnect(conn) FROM unnest(dblink_get_connections()) conn;
SELECT date_group("timeCustom", '1 day') AS time, sum(series_0) SELECT date_group("timeCustom", '1 day') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-11-10 00:00:00 | 5.5 Tue Nov 10 00:00:00 2009 | 5.5
2009-11-12 00:00:00 | 3 Thu Nov 12 00:00:00 2009 | 3
(2 rows) (2 rows)
SET timezone = 'EST'; SET timezone = 'EST';
@ -131,10 +156,10 @@ SELECT dblink_disconnect(conn) FROM unnest(dblink_get_connections()) conn;
SELECT date_group("timeCustom", '1 day') AS time, sum(series_0) SELECT date_group("timeCustom", '1 day') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-11-09 19:00:00 | 5.5 Mon Nov 09 19:00:00 2009 | 5.5
2009-11-11 19:00:00 | 3 Wed Nov 11 19:00:00 2009 | 3
(2 rows) (2 rows)
SET timezone = 'UTC'; SET timezone = 'UTC';
@ -148,11 +173,11 @@ SELECT *
FROM PUBLIC."testNs" FROM PUBLIC."testNs"
WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00' WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00'
AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC; AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC;
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+------------- --------------------------+-----------+----------+----------+----------+-------------
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | | Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
(3 rows) (3 rows)
SET timezone = 'EST'; SET timezone = 'EST';
@ -166,11 +191,11 @@ SELECT *
FROM PUBLIC."testNs" FROM PUBLIC."testNs"
WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00' WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00'
AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC; AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC;
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+------------- --------------------------+-----------+----------+----------+----------+-------------
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | | Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | | Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
(3 rows) (3 rows)
SET timezone = 'UTC'; SET timezone = 'UTC';
@ -182,10 +207,10 @@ SELECT dblink_disconnect(conn) FROM unnest(dblink_get_connections()) conn;
SELECT date_group("timeCustom", '1 day') AS time, sum(series_0) SELECT date_group("timeCustom", '1 day') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-11-10 00:00:00 | 5.5 Tue Nov 10 00:00:00 2009 | 5.5
2009-11-12 00:00:00 | 3 Thu Nov 12 00:00:00 2009 | 3
(2 rows) (2 rows)
SET timezone = 'EST'; SET timezone = 'EST';
@ -197,9 +222,9 @@ SELECT dblink_disconnect(conn) FROM unnest(dblink_get_connections()) conn;
SELECT date_group("timeCustom", '1 day') AS time, sum(series_0) SELECT date_group("timeCustom", '1 day') AS time, sum(series_0)
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2; FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2;
time | sum time | sum
---------------------+----- --------------------------+-----
2009-11-09 19:00:00 | 5.5 Mon Nov 09 19:00:00 2009 | 5.5
2009-11-11 19:00:00 | 3 Wed Nov 11 19:00:00 2009 | 3
(2 rows) (2 rows)

122
test/expected/update.out Normal file
View File

@ -0,0 +1,122 @@
\set ON_ERROR_STOP 1
\o /dev/null
\ir include/insert.sql
\set ON_ERROR_STOP 1
\ir create_clustered_db.sql
SET client_min_messages = WARNING;
DROP DATABASE IF EXISTS meta;
DROP DATABASE IF EXISTS "Test1";
DROP DATABASE IF EXISTS test2;
SET client_min_messages = NOTICE;
CREATE DATABASE meta;
CREATE DATABASE "Test1";
CREATE DATABASE test2;
\c meta
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:12: NOTICE: installing required extension "hstore"
select setup_meta();
\c Test1
CREATE SCHEMA io_test;
CREATE EXTENSION IF NOT EXISTS iobeamdb SCHEMA io_test CASCADE;
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:17: NOTICE: installing required extension "hstore"
ALTER DATABASE "Test1" SET search_path = "io_test";
SET search_path = 'io_test';
select setup_main();
\c test2
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "dblink"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "postgres_fdw"
psql:include/create_clustered_db.sql:23: NOTICE: installing required extension "hstore"
select setup_main();
\c meta
SELECT add_cluster_user('postgres', NULL);
SELECT set_meta('meta' :: NAME, 'localhost');
SELECT add_node('Test1' :: NAME, 'localhost');
SELECT add_node('test2' :: NAME, 'localhost');
\c Test1
CREATE TABLE PUBLIC."testNs" (
"timeCustom" BIGINT NOT NULL,
device_id TEXT NOT NULL,
series_0 DOUBLE PRECISION NULL,
series_1 DOUBLE PRECISION NULL,
series_2 DOUBLE PRECISION NULL,
series_bool BOOLEAN NULL
);
CREATE INDEX ON PUBLIC."testNs" (device_id, "timeCustom" DESC NULLS LAST) WHERE device_id IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_0) WHERE series_0 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_1) WHERE series_1 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_2) WHERE series_2 IS NOT NULL;
CREATE INDEX ON PUBLIC."testNs" ("timeCustom" DESC NULLS LAST, series_bool) WHERE series_bool IS NOT NULL;
SELECT * FROM create_hypertable('"public"."testNs"', 'timeCustom', 'device_id', associated_schema_name=>'_iobeamdb_internal' );
\c Test1
BEGIN;
\COPY public."testNs" FROM 'data/ds1_dev1_1.tsv' NULL AS '';
COMMIT;
SELECT _iobeamdb_meta_api.close_chunk_end_immediate(c.id)
FROM get_open_partition_for_key((SELECT id FROM _iobeamdb_catalog.hypertable WHERE table_name = 'testNs'), 'dev1') part
INNER JOIN _iobeamdb_catalog.chunk c ON (c.partition_id = part.id);
\c Test1
INSERT INTO public."testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257987600000000000, 'dev1', 1.5, 1),
(1257987600000000000, 'dev1', 1.5, 2),
(1257894000000000000, 'dev20', 1.5, 1),
(1257894002000000000, 'dev1', 2.5, 3);
\c test2
INSERT INTO "testNs"("timeCustom", device_id, series_0, series_1) VALUES
(1257894000000000000, 'dev20', 1.5, 2);
\c test2
CREATE TABLE chunk_closing_test(
time BIGINT,
metric INTEGER,
device_id TEXT
);
-- Test chunk closing/creation
SELECT * FROM create_hypertable('chunk_closing_test', 'time', 'device_id', chunk_size_bytes => 10000);
INSERT INTO chunk_closing_test VALUES(1, 1, 'dev1');
INSERT INTO chunk_closing_test VALUES(2, 2, 'dev2');
INSERT INTO chunk_closing_test VALUES(3, 3, 'dev3');
SELECT * FROM chunk_closing_test;
SELECT * FROM _iobeamdb_catalog.chunk c
LEFT JOIN _iobeamdb_catalog.chunk_replica_node crn ON (c.id = crn.chunk_id)
LEFT JOIN _iobeamdb_catalog.partition_replica pr ON (crn.partition_replica_id = pr.id)
LEFT JOIN _iobeamdb_catalog.hypertable h ON (pr.hypertable_id = h.id)
WHERE h.schema_name = 'public' AND h.table_name = 'chunk_closing_test';
\o
\set ECHO ALL
\c test2
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 1 | 2 | t
1257894000000000000 | dev1 | 1.5 | 2 | |
1257894000000001000 | dev1 | 2.5 | 3 | |
1257894001000000000 | dev1 | 3.5 | 4 | |
1257897600000000000 | dev1 | 4.5 | 5 | | f
1257894002000000000 | dev1 | 2.5 | 3 | |
1257987600000000000 | dev1 | 1.5 | 1 | |
1257987600000000000 | dev1 | 1.5 | 2 | |
1257894000000000000 | dev20 | 1.5 | 1 | |
1257894000000000000 | dev20 | 1.5 | 2 | |
(10 rows)
UPDATE "testNs" SET series_1 = 47;
UPDATE "testNs" SET series_bool = true;
SELECT * FROM "testNs";
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
---------------------+-----------+----------+----------+----------+-------------
1257894000000000000 | dev1 | 1.5 | 47 | 2 | t
1257894000000000000 | dev1 | 1.5 | 47 | | t
1257894000000001000 | dev1 | 2.5 | 47 | | t
1257894001000000000 | dev1 | 3.5 | 47 | | t
1257897600000000000 | dev1 | 4.5 | 47 | | t
1257894002000000000 | dev1 | 2.5 | 47 | | t
1257987600000000000 | dev1 | 1.5 | 47 | | t
1257987600000000000 | dev1 | 1.5 | 47 | | t
1257894000000000000 | dev20 | 1.5 | 47 | | t
1257894000000000000 | dev20 | 1.5 | 47 | | t
(10 rows)

16
test/runner.sh Executable file
View File

@ -0,0 +1,16 @@
#!/usr/bin/env bash
set -u
set -e
PG_REGRESS_PSQL=$1
shift
PSQL=${PSQL:-$PG_REGRESS_PSQL}
TEST_TABLESPACE_PATH=${TEST_TABLESPACE_PATH:-/tmp/tspace1}
cd test/sql
PG_PROC_USER=$(ps u | awk '/postgres/ { print $1; exit }')
mkdir -p ${TEST_TABLESPACE_PATH}
mkdir -p dump
exec ${PSQL} -v ON_ERROR_STOP=1 -v TEST_TABLESPACE_PATH=\'${TEST_TABLESPACE_PATH}\' $@

View File

@ -16,7 +16,6 @@ SELECT add_node('test2' :: NAME, 'localhost');
\set ON_ERROR_STOP 0 \set ON_ERROR_STOP 0
SELECT add_node('should_fail' :: NAME, 'localhost', -1); SELECT add_node('should_fail' :: NAME, 'localhost', -1);
SELECT add_node('should_fail' :: NAME, '!@#€%&%&(%#&())', 5432);
\set ON_ERROR_STOP 1 \set ON_ERROR_STOP 1

Some files were not shown because too many files have changed in this diff Show More