-
Notifications
You must be signed in to change notification settings - Fork 55
Stability Confirmation Methodology
Andrey Lepikhov edited this page May 19, 2022
·
9 revisions
To realize how stable is AQO code, before a release it should be tested according to the steps:
- make check, make check-world, of course.
- Stress test. See the bash script:
./configure --enable-tap-tests --enable-debug --enable-cassert >/dev/null
make -j8 >/dev/null
make check -C contrib/aqo
echo "shared_preload_libraries='aqo'" >/tmp/extra.config
echo "aqo.mode='intelligent'" >>/tmp/extra.config
NO_TEMP_INSTALL=1 TEMP_CONFIG=/tmp/extra.config EXTRA_REGRESS_OPTS="--load-extension=aqo" make -k check-world
Here the PostgreSQL instance with AQO installed stressed by all queries from standard tests. It wouldn't stop on error but we can analyse them later. Also we look for core files, of course ).
- Don't forget to test on 32-bit hardware: this code uses many numbers and a number conversions.
- Use sanitizers:
CPPFLAGS="-O0 -fsanitize=address -fsanitize=undefined -fno-sanitize-recover \
-fno-sanitize=nonnull-attribute -fno-sanitize=alignment -fstack-protector -Wall \
-Wno-unused-parameter -Wno-sign-compare" LDFLAGS='-fsanitize=address \
-fsanitize=undefined -static-libasan' \
./configure --enable-debug --enable-cassert --enable-tap-tests --with-libxml \
--with-icu >/dev/null && make >/dev/null && make -C contrib >/dev/null
make -C contrib/aqo check
- make installcheck in different modes of AQO.
- Join Order Benchmark - here we analyze speedup and convergency of an query execution time under control of AQO.
- sqlancer - be used then 'relocatable' feature will be implemented.