mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-16 18:43:18 +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
|
/sql/tests/unit/testoutputs.tmp
|
||||||
data/
|
/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 \
|
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
|
||||||
|
78
Makefile
78
Makefile
@ -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
|
|
||||||
|
61
README.md
61
README.md
@ -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
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
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
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";
|
@ -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
|
@ -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
|
@ -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
|
@ -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
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"
|
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
|
@ -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"
|
@ -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
|
@ -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)
|
||||||
|
|
@ -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
|
@ -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
|
@ -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
|
@ -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
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
|
\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
Loading…
x
Reference in New Issue
Block a user