mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-15 10:11:29 +08:00
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:
parent
4fd1d9d299
commit
7b94c573ba
9
.gitignore
vendored
9
.gitignore
vendored
@ -1,2 +1,7 @@
|
||||
extension/sql/tests/unit/testoutputs.tmp
|
||||
data/
|
||||
/sql/tests/unit/testoutputs.tmp
|
||||
/sql/iobeamdb--*.sql
|
||||
/data/
|
||||
/src/*.o
|
||||
/src/*.so
|
||||
/.vscode/
|
||||
/iobeamdb.so
|
||||
|
14
Dockerfile
14
Dockerfile
@ -8,7 +8,15 @@ RUN apt-get update && apt-get install -y \
|
||||
build-essential \
|
||||
daemontools \
|
||||
postgresql-server-dev-$PG_MAJOR \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY extension /extension
|
||||
RUN cd /extension && make install && rm -rf /extension
|
||||
RUN mkdir -p /build/{src/deps,test/results}
|
||||
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
|
||||
|
78
Makefile
78
Makefile
@ -1,44 +1,62 @@
|
||||
EXTENSION = iobeamdb
|
||||
SQL_FILES = $(shell cat sql/load_order.txt)
|
||||
|
||||
IMAGE_NAME = iobeamdb
|
||||
MAKE = make
|
||||
EXT_VERSION = 1.0
|
||||
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
|
||||
clean:
|
||||
$(MAKE) -C ./extension clean
|
||||
@rm -f ./extension/iobeamdb--*.sql
|
||||
SRCS = src/iobeamdb.c src/murmur3.c src/pgmurmur3.c
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
install:
|
||||
$(MAKE) -C ./extension install
|
||||
MKFILE_PATH := $(abspath $(MAKEFILE_LIST))
|
||||
CURRENT_DIR = $(dir $(MKFILE_PATH))
|
||||
|
||||
# Targets for building/running Docker images
|
||||
build-docker:
|
||||
@docker build . -t $(IMAGE_NAME)
|
||||
TEST_PGPORT ?= 5432
|
||||
TEST_PGHOST ?= localhost
|
||||
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:
|
||||
@IMAGE_NAME=$(IMAGE_NAME) ./scripts/docker-run.sh
|
||||
PG_CONFIG = pg_config
|
||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||
|
||||
start-test-docker:
|
||||
@ . scripts/test-docker-config.sh && IMAGE_NAME=$(IMAGE_NAME) CONTAINER_NAME=iobeamdb_testing ./scripts/start-test-docker.sh
|
||||
EXTRA_CLEAN = $(EXT_SQL_FILE)
|
||||
|
||||
stop-test-docker:
|
||||
@docker rm -f iobeamdb_testing
|
||||
include $(PGXS)
|
||||
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
|
||||
test-regression:
|
||||
@ . scripts/test-docker-config.sh && cd extension/sql/tests/regression && ./run.sh
|
||||
all: $(EXT_SQL_FILE)
|
||||
|
||||
test-unit:
|
||||
@ . scripts/test-docker-config.sh && cd extension/sql/tests/unit && ./run.sh
|
||||
$(EXT_SQL_FILE): $(SQL_FILES)
|
||||
@cat $^ > $@
|
||||
|
||||
test-all: test-regression test-unit
|
||||
@echo Running all tests
|
||||
check-sql-files:
|
||||
@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
|
||||
setup-single-node-db:
|
||||
@PGDATABASE=postgres ./scripts/run_sql.sh setup_single_node_db.psql
|
||||
package: clean $(EXT_SQL_FILE)
|
||||
@mkdir -p package/lib
|
||||
@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
|
||||
|
61
README.md
61
README.md
@ -1,40 +1,44 @@
|
||||
### Prerequisites
|
||||
|
||||
You'll need to install and run [Docker](https://docs.docker.com/engine/installation/),
|
||||
which is the current way to run the database.
|
||||
- The [Postgres client](https://wiki.postgresql.org/wiki/Detailed_installation_guides) (psql)
|
||||
- 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
|
||||
# To build the image
|
||||
make build-docker
|
||||
# To start the image using docker run.
|
||||
# This creates a docker container named `iobeamdb`
|
||||
# with a data volume mount inside the `data` subdirectory.
|
||||
make docker-run
|
||||
# To stop the container
|
||||
docker stop iobeamdb
|
||||
# To build the extension
|
||||
make
|
||||
|
||||
# To install
|
||||
make install
|
||||
|
||||
# To run tests (needs running Postgres server with preloaded extension)
|
||||
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
|
||||
After starting the Docker image, you can start a local single node database:
|
||||
```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
|
||||
psql -U postgres -h localhost -d iobeam
|
||||
psql -U postgres -h localhost -d iobeamdb
|
||||
```
|
||||
|
||||
#### Creating a table
|
||||
@ -123,16 +127,3 @@ this creates a more compact, and thus efficient, index.
|
||||
|
||||
### 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
28
docker.mk
Normal 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
|
||||
|
@ -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
|
2
extension/sql/tests/regression/.gitignore
vendored
2
extension/sql/tests/regression/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
actual/
|
||||
dump/
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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"
|
@ -43,4 +43,3 @@ for i in {1..10}; do
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
set -e
|
||||
|
||||
. `dirname $0`/test-docker-config.sh
|
||||
|
||||
if [[ -z "$CONTAINER_NAME" ]]; then
|
||||
echo "The CONTAINER_NAME must be set"
|
||||
exit 1
|
||||
@ -23,10 +21,13 @@ fi
|
||||
CONTAINER_NAME=$CONTAINER_NAME \
|
||||
DATA_DIR="" \
|
||||
IMAGE_NAME=$IMAGE_NAME \
|
||||
PGPORT=${PGPORT:-5432} \
|
||||
$(dirname $0)/docker-run.sh
|
||||
|
||||
TEST_TABLESPACE_PATH=${TEST_TABLESPACE_PATH:-/tmp/tspace1}
|
||||
|
||||
# Create data directories for tablespaces tests
|
||||
docker exec -i $CONTAINER_NAME /bin/bash << 'EOF'
|
||||
mkdir -p /var/lib/postgresql/data/tests/tspace{1,2}
|
||||
chown postgres:postgres /var/lib/postgresql/data/tests/tspace{1,2}
|
||||
docker exec -i $CONTAINER_NAME /bin/bash << EOF
|
||||
mkdir -p ${TEST_TABLESPACE_PATH}
|
||||
chown postgres ${TEST_TABLESPACE_PATH}
|
||||
EOF
|
||||
|
@ -1,3 +0,0 @@
|
||||
|
||||
export PGPORT=${PGPORT:=6543}
|
||||
|
5
test/.gitignore
vendored
Normal file
5
test/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
results/
|
||||
dump/
|
||||
regression.diffs
|
||||
regression.out
|
||||
unit/testoutputs.tmp
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_meta();
|
||||
setup_meta
|
||||
------------
|
||||
|
||||
(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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
ALTER DATABASE "Test1" SET search_path = "io_test";
|
||||
SET search_path = 'io_test';
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\c test2
|
||||
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
||||
@ -58,13 +83,9 @@ SELECT add_node('test2' :: NAME, 'localhost');
|
||||
|
||||
\set ON_ERROR_STOP 0
|
||||
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"
|
||||
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
|
||||
\c Test1
|
||||
CREATE TABLE PUBLIC."testNs" (
|
||||
@ -75,7 +96,7 @@ CREATE TABLE PUBLIC."testNs" (
|
||||
latitude 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
|
||||
CREATE TABLE PUBLIC."testNs2" (
|
||||
time BIGINT NOT NULL,
|
||||
@ -85,19 +106,19 @@ CREATE TABLE PUBLIC."testNs2" (
|
||||
latitude 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
|
||||
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" (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
|
||||
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
|
||||
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
|
||||
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
|
||||
SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id');
|
||||
create_hypertable
|
||||
@ -107,7 +128,7 @@ SELECT * FROM create_hypertable('"public"."testNs"', 'time', 'Device_id');
|
||||
|
||||
\set ON_ERROR_STOP 0
|
||||
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
|
||||
\set ON_ERROR_STOP 1
|
||||
SELECT * FROM create_hypertable('"public"."testNs2"', 'time', 'Device_id');
|
||||
@ -337,16 +358,16 @@ FROM _iobeamdb_catalog.hypertable_column;
|
||||
|
||||
\set ON_ERROR_STOP 0
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
\set ON_ERROR_STOP 1
|
||||
\des+
|
||||
@ -614,7 +635,7 @@ Child tables: _iobeamdb_internal._hyper_3_0_replica
|
||||
|
||||
\c meta
|
||||
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
|
||||
close_chunk_end
|
||||
-----------------
|
||||
@ -777,11 +798,11 @@ CREATE TABLE PUBLIC."testNsOnMeta" (
|
||||
latitude 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
|
||||
\set ON_ERROR_STOP 0
|
||||
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
|
||||
\set ON_ERROR_STOP 1
|
||||
DROP TABLE PUBLIC."testNsOnMeta";
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_meta();
|
||||
setup_meta
|
||||
------------
|
||||
|
||||
(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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
ALTER DATABASE "Test1" SET search_path = "io_test";
|
||||
SET search_path = 'io_test';
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\c test2
|
||||
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
\o
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
\o
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
||||
@ -26,7 +53,7 @@ SELECT add_cluster_user('postgres', NULL);
|
||||
-- Expect error when adding user again
|
||||
\set ON_ERROR_STOP 0
|
||||
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
|
||||
\set ON_ERROR_STOP 1
|
||||
SELECT set_meta('meta' :: NAME, 'localhost');
|
||||
@ -50,10 +77,10 @@ SELECT add_node('test2' :: NAME, 'localhost');
|
||||
-- Expect error when adding node again
|
||||
\set ON_ERROR_STOP 0
|
||||
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
|
||||
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
|
||||
\set ON_ERROR_STOP 1
|
||||
\c Test1
|
||||
@ -65,22 +92,22 @@ CREATE TABLE PUBLIC."Hypertable_1" (
|
||||
CREATE INDEX ON PUBLIC."Hypertable_1" (time, "Device_id");
|
||||
\set ON_ERROR_STOP 0
|
||||
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...
|
||||
^
|
||||
LOCATION: RangeVarGetRelidExtended, namespace.c:415
|
||||
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
|
||||
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
|
||||
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
|
||||
INSERT INTO PUBLIC."Hypertable_1" VALUES(1,'dev_1', 3);
|
||||
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
|
||||
DELETE FROM PUBLIC."Hypertable_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
|
||||
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
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_single_db.sql:7: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
SELECT setup_meta();
|
||||
SELECT setup_main();
|
||||
\o
|
||||
\set ECHO ALL
|
||||
\c single
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
116
test/expected/delete.out
Normal file
116
test/expected/delete.out
Normal 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)
|
||||
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
\o
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
@ -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 "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 Test1
|
||||
\d+ "_iobeamdb_internal".*
|
||||
Index "_iobeamdb_internal.1-testNs_device_id_timeCustom_idx"
|
@ -1,3 +1,5 @@
|
||||
\set ON_ERROR_STOP 1
|
||||
\set ECHO ALL
|
||||
\ir include/insert.sql
|
||||
\set ON_ERROR_STOP 1
|
||||
\ir create_clustered_db.sql
|
@ -1,3 +1,5 @@
|
||||
\set ON_ERROR_STOP 1
|
||||
\set ECHO ALL
|
||||
\ir include/insert_single.sql
|
||||
\set ON_ERROR_STOP 1
|
||||
\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:47', 25.1);
|
||||
SELECT * FROM "1dim";
|
||||
time | temp
|
||||
---------------------+------
|
||||
2017-01-20 09:00:01 | 22.5
|
||||
2017-01-20 09:00:21 | 21.2
|
||||
2017-01-20 09:00:47 | 25.1
|
||||
time | temp
|
||||
--------------------------+------
|
||||
Fri Jan 20 09:00:01 2017 | 22.5
|
||||
Fri Jan 20 09:00:21 2017 | 21.2
|
||||
Fri Jan 20 09:00:47 2017 | 25.1
|
||||
(3 rows)
|
||||
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
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
|
||||
\! pg_dump -h localhost -U postgres -Fc Test1 > dump/Test1.sql
|
||||
\! pg_dump -h localhost -U postgres -Fc test2 > dump/test2.sql
|
@ -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 "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 Test1
|
||||
SELECT * FROM PUBLIC."testNs";
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
@ -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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:12: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_meta();
|
||||
setup_meta
|
||||
------------
|
||||
|
||||
(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"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:17: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
ALTER DATABASE "Test1" SET search_path = "io_test";
|
||||
SET search_path = 'io_test';
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\c test2
|
||||
CREATE EXTENSION IF NOT EXISTS iobeamdb CASCADE;
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "dblink"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "postgres_fdw"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
psql:include/create_clustered_db.sql:23: NOTICE: 00000: installing required extension "hstore"
|
||||
LOCATION: CreateExtensionInternal, extension.c:1441
|
||||
select setup_main();
|
||||
setup_main
|
||||
------------
|
||||
|
||||
(1 row)
|
||||
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
add_cluster_user
|
||||
@ -58,7 +83,7 @@ SELECT add_node('test2' :: NAME, 'localhost');
|
||||
|
||||
\c Test1
|
||||
--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;
|
||||
select create_hypertable('test_tspace', 'time', 'device_id');
|
||||
create_hypertable
|
@ -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 "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();
|
||||
\o
|
||||
\set ECHO ALL
|
||||
\c meta
|
||||
SELECT add_cluster_user('postgres', NULL);
|
||||
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, 2);
|
||||
SELECT * FROM PUBLIC."testNs";
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
---------------------+-----------+----------+----------+----------+-------------
|
||||
2009-11-12 01:00:00 | dev1 | 1.5 | 1 | |
|
||||
2009-11-12 01:00:00 | dev1 | 1.5 | 2 | |
|
||||
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | |
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
--------------------------+-----------+----------+----------+----------+-------------
|
||||
Thu Nov 12 01:00:00 2009 | dev1 | 1.5 | 1 | |
|
||||
Thu Nov 12 01:00:00 2009 | dev1 | 1.5 | 2 | |
|
||||
Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
|
||||
(5 rows)
|
||||
|
||||
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';
|
||||
SELECT date_group("timeCustom", '100 days') AS time, sum(series_0)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-09-13 00:00:00 | 8.5
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Sun Sep 13 00:00:00 2009 | 8.5
|
||||
(1 row)
|
||||
|
||||
SET timezone = 'EST';
|
||||
SELECT date_group("timeCustom", '100 days') AS time, sum(series_0)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-09-12 19:00:00 | 8.5
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Sat Sep 12 19:00:00 2009 | 8.5
|
||||
(1 row)
|
||||
|
||||
\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)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-11-10 00:00:00 | 5.5
|
||||
2009-11-12 00:00:00 | 3
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Tue Nov 10 00:00:00 2009 | 5.5
|
||||
Thu Nov 12 00:00:00 2009 | 3
|
||||
(2 rows)
|
||||
|
||||
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)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-11-09 19:00:00 | 5.5
|
||||
2009-11-11 19:00:00 | 3
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Mon Nov 09 19:00:00 2009 | 5.5
|
||||
Wed Nov 11 19:00:00 2009 | 3
|
||||
(2 rows)
|
||||
|
||||
SET timezone = 'UTC';
|
||||
@ -148,11 +173,11 @@ SELECT *
|
||||
FROM PUBLIC."testNs"
|
||||
WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00'
|
||||
AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC;
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
---------------------+-----------+----------+----------+----------+-------------
|
||||
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | |
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
--------------------------+-----------+----------+----------+----------+-------------
|
||||
Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
|
||||
(3 rows)
|
||||
|
||||
SET timezone = 'EST';
|
||||
@ -166,11 +191,11 @@ SELECT *
|
||||
FROM PUBLIC."testNs"
|
||||
WHERE "timeCustom" >= TIMESTAMP '2009-11-10T23:00:00'
|
||||
AND "timeCustom" < TIMESTAMP '2009-11-12T01:00:00' ORDER BY "timeCustom" DESC;
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
---------------------+-----------+----------+----------+----------+-------------
|
||||
2009-11-10 23:00:02 | dev1 | 2.5 | 3 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 1 | |
|
||||
2009-11-10 23:00:00 | dev2 | 1.5 | 2 | |
|
||||
timeCustom | device_id | series_0 | series_1 | series_2 | series_bool
|
||||
--------------------------+-----------+----------+----------+----------+-------------
|
||||
Tue Nov 10 23:00:02 2009 | dev1 | 2.5 | 3 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 1 | |
|
||||
Tue Nov 10 23:00:00 2009 | dev2 | 1.5 | 2 | |
|
||||
(3 rows)
|
||||
|
||||
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)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-11-10 00:00:00 | 5.5
|
||||
2009-11-12 00:00:00 | 3
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Tue Nov 10 00:00:00 2009 | 5.5
|
||||
Thu Nov 12 00:00:00 2009 | 3
|
||||
(2 rows)
|
||||
|
||||
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)
|
||||
FROM PUBLIC."testNs" GROUP BY time ORDER BY time ASC LIMIT 2;
|
||||
time | sum
|
||||
---------------------+-----
|
||||
2009-11-09 19:00:00 | 5.5
|
||||
2009-11-11 19:00:00 | 3
|
||||
time | sum
|
||||
--------------------------+-----
|
||||
Mon Nov 09 19:00:00 2009 | 5.5
|
||||
Wed Nov 11 19:00:00 2009 | 3
|
||||
(2 rows)
|
||||
|
122
test/expected/update.out
Normal file
122
test/expected/update.out
Normal 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
16
test/runner.sh
Executable 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}\' $@
|
@ -16,7 +16,6 @@ SELECT add_node('test2' :: NAME, 'localhost');
|
||||
|
||||
\set ON_ERROR_STOP 0
|
||||
SELECT add_node('should_fail' :: NAME, 'localhost', -1);
|
||||
SELECT add_node('should_fail' :: NAME, '!@#€%&%&(%#&())', 5432);
|
||||
|
||||
\set ON_ERROR_STOP 1
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user