blob: ae028a1fc9d553582d0943c8e4582a12fa7bf964 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title> </title>
<meta name="generator" content="VuePress 1.9.7">
<link rel="icon" href="/favicon.ico">
<script async="true" src="https://www.googletagmanager.com/gtag/js?id=G-5MM3J6X84E"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-5MM3J6X84E');</script>
<meta name="description" content=" ">
<meta name="Description" content="Apache IoTDB: Time Series Database for IoT">
<meta name="Keywords" content="TSDB, time series, time series database, IoTDB, IoT database, IoT data management,时序数据库, 时间序列管理, IoTDB, 物联网数据库, 实时数据库, 物联网数据管理, 物联网数据">
<meta name="baidu-site-verification" content="wfKETzB3OT">
<meta name="google-site-verification" content="mZWAoRY0yj_HAr-s47zHCGHzx5Ju-RVm5wDbPnwQYFo">
<link rel="preload" href="/assets/css/0.styles.11e03d19.css" as="style"><link rel="preload" href="/assets/js/app.f6f354da.js" as="script"><link rel="preload" href="/assets/js/3.c8384d0b.js" as="script"><link rel="preload" href="/assets/js/61.f2dbd155.js" as="script"><link rel="prefetch" href="/assets/js/10.54d4b62d.js"><link rel="prefetch" href="/assets/js/100.75cfd4d2.js"><link rel="prefetch" href="/assets/js/101.247f3c8c.js"><link rel="prefetch" href="/assets/js/102.689f13c2.js"><link rel="prefetch" href="/assets/js/103.0ef89e8b.js"><link rel="prefetch" href="/assets/js/104.ba3433b1.js"><link rel="prefetch" href="/assets/js/105.2723f886.js"><link rel="prefetch" href="/assets/js/106.48cd0f80.js"><link rel="prefetch" href="/assets/js/107.285a95ae.js"><link rel="prefetch" href="/assets/js/108.c41abc7f.js"><link rel="prefetch" href="/assets/js/109.685682cd.js"><link rel="prefetch" href="/assets/js/11.6822495c.js"><link rel="prefetch" href="/assets/js/110.5a811e30.js"><link rel="prefetch" href="/assets/js/111.bd0dd776.js"><link rel="prefetch" href="/assets/js/112.9260480a.js"><link rel="prefetch" href="/assets/js/113.2e506731.js"><link rel="prefetch" href="/assets/js/114.925dbfe6.js"><link rel="prefetch" href="/assets/js/115.b615cc85.js"><link rel="prefetch" href="/assets/js/116.b0fc0026.js"><link rel="prefetch" href="/assets/js/117.e32ff04f.js"><link rel="prefetch" href="/assets/js/118.46f63bb8.js"><link rel="prefetch" href="/assets/js/119.5f287db6.js"><link rel="prefetch" href="/assets/js/12.8a5e982c.js"><link rel="prefetch" href="/assets/js/120.cc13c650.js"><link rel="prefetch" href="/assets/js/121.8148c05b.js"><link rel="prefetch" href="/assets/js/122.a44234de.js"><link rel="prefetch" href="/assets/js/123.04992332.js"><link rel="prefetch" href="/assets/js/124.18977b68.js"><link rel="prefetch" href="/assets/js/125.9bb26e47.js"><link rel="prefetch" href="/assets/js/126.d95d93ec.js"><link rel="prefetch" href="/assets/js/127.f553bef7.js"><link rel="prefetch" href="/assets/js/128.10836b63.js"><link rel="prefetch" href="/assets/js/129.cb331dcc.js"><link rel="prefetch" href="/assets/js/13.df40e287.js"><link rel="prefetch" href="/assets/js/130.3e887cf0.js"><link rel="prefetch" href="/assets/js/131.39ef639b.js"><link rel="prefetch" href="/assets/js/132.ada17352.js"><link rel="prefetch" href="/assets/js/133.126eedaa.js"><link rel="prefetch" href="/assets/js/134.f8adb2e3.js"><link rel="prefetch" href="/assets/js/135.842d624c.js"><link rel="prefetch" href="/assets/js/136.f5aad425.js"><link rel="prefetch" href="/assets/js/137.096371f3.js"><link rel="prefetch" href="/assets/js/138.9d23d125.js"><link rel="prefetch" href="/assets/js/139.fb98d05e.js"><link rel="prefetch" href="/assets/js/14.7e33879d.js"><link rel="prefetch" href="/assets/js/140.e554f3ba.js"><link rel="prefetch" href="/assets/js/141.ef75dfbf.js"><link rel="prefetch" href="/assets/js/142.a68adae6.js"><link rel="prefetch" href="/assets/js/143.ba7aed8b.js"><link rel="prefetch" href="/assets/js/144.251c3f56.js"><link rel="prefetch" href="/assets/js/145.6e37e2d0.js"><link rel="prefetch" href="/assets/js/146.c19a276b.js"><link rel="prefetch" href="/assets/js/147.e86b47f9.js"><link rel="prefetch" href="/assets/js/148.0174f889.js"><link rel="prefetch" href="/assets/js/149.7d7609b9.js"><link rel="prefetch" href="/assets/js/15.53543a50.js"><link rel="prefetch" href="/assets/js/150.380ed4c2.js"><link rel="prefetch" href="/assets/js/151.1cb1df4f.js"><link rel="prefetch" href="/assets/js/152.d356f8a8.js"><link rel="prefetch" href="/assets/js/153.a94989f4.js"><link rel="prefetch" href="/assets/js/154.258c2659.js"><link rel="prefetch" href="/assets/js/155.9b65cf4f.js"><link rel="prefetch" href="/assets/js/156.58c8f07c.js"><link rel="prefetch" href="/assets/js/157.b7da7ecb.js"><link rel="prefetch" href="/assets/js/158.3bfa3695.js"><link rel="prefetch" href="/assets/js/159.fd8043d6.js"><link rel="prefetch" href="/assets/js/16.5dde640e.js"><link rel="prefetch" href="/assets/js/160.1e167ae6.js"><link rel="prefetch" href="/assets/js/161.9d2f3091.js"><link rel="prefetch" href="/assets/js/162.96cb3401.js"><link rel="prefetch" href="/assets/js/163.65b2cfe7.js"><link rel="prefetch" href="/assets/js/164.9d1843b5.js"><link rel="prefetch" href="/assets/js/165.8b4c3474.js"><link rel="prefetch" href="/assets/js/166.8b198c05.js"><link rel="prefetch" href="/assets/js/167.3ff9c8f0.js"><link rel="prefetch" href="/assets/js/168.9d47073f.js"><link rel="prefetch" href="/assets/js/169.9ab7d4c0.js"><link rel="prefetch" href="/assets/js/17.e18d8f9a.js"><link rel="prefetch" href="/assets/js/170.ea22ca30.js"><link rel="prefetch" href="/assets/js/171.cc401998.js"><link rel="prefetch" href="/assets/js/172.52b6d43c.js"><link rel="prefetch" href="/assets/js/173.ecc4995e.js"><link rel="prefetch" href="/assets/js/174.206d8ae5.js"><link rel="prefetch" href="/assets/js/175.ca048ab5.js"><link rel="prefetch" href="/assets/js/176.c71a1e8e.js"><link rel="prefetch" href="/assets/js/177.b969a3f6.js"><link rel="prefetch" href="/assets/js/178.83e13c47.js"><link rel="prefetch" href="/assets/js/179.b66e04f8.js"><link rel="prefetch" href="/assets/js/18.8c2382dd.js"><link rel="prefetch" href="/assets/js/180.71e4a602.js"><link rel="prefetch" href="/assets/js/181.37121891.js"><link rel="prefetch" href="/assets/js/182.b37706d3.js"><link rel="prefetch" href="/assets/js/183.7b9d83f8.js"><link rel="prefetch" href="/assets/js/184.19d030e9.js"><link rel="prefetch" href="/assets/js/185.0f62ead7.js"><link rel="prefetch" href="/assets/js/186.8b99111c.js"><link rel="prefetch" href="/assets/js/187.a1886fdf.js"><link rel="prefetch" href="/assets/js/188.39691aac.js"><link rel="prefetch" href="/assets/js/189.487b474d.js"><link rel="prefetch" href="/assets/js/19.2c7c5f02.js"><link rel="prefetch" href="/assets/js/190.8e6dd078.js"><link rel="prefetch" href="/assets/js/191.04a2e6fc.js"><link rel="prefetch" href="/assets/js/192.2c5965f6.js"><link rel="prefetch" href="/assets/js/193.98f3ebeb.js"><link rel="prefetch" href="/assets/js/194.a7523feb.js"><link rel="prefetch" href="/assets/js/195.88fb27d8.js"><link rel="prefetch" href="/assets/js/196.1cbde38c.js"><link rel="prefetch" href="/assets/js/197.1c77813e.js"><link rel="prefetch" href="/assets/js/198.02c20bcf.js"><link rel="prefetch" href="/assets/js/199.3e87cc99.js"><link rel="prefetch" href="/assets/js/20.4e58980a.js"><link rel="prefetch" href="/assets/js/200.5b1bda0c.js"><link rel="prefetch" href="/assets/js/201.dde60fda.js"><link rel="prefetch" href="/assets/js/202.878bfdd3.js"><link rel="prefetch" href="/assets/js/203.4bb38801.js"><link rel="prefetch" href="/assets/js/204.15464f81.js"><link rel="prefetch" href="/assets/js/205.cd90f0b2.js"><link rel="prefetch" href="/assets/js/206.98182b8e.js"><link rel="prefetch" href="/assets/js/207.65e7d0c1.js"><link rel="prefetch" href="/assets/js/208.b80ccbca.js"><link rel="prefetch" href="/assets/js/209.4a79c960.js"><link rel="prefetch" href="/assets/js/21.90e2637f.js"><link rel="prefetch" href="/assets/js/210.dd5bceb4.js"><link rel="prefetch" href="/assets/js/211.8de7ccf9.js"><link rel="prefetch" href="/assets/js/212.ea5e8d3a.js"><link rel="prefetch" href="/assets/js/213.a801ce3e.js"><link rel="prefetch" href="/assets/js/214.351e4d7e.js"><link rel="prefetch" href="/assets/js/215.55bce068.js"><link rel="prefetch" href="/assets/js/216.5a96b642.js"><link rel="prefetch" href="/assets/js/217.55ab9534.js"><link rel="prefetch" href="/assets/js/218.5b4474b6.js"><link rel="prefetch" href="/assets/js/219.7552326c.js"><link rel="prefetch" href="/assets/js/22.1fffa709.js"><link rel="prefetch" href="/assets/js/220.19ced483.js"><link rel="prefetch" href="/assets/js/221.c098fc06.js"><link rel="prefetch" href="/assets/js/222.3db70a03.js"><link rel="prefetch" href="/assets/js/223.1f2e5829.js"><link rel="prefetch" href="/assets/js/224.63476a18.js"><link rel="prefetch" href="/assets/js/225.da2d7dac.js"><link rel="prefetch" href="/assets/js/226.45f36185.js"><link rel="prefetch" href="/assets/js/227.80fed706.js"><link rel="prefetch" href="/assets/js/228.b4067edd.js"><link rel="prefetch" href="/assets/js/229.472d4eed.js"><link rel="prefetch" href="/assets/js/23.5a3e58e5.js"><link rel="prefetch" href="/assets/js/230.4e162af5.js"><link rel="prefetch" href="/assets/js/231.f64c6b39.js"><link rel="prefetch" href="/assets/js/232.9f184aec.js"><link rel="prefetch" href="/assets/js/233.99e988bd.js"><link rel="prefetch" href="/assets/js/234.e37c8e4e.js"><link rel="prefetch" href="/assets/js/235.8ead94e3.js"><link rel="prefetch" href="/assets/js/236.338ef0d8.js"><link rel="prefetch" href="/assets/js/237.e2467a79.js"><link rel="prefetch" href="/assets/js/238.3f1983f5.js"><link rel="prefetch" href="/assets/js/239.f2ddd3d3.js"><link rel="prefetch" href="/assets/js/24.4852a2d6.js"><link rel="prefetch" href="/assets/js/240.920f0fd7.js"><link rel="prefetch" href="/assets/js/241.6dddceaa.js"><link rel="prefetch" href="/assets/js/242.5c04b7f2.js"><link rel="prefetch" href="/assets/js/243.40ff2ce9.js"><link rel="prefetch" href="/assets/js/244.9e0ca90b.js"><link rel="prefetch" href="/assets/js/245.63c46318.js"><link rel="prefetch" href="/assets/js/246.8756fd80.js"><link rel="prefetch" href="/assets/js/247.ac54ecb2.js"><link rel="prefetch" href="/assets/js/248.837f30a0.js"><link rel="prefetch" href="/assets/js/249.14ae30e7.js"><link rel="prefetch" href="/assets/js/25.57e15cd9.js"><link rel="prefetch" href="/assets/js/250.876b7166.js"><link rel="prefetch" href="/assets/js/251.9c8de762.js"><link rel="prefetch" href="/assets/js/252.433377c3.js"><link rel="prefetch" href="/assets/js/253.fbe5160e.js"><link rel="prefetch" href="/assets/js/254.97f9d2bb.js"><link rel="prefetch" href="/assets/js/255.d504f675.js"><link rel="prefetch" href="/assets/js/256.cacf0e2d.js"><link rel="prefetch" href="/assets/js/257.a5838a94.js"><link rel="prefetch" href="/assets/js/258.121c1c81.js"><link rel="prefetch" href="/assets/js/259.3dd3fdda.js"><link rel="prefetch" href="/assets/js/26.6a90e3b6.js"><link rel="prefetch" href="/assets/js/260.b6e19a18.js"><link rel="prefetch" href="/assets/js/261.d125be84.js"><link rel="prefetch" href="/assets/js/262.a4f029c5.js"><link rel="prefetch" href="/assets/js/263.9435e657.js"><link rel="prefetch" href="/assets/js/264.95a79f29.js"><link rel="prefetch" href="/assets/js/265.786031a2.js"><link rel="prefetch" href="/assets/js/266.f020b5a4.js"><link rel="prefetch" href="/assets/js/267.3310d39e.js"><link rel="prefetch" href="/assets/js/268.1dab8c7a.js"><link rel="prefetch" href="/assets/js/269.1abb5d15.js"><link rel="prefetch" href="/assets/js/27.a2c72bfa.js"><link rel="prefetch" href="/assets/js/270.54d7e58f.js"><link rel="prefetch" href="/assets/js/271.3867f734.js"><link rel="prefetch" href="/assets/js/272.9c098ff2.js"><link rel="prefetch" href="/assets/js/273.15913103.js"><link rel="prefetch" href="/assets/js/274.b4f2d9fb.js"><link rel="prefetch" href="/assets/js/275.b28dc2a9.js"><link rel="prefetch" href="/assets/js/276.da3eef75.js"><link rel="prefetch" href="/assets/js/277.463cef90.js"><link rel="prefetch" href="/assets/js/278.60b060ba.js"><link rel="prefetch" href="/assets/js/279.8aa74364.js"><link rel="prefetch" href="/assets/js/28.27fd0454.js"><link rel="prefetch" href="/assets/js/280.fd09cee8.js"><link rel="prefetch" href="/assets/js/281.4b16ad3d.js"><link rel="prefetch" href="/assets/js/282.1620dbe2.js"><link rel="prefetch" href="/assets/js/283.6896b13b.js"><link rel="prefetch" href="/assets/js/284.9a91c487.js"><link rel="prefetch" href="/assets/js/285.2edd722e.js"><link rel="prefetch" href="/assets/js/286.014b9458.js"><link rel="prefetch" href="/assets/js/287.bafadcf7.js"><link rel="prefetch" href="/assets/js/288.aecd7da7.js"><link rel="prefetch" href="/assets/js/289.e189052c.js"><link rel="prefetch" href="/assets/js/29.d0a835c2.js"><link rel="prefetch" href="/assets/js/290.997a5770.js"><link rel="prefetch" href="/assets/js/291.1285a8c9.js"><link rel="prefetch" href="/assets/js/292.03aa0255.js"><link rel="prefetch" href="/assets/js/293.5d2c6b3c.js"><link rel="prefetch" href="/assets/js/294.055e5c28.js"><link rel="prefetch" href="/assets/js/295.2c5797fd.js"><link rel="prefetch" href="/assets/js/296.134ce81a.js"><link rel="prefetch" href="/assets/js/297.a3af51ca.js"><link rel="prefetch" href="/assets/js/298.de9a936b.js"><link rel="prefetch" href="/assets/js/299.7dbb4a60.js"><link rel="prefetch" href="/assets/js/30.19aa62af.js"><link rel="prefetch" href="/assets/js/300.8adce705.js"><link rel="prefetch" href="/assets/js/301.504e6834.js"><link rel="prefetch" href="/assets/js/302.5f3a07a0.js"><link rel="prefetch" href="/assets/js/303.ebbeebe5.js"><link rel="prefetch" href="/assets/js/304.b8345160.js"><link rel="prefetch" href="/assets/js/305.76714e7f.js"><link rel="prefetch" href="/assets/js/306.5a581530.js"><link rel="prefetch" href="/assets/js/307.e769546c.js"><link rel="prefetch" href="/assets/js/308.2938acba.js"><link rel="prefetch" href="/assets/js/309.382ff2ce.js"><link rel="prefetch" href="/assets/js/31.bcb37260.js"><link rel="prefetch" href="/assets/js/310.b5d8ff1c.js"><link rel="prefetch" href="/assets/js/311.51d85cdf.js"><link rel="prefetch" href="/assets/js/312.6e33b047.js"><link rel="prefetch" href="/assets/js/313.2cc143bc.js"><link rel="prefetch" href="/assets/js/314.c311471e.js"><link rel="prefetch" href="/assets/js/315.fd3c394d.js"><link rel="prefetch" href="/assets/js/316.52e36dda.js"><link rel="prefetch" href="/assets/js/317.8b20297d.js"><link rel="prefetch" href="/assets/js/318.754116b0.js"><link rel="prefetch" href="/assets/js/319.08ef0230.js"><link rel="prefetch" href="/assets/js/32.eb4ee17f.js"><link rel="prefetch" href="/assets/js/320.4cd75807.js"><link rel="prefetch" href="/assets/js/321.95c58f4d.js"><link rel="prefetch" href="/assets/js/322.b3afbf42.js"><link rel="prefetch" href="/assets/js/323.4e05a086.js"><link rel="prefetch" href="/assets/js/324.ccc8fa07.js"><link rel="prefetch" href="/assets/js/325.189df9f6.js"><link rel="prefetch" href="/assets/js/326.de60b637.js"><link rel="prefetch" href="/assets/js/327.13be624b.js"><link rel="prefetch" href="/assets/js/328.81743886.js"><link rel="prefetch" href="/assets/js/329.7324f096.js"><link rel="prefetch" href="/assets/js/33.393ab612.js"><link rel="prefetch" href="/assets/js/330.78a1f197.js"><link rel="prefetch" href="/assets/js/331.1cccdefe.js"><link rel="prefetch" href="/assets/js/332.94edf4a2.js"><link rel="prefetch" href="/assets/js/333.8b6e11c0.js"><link rel="prefetch" href="/assets/js/334.0ae6f29e.js"><link rel="prefetch" href="/assets/js/335.7a4b2457.js"><link rel="prefetch" href="/assets/js/336.0869a3dc.js"><link rel="prefetch" href="/assets/js/337.68152c73.js"><link rel="prefetch" href="/assets/js/338.0be01822.js"><link rel="prefetch" href="/assets/js/339.8ea3acb6.js"><link rel="prefetch" href="/assets/js/34.e08df9fb.js"><link rel="prefetch" href="/assets/js/340.c16ce98d.js"><link rel="prefetch" href="/assets/js/341.312a70a4.js"><link rel="prefetch" href="/assets/js/342.a3b9944a.js"><link rel="prefetch" href="/assets/js/343.4751bfb5.js"><link rel="prefetch" href="/assets/js/344.997597db.js"><link rel="prefetch" href="/assets/js/345.8fd9ab0c.js"><link rel="prefetch" href="/assets/js/346.01a0c12f.js"><link rel="prefetch" href="/assets/js/347.38271a9e.js"><link rel="prefetch" href="/assets/js/348.850b4d05.js"><link rel="prefetch" href="/assets/js/349.553fb340.js"><link rel="prefetch" href="/assets/js/35.3469233d.js"><link rel="prefetch" href="/assets/js/350.585384b2.js"><link rel="prefetch" href="/assets/js/351.f03f609a.js"><link rel="prefetch" href="/assets/js/352.7930d53e.js"><link rel="prefetch" href="/assets/js/353.fbe4609f.js"><link rel="prefetch" href="/assets/js/354.68e02801.js"><link rel="prefetch" href="/assets/js/355.3bd6cec1.js"><link rel="prefetch" href="/assets/js/356.0e7c650a.js"><link rel="prefetch" href="/assets/js/357.0a8a74e9.js"><link rel="prefetch" href="/assets/js/358.23e56d90.js"><link rel="prefetch" href="/assets/js/359.94bc1a90.js"><link rel="prefetch" href="/assets/js/36.7e29e738.js"><link rel="prefetch" href="/assets/js/360.4d0da743.js"><link rel="prefetch" href="/assets/js/361.79f5550f.js"><link rel="prefetch" href="/assets/js/362.a58499de.js"><link rel="prefetch" href="/assets/js/363.5f969dfa.js"><link rel="prefetch" href="/assets/js/364.bfdf5169.js"><link rel="prefetch" href="/assets/js/365.8343e355.js"><link rel="prefetch" href="/assets/js/366.aa1b9d9b.js"><link rel="prefetch" href="/assets/js/367.54cc6ead.js"><link rel="prefetch" href="/assets/js/368.393542ba.js"><link rel="prefetch" href="/assets/js/369.244d7389.js"><link rel="prefetch" href="/assets/js/37.f6c37faf.js"><link rel="prefetch" href="/assets/js/370.8f1f6214.js"><link rel="prefetch" href="/assets/js/371.42504041.js"><link rel="prefetch" href="/assets/js/372.e02cbee9.js"><link rel="prefetch" href="/assets/js/373.825b88d9.js"><link rel="prefetch" href="/assets/js/374.590388ee.js"><link rel="prefetch" href="/assets/js/375.065f70fc.js"><link rel="prefetch" href="/assets/js/376.ec4b953f.js"><link rel="prefetch" href="/assets/js/377.bffdafa8.js"><link rel="prefetch" href="/assets/js/378.1190248c.js"><link rel="prefetch" href="/assets/js/379.3dc35af8.js"><link rel="prefetch" href="/assets/js/38.de35ec10.js"><link rel="prefetch" href="/assets/js/380.f6fbfe10.js"><link rel="prefetch" href="/assets/js/381.fcdc1c7d.js"><link rel="prefetch" href="/assets/js/382.5dbb1fcb.js"><link rel="prefetch" href="/assets/js/383.c75c7f4f.js"><link rel="prefetch" href="/assets/js/384.96a6a902.js"><link rel="prefetch" href="/assets/js/385.1a46587a.js"><link rel="prefetch" href="/assets/js/386.91018632.js"><link rel="prefetch" href="/assets/js/387.ae2de6a2.js"><link rel="prefetch" href="/assets/js/388.781dbf10.js"><link rel="prefetch" href="/assets/js/389.8e525a30.js"><link rel="prefetch" href="/assets/js/39.67659022.js"><link rel="prefetch" href="/assets/js/390.81d0e40f.js"><link rel="prefetch" href="/assets/js/391.f4fdfcd8.js"><link rel="prefetch" href="/assets/js/392.af553655.js"><link rel="prefetch" href="/assets/js/393.abc51ca5.js"><link rel="prefetch" href="/assets/js/394.e0576055.js"><link rel="prefetch" href="/assets/js/395.58dbef29.js"><link rel="prefetch" href="/assets/js/396.31163637.js"><link rel="prefetch" href="/assets/js/397.10e3983c.js"><link rel="prefetch" href="/assets/js/398.8a26dbce.js"><link rel="prefetch" href="/assets/js/399.9c2ae177.js"><link rel="prefetch" href="/assets/js/4.d36f1b75.js"><link rel="prefetch" href="/assets/js/40.0ecc4770.js"><link rel="prefetch" href="/assets/js/400.64ddc881.js"><link rel="prefetch" href="/assets/js/401.ba014588.js"><link rel="prefetch" href="/assets/js/402.8981fbfd.js"><link rel="prefetch" href="/assets/js/403.2355fdbf.js"><link rel="prefetch" href="/assets/js/404.e93d6844.js"><link rel="prefetch" href="/assets/js/405.970d4ad6.js"><link rel="prefetch" href="/assets/js/406.25772ddd.js"><link rel="prefetch" href="/assets/js/407.ec4ce91e.js"><link rel="prefetch" href="/assets/js/408.e1a85a73.js"><link rel="prefetch" href="/assets/js/409.49a03d7b.js"><link rel="prefetch" href="/assets/js/41.4f5d71cc.js"><link rel="prefetch" href="/assets/js/410.58cbe556.js"><link rel="prefetch" href="/assets/js/411.e40be38d.js"><link rel="prefetch" href="/assets/js/412.92e98667.js"><link rel="prefetch" href="/assets/js/413.23736b49.js"><link rel="prefetch" href="/assets/js/414.ccab8aa2.js"><link rel="prefetch" href="/assets/js/415.c1928561.js"><link rel="prefetch" href="/assets/js/416.adca5aca.js"><link rel="prefetch" href="/assets/js/417.8c828129.js"><link rel="prefetch" href="/assets/js/418.386241f3.js"><link rel="prefetch" href="/assets/js/419.d82eeddb.js"><link rel="prefetch" href="/assets/js/42.abc01b89.js"><link rel="prefetch" href="/assets/js/420.f9fc5de7.js"><link rel="prefetch" href="/assets/js/421.988dd2c3.js"><link rel="prefetch" href="/assets/js/422.58bc3ee6.js"><link rel="prefetch" href="/assets/js/423.7df7c271.js"><link rel="prefetch" href="/assets/js/424.c08b9a30.js"><link rel="prefetch" href="/assets/js/425.dace73eb.js"><link rel="prefetch" href="/assets/js/426.406d7b08.js"><link rel="prefetch" href="/assets/js/427.21a3e724.js"><link rel="prefetch" href="/assets/js/428.0832df5b.js"><link rel="prefetch" href="/assets/js/429.2743346f.js"><link rel="prefetch" href="/assets/js/43.31ec3f3b.js"><link rel="prefetch" href="/assets/js/430.ab401d3a.js"><link rel="prefetch" href="/assets/js/431.c4d17361.js"><link rel="prefetch" href="/assets/js/432.c1f24d86.js"><link rel="prefetch" href="/assets/js/433.dc4db07c.js"><link rel="prefetch" href="/assets/js/434.6e9ae1a5.js"><link rel="prefetch" href="/assets/js/435.aea9c1d6.js"><link rel="prefetch" href="/assets/js/436.c34b9cae.js"><link rel="prefetch" href="/assets/js/437.e1d8021a.js"><link rel="prefetch" href="/assets/js/438.b6a75c16.js"><link rel="prefetch" href="/assets/js/439.4adbc584.js"><link rel="prefetch" href="/assets/js/44.8e3d116d.js"><link rel="prefetch" href="/assets/js/440.2cc67647.js"><link rel="prefetch" href="/assets/js/441.0f527efe.js"><link rel="prefetch" href="/assets/js/442.bd24ae9a.js"><link rel="prefetch" href="/assets/js/443.d38f1431.js"><link rel="prefetch" href="/assets/js/444.4288b683.js"><link rel="prefetch" href="/assets/js/445.dc3ad557.js"><link rel="prefetch" href="/assets/js/446.17bbb80f.js"><link rel="prefetch" href="/assets/js/447.635e8dd2.js"><link rel="prefetch" href="/assets/js/448.d80ef388.js"><link rel="prefetch" href="/assets/js/449.32035dcb.js"><link rel="prefetch" href="/assets/js/45.c2f47b80.js"><link rel="prefetch" href="/assets/js/450.01fd15d2.js"><link rel="prefetch" href="/assets/js/451.72f84a38.js"><link rel="prefetch" href="/assets/js/452.b7cc7d03.js"><link rel="prefetch" href="/assets/js/453.233f5cb5.js"><link rel="prefetch" href="/assets/js/454.ce889cfd.js"><link rel="prefetch" href="/assets/js/455.465ffe7e.js"><link rel="prefetch" href="/assets/js/456.124c9e20.js"><link rel="prefetch" href="/assets/js/457.e24710f9.js"><link rel="prefetch" href="/assets/js/458.5d17a9f0.js"><link rel="prefetch" href="/assets/js/459.3b77f6c3.js"><link rel="prefetch" href="/assets/js/46.cdde7cab.js"><link rel="prefetch" href="/assets/js/460.3ff01cd6.js"><link rel="prefetch" href="/assets/js/461.505a9c6b.js"><link rel="prefetch" href="/assets/js/462.97064d36.js"><link rel="prefetch" href="/assets/js/463.105bf05b.js"><link rel="prefetch" href="/assets/js/464.370274e9.js"><link rel="prefetch" href="/assets/js/465.08db717a.js"><link rel="prefetch" href="/assets/js/466.2937ee91.js"><link rel="prefetch" href="/assets/js/467.08489299.js"><link rel="prefetch" href="/assets/js/468.cb870a45.js"><link rel="prefetch" href="/assets/js/469.d8d98acb.js"><link rel="prefetch" href="/assets/js/47.6bd453c6.js"><link rel="prefetch" href="/assets/js/470.e173cc7b.js"><link rel="prefetch" href="/assets/js/471.eba4850c.js"><link rel="prefetch" href="/assets/js/472.640fae49.js"><link rel="prefetch" href="/assets/js/473.b55674b3.js"><link rel="prefetch" href="/assets/js/474.282f9713.js"><link rel="prefetch" href="/assets/js/475.2b667d88.js"><link rel="prefetch" href="/assets/js/476.368e3185.js"><link rel="prefetch" href="/assets/js/477.33e7b216.js"><link rel="prefetch" href="/assets/js/478.8be23a97.js"><link rel="prefetch" href="/assets/js/479.38cd4cb4.js"><link rel="prefetch" href="/assets/js/48.2536cf0e.js"><link rel="prefetch" href="/assets/js/480.1c491a7f.js"><link rel="prefetch" href="/assets/js/481.d47087b0.js"><link rel="prefetch" href="/assets/js/482.9ebdb18d.js"><link rel="prefetch" href="/assets/js/483.e075b70d.js"><link rel="prefetch" href="/assets/js/484.319f0f88.js"><link rel="prefetch" href="/assets/js/485.d9727137.js"><link rel="prefetch" href="/assets/js/486.af4ecded.js"><link rel="prefetch" href="/assets/js/487.ecf55875.js"><link rel="prefetch" href="/assets/js/488.92b571a9.js"><link rel="prefetch" href="/assets/js/489.0f6023c1.js"><link rel="prefetch" href="/assets/js/49.9541b826.js"><link rel="prefetch" href="/assets/js/490.f766e260.js"><link rel="prefetch" href="/assets/js/491.fc6cd8a6.js"><link rel="prefetch" href="/assets/js/492.b60f0611.js"><link rel="prefetch" href="/assets/js/493.7a7189a7.js"><link rel="prefetch" href="/assets/js/494.04bfca5d.js"><link rel="prefetch" href="/assets/js/495.463a27ee.js"><link rel="prefetch" href="/assets/js/496.d9297bf4.js"><link rel="prefetch" href="/assets/js/497.fb3df3f8.js"><link rel="prefetch" href="/assets/js/498.12e8ed9d.js"><link rel="prefetch" href="/assets/js/499.0063c485.js"><link rel="prefetch" href="/assets/js/5.a0359554.js"><link rel="prefetch" href="/assets/js/50.6bf6ce2c.js"><link rel="prefetch" href="/assets/js/500.f480bab4.js"><link rel="prefetch" href="/assets/js/501.4898cc4e.js"><link rel="prefetch" href="/assets/js/502.6f039e33.js"><link rel="prefetch" href="/assets/js/503.5f721a57.js"><link rel="prefetch" href="/assets/js/504.12248f5f.js"><link rel="prefetch" href="/assets/js/505.2d656810.js"><link rel="prefetch" href="/assets/js/506.6fd31534.js"><link rel="prefetch" href="/assets/js/507.462c2319.js"><link rel="prefetch" href="/assets/js/508.2cca8926.js"><link rel="prefetch" href="/assets/js/509.c3d59ef2.js"><link rel="prefetch" href="/assets/js/51.36ebf098.js"><link rel="prefetch" href="/assets/js/510.198f46ed.js"><link rel="prefetch" href="/assets/js/511.20ecce31.js"><link rel="prefetch" href="/assets/js/512.c08e0f28.js"><link rel="prefetch" href="/assets/js/513.e669b0a8.js"><link rel="prefetch" href="/assets/js/514.31bc688e.js"><link rel="prefetch" href="/assets/js/515.c8734ef3.js"><link rel="prefetch" href="/assets/js/516.7a1a1237.js"><link rel="prefetch" href="/assets/js/517.b8b9ae6d.js"><link rel="prefetch" href="/assets/js/518.516a8bb5.js"><link rel="prefetch" href="/assets/js/519.e6ce35ef.js"><link rel="prefetch" href="/assets/js/52.04cb62ae.js"><link rel="prefetch" href="/assets/js/520.81f2848c.js"><link rel="prefetch" href="/assets/js/521.74f9feaf.js"><link rel="prefetch" href="/assets/js/522.acdc5789.js"><link rel="prefetch" href="/assets/js/523.f21c16b4.js"><link rel="prefetch" href="/assets/js/524.5e3c766f.js"><link rel="prefetch" href="/assets/js/525.2bc5eea1.js"><link rel="prefetch" href="/assets/js/526.2803a6a2.js"><link rel="prefetch" href="/assets/js/527.c52888c1.js"><link rel="prefetch" href="/assets/js/528.9f0a4faa.js"><link rel="prefetch" href="/assets/js/529.464f03d6.js"><link rel="prefetch" href="/assets/js/53.8b373f6d.js"><link rel="prefetch" href="/assets/js/530.e24c9d71.js"><link rel="prefetch" href="/assets/js/531.e808b4fe.js"><link rel="prefetch" href="/assets/js/532.f04386d8.js"><link rel="prefetch" href="/assets/js/533.8a6378f7.js"><link rel="prefetch" href="/assets/js/534.1c94681c.js"><link rel="prefetch" href="/assets/js/535.eddfe828.js"><link rel="prefetch" href="/assets/js/536.49f09694.js"><link rel="prefetch" href="/assets/js/537.12a1ca28.js"><link rel="prefetch" href="/assets/js/538.d4c22898.js"><link rel="prefetch" href="/assets/js/539.e3f13aac.js"><link rel="prefetch" href="/assets/js/54.8699767b.js"><link rel="prefetch" href="/assets/js/540.b0ef8f49.js"><link rel="prefetch" href="/assets/js/541.af72c721.js"><link rel="prefetch" href="/assets/js/542.3ae02c6a.js"><link rel="prefetch" href="/assets/js/543.cc5e8dd7.js"><link rel="prefetch" href="/assets/js/544.20d0448d.js"><link rel="prefetch" href="/assets/js/545.36bea72b.js"><link rel="prefetch" href="/assets/js/546.964dd72b.js"><link rel="prefetch" href="/assets/js/547.3b619720.js"><link rel="prefetch" href="/assets/js/548.6a02a019.js"><link rel="prefetch" href="/assets/js/549.0b45a71d.js"><link rel="prefetch" href="/assets/js/55.a15d86d7.js"><link rel="prefetch" href="/assets/js/550.9cb9f6a7.js"><link rel="prefetch" href="/assets/js/551.7eb493d9.js"><link rel="prefetch" href="/assets/js/552.8266fe8b.js"><link rel="prefetch" href="/assets/js/553.71ef4a00.js"><link rel="prefetch" href="/assets/js/554.e93e2a67.js"><link rel="prefetch" href="/assets/js/555.946efdee.js"><link rel="prefetch" href="/assets/js/556.765b320f.js"><link rel="prefetch" href="/assets/js/557.fde775d6.js"><link rel="prefetch" href="/assets/js/558.44e289f4.js"><link rel="prefetch" href="/assets/js/559.68f6dd96.js"><link rel="prefetch" href="/assets/js/56.9887d223.js"><link rel="prefetch" href="/assets/js/560.b250a84c.js"><link rel="prefetch" href="/assets/js/561.7c5485ea.js"><link rel="prefetch" href="/assets/js/562.c5400f50.js"><link rel="prefetch" href="/assets/js/563.61d0598b.js"><link rel="prefetch" href="/assets/js/564.ff02e7ad.js"><link rel="prefetch" href="/assets/js/565.a0b3f081.js"><link rel="prefetch" href="/assets/js/566.e7f7adea.js"><link rel="prefetch" href="/assets/js/567.23bbcac4.js"><link rel="prefetch" href="/assets/js/568.d2913457.js"><link rel="prefetch" href="/assets/js/569.892e6d67.js"><link rel="prefetch" href="/assets/js/57.f638c0fe.js"><link rel="prefetch" href="/assets/js/570.62809785.js"><link rel="prefetch" href="/assets/js/571.2abb1330.js"><link rel="prefetch" href="/assets/js/572.740821db.js"><link rel="prefetch" href="/assets/js/573.5cbd801a.js"><link rel="prefetch" href="/assets/js/574.c9dbcc72.js"><link rel="prefetch" href="/assets/js/575.33821608.js"><link rel="prefetch" href="/assets/js/576.26cac448.js"><link rel="prefetch" href="/assets/js/577.bf607dc5.js"><link rel="prefetch" href="/assets/js/578.d192e021.js"><link rel="prefetch" href="/assets/js/579.a9858f3e.js"><link rel="prefetch" href="/assets/js/58.93c8cccb.js"><link rel="prefetch" href="/assets/js/580.a6da57ad.js"><link rel="prefetch" href="/assets/js/581.64396e3c.js"><link rel="prefetch" href="/assets/js/582.e3ae3ba8.js"><link rel="prefetch" href="/assets/js/583.0d312695.js"><link rel="prefetch" href="/assets/js/584.6c3b1a76.js"><link rel="prefetch" href="/assets/js/585.af606e9e.js"><link rel="prefetch" href="/assets/js/586.09b0d2a4.js"><link rel="prefetch" href="/assets/js/587.e422004f.js"><link rel="prefetch" href="/assets/js/588.30eb91c9.js"><link rel="prefetch" href="/assets/js/589.aa85e3dd.js"><link rel="prefetch" href="/assets/js/59.6655900e.js"><link rel="prefetch" href="/assets/js/590.a5cc9f57.js"><link rel="prefetch" href="/assets/js/591.88dd1661.js"><link rel="prefetch" href="/assets/js/592.b17bdedd.js"><link rel="prefetch" href="/assets/js/593.fed12631.js"><link rel="prefetch" href="/assets/js/594.a722d2f6.js"><link rel="prefetch" href="/assets/js/595.738c1bd8.js"><link rel="prefetch" href="/assets/js/596.73619b57.js"><link rel="prefetch" href="/assets/js/597.fdd9c62b.js"><link rel="prefetch" href="/assets/js/598.839815ae.js"><link rel="prefetch" href="/assets/js/599.a8315a4d.js"><link rel="prefetch" href="/assets/js/6.c1cecd08.js"><link rel="prefetch" href="/assets/js/60.d1f24686.js"><link rel="prefetch" href="/assets/js/600.33d165e1.js"><link rel="prefetch" href="/assets/js/601.186d2150.js"><link rel="prefetch" href="/assets/js/602.0cbc97f1.js"><link rel="prefetch" href="/assets/js/603.339d7088.js"><link rel="prefetch" href="/assets/js/604.025d32e0.js"><link rel="prefetch" href="/assets/js/605.847c6a5d.js"><link rel="prefetch" href="/assets/js/606.f556d4a4.js"><link rel="prefetch" href="/assets/js/607.31e68afd.js"><link rel="prefetch" href="/assets/js/608.fb929ee5.js"><link rel="prefetch" href="/assets/js/609.332497d8.js"><link rel="prefetch" href="/assets/js/610.a4020de2.js"><link rel="prefetch" href="/assets/js/611.bd6e4880.js"><link rel="prefetch" href="/assets/js/612.82c0db75.js"><link rel="prefetch" href="/assets/js/613.3c57a342.js"><link rel="prefetch" href="/assets/js/614.2b8481dc.js"><link rel="prefetch" href="/assets/js/615.9b9444df.js"><link rel="prefetch" href="/assets/js/616.914d8b81.js"><link rel="prefetch" href="/assets/js/617.367af398.js"><link rel="prefetch" href="/assets/js/618.d14e30fa.js"><link rel="prefetch" href="/assets/js/619.8ae4d18e.js"><link rel="prefetch" href="/assets/js/62.6f1926e7.js"><link rel="prefetch" href="/assets/js/620.04fd0206.js"><link rel="prefetch" href="/assets/js/621.4fdac271.js"><link rel="prefetch" href="/assets/js/622.b08914ad.js"><link rel="prefetch" href="/assets/js/623.7b23fae2.js"><link rel="prefetch" href="/assets/js/624.954573da.js"><link rel="prefetch" href="/assets/js/625.1d77ef50.js"><link rel="prefetch" href="/assets/js/626.f9927599.js"><link rel="prefetch" href="/assets/js/627.be1c3d6f.js"><link rel="prefetch" href="/assets/js/628.3f01baaa.js"><link rel="prefetch" href="/assets/js/629.5a727663.js"><link rel="prefetch" href="/assets/js/63.7b1ed57f.js"><link rel="prefetch" href="/assets/js/630.7a7c74ff.js"><link rel="prefetch" href="/assets/js/631.7499e641.js"><link rel="prefetch" href="/assets/js/632.ff3912ca.js"><link rel="prefetch" href="/assets/js/633.a13c2c6e.js"><link rel="prefetch" href="/assets/js/634.842f3c3c.js"><link rel="prefetch" href="/assets/js/635.30a0682a.js"><link rel="prefetch" href="/assets/js/636.61845b2f.js"><link rel="prefetch" href="/assets/js/637.8ba373f2.js"><link rel="prefetch" href="/assets/js/638.f8396b71.js"><link rel="prefetch" href="/assets/js/639.abf22638.js"><link rel="prefetch" href="/assets/js/64.10c35136.js"><link rel="prefetch" href="/assets/js/640.d26862b8.js"><link rel="prefetch" href="/assets/js/641.808408ec.js"><link rel="prefetch" href="/assets/js/642.4224b363.js"><link rel="prefetch" href="/assets/js/643.72d8d909.js"><link rel="prefetch" href="/assets/js/644.5452f337.js"><link rel="prefetch" href="/assets/js/645.5a50508a.js"><link rel="prefetch" href="/assets/js/646.9269a197.js"><link rel="prefetch" href="/assets/js/647.acb8b6c8.js"><link rel="prefetch" href="/assets/js/648.2bfec0a5.js"><link rel="prefetch" href="/assets/js/649.71932b8f.js"><link rel="prefetch" href="/assets/js/65.4cb0c341.js"><link rel="prefetch" href="/assets/js/650.79e130de.js"><link rel="prefetch" href="/assets/js/651.d5b8ace4.js"><link rel="prefetch" href="/assets/js/652.b51e5694.js"><link rel="prefetch" href="/assets/js/653.20e55050.js"><link rel="prefetch" href="/assets/js/654.c5e1a2b7.js"><link rel="prefetch" href="/assets/js/655.b8e4d0f1.js"><link rel="prefetch" href="/assets/js/656.23c0b684.js"><link rel="prefetch" href="/assets/js/657.5f5bdb63.js"><link rel="prefetch" href="/assets/js/658.aa8a9563.js"><link rel="prefetch" href="/assets/js/659.1aefcc20.js"><link rel="prefetch" href="/assets/js/66.6a4ce363.js"><link rel="prefetch" href="/assets/js/660.3cf66361.js"><link rel="prefetch" href="/assets/js/661.0471580b.js"><link rel="prefetch" href="/assets/js/662.400a8bec.js"><link rel="prefetch" href="/assets/js/663.8bcdbcd7.js"><link rel="prefetch" href="/assets/js/664.3c206c47.js"><link rel="prefetch" href="/assets/js/665.8d1ea731.js"><link rel="prefetch" href="/assets/js/666.4c57f3fd.js"><link rel="prefetch" href="/assets/js/667.715a68ec.js"><link rel="prefetch" href="/assets/js/668.137f59b6.js"><link rel="prefetch" href="/assets/js/669.97549c0a.js"><link rel="prefetch" href="/assets/js/67.4c0cede0.js"><link rel="prefetch" href="/assets/js/670.78446bb7.js"><link rel="prefetch" href="/assets/js/671.055f66fb.js"><link rel="prefetch" href="/assets/js/672.f156575b.js"><link rel="prefetch" href="/assets/js/673.408c8954.js"><link rel="prefetch" href="/assets/js/674.70f4eb3e.js"><link rel="prefetch" href="/assets/js/675.834ad7d1.js"><link rel="prefetch" href="/assets/js/676.316e11e8.js"><link rel="prefetch" href="/assets/js/677.6896466c.js"><link rel="prefetch" href="/assets/js/678.8ef8a404.js"><link rel="prefetch" href="/assets/js/679.1115b562.js"><link rel="prefetch" href="/assets/js/68.afc250f4.js"><link rel="prefetch" href="/assets/js/680.fcb5be6c.js"><link rel="prefetch" href="/assets/js/681.62b5188c.js"><link rel="prefetch" href="/assets/js/682.088dd4f4.js"><link rel="prefetch" href="/assets/js/683.cde92cf6.js"><link rel="prefetch" href="/assets/js/684.b7f9c122.js"><link rel="prefetch" href="/assets/js/685.43aaf36a.js"><link rel="prefetch" href="/assets/js/686.fa61043b.js"><link rel="prefetch" href="/assets/js/687.bc3a26a6.js"><link rel="prefetch" href="/assets/js/688.82393e9b.js"><link rel="prefetch" href="/assets/js/689.23b629ce.js"><link rel="prefetch" href="/assets/js/69.c0e83b20.js"><link rel="prefetch" href="/assets/js/690.66423b8f.js"><link rel="prefetch" href="/assets/js/691.45b3154a.js"><link rel="prefetch" href="/assets/js/692.36691c5f.js"><link rel="prefetch" href="/assets/js/693.19dfaf9e.js"><link rel="prefetch" href="/assets/js/694.b7c69a8e.js"><link rel="prefetch" href="/assets/js/695.e11bf242.js"><link rel="prefetch" href="/assets/js/696.5f600401.js"><link rel="prefetch" href="/assets/js/697.48afd4de.js"><link rel="prefetch" href="/assets/js/698.22360a1f.js"><link rel="prefetch" href="/assets/js/699.2163eca3.js"><link rel="prefetch" href="/assets/js/7.c348744b.js"><link rel="prefetch" href="/assets/js/70.c506d4a3.js"><link rel="prefetch" href="/assets/js/700.33f9d3b7.js"><link rel="prefetch" href="/assets/js/701.b9b64300.js"><link rel="prefetch" href="/assets/js/702.f211acb9.js"><link rel="prefetch" href="/assets/js/703.a17e7a1b.js"><link rel="prefetch" href="/assets/js/704.2f02a39d.js"><link rel="prefetch" href="/assets/js/705.f7fd105a.js"><link rel="prefetch" href="/assets/js/706.9d4dfe4c.js"><link rel="prefetch" href="/assets/js/707.430c29c6.js"><link rel="prefetch" href="/assets/js/708.a953fa74.js"><link rel="prefetch" href="/assets/js/709.30e76264.js"><link rel="prefetch" href="/assets/js/71.96a6bf65.js"><link rel="prefetch" href="/assets/js/710.728c63d7.js"><link rel="prefetch" href="/assets/js/711.2c131df9.js"><link rel="prefetch" href="/assets/js/712.2c6a3ce0.js"><link rel="prefetch" href="/assets/js/713.651bcb07.js"><link rel="prefetch" href="/assets/js/714.7739e6df.js"><link rel="prefetch" href="/assets/js/715.af26deaf.js"><link rel="prefetch" href="/assets/js/716.2163324a.js"><link rel="prefetch" href="/assets/js/717.6ab46934.js"><link rel="prefetch" href="/assets/js/718.2164543b.js"><link rel="prefetch" href="/assets/js/719.14f7f81a.js"><link rel="prefetch" href="/assets/js/72.7bcb918a.js"><link rel="prefetch" href="/assets/js/720.4ae4a38a.js"><link rel="prefetch" href="/assets/js/721.9d614ae7.js"><link rel="prefetch" href="/assets/js/722.a7bc36b2.js"><link rel="prefetch" href="/assets/js/723.0a6cd773.js"><link rel="prefetch" href="/assets/js/724.85662bcd.js"><link rel="prefetch" href="/assets/js/725.d436a86a.js"><link rel="prefetch" href="/assets/js/726.b470e380.js"><link rel="prefetch" href="/assets/js/727.9eeb0c89.js"><link rel="prefetch" href="/assets/js/728.007387bd.js"><link rel="prefetch" href="/assets/js/729.85cf4dce.js"><link rel="prefetch" href="/assets/js/73.7eed98da.js"><link rel="prefetch" href="/assets/js/730.67ce1142.js"><link rel="prefetch" href="/assets/js/731.9b8f9cec.js"><link rel="prefetch" href="/assets/js/732.e2662870.js"><link rel="prefetch" href="/assets/js/733.918afa8f.js"><link rel="prefetch" href="/assets/js/734.10b0eec1.js"><link rel="prefetch" href="/assets/js/735.a11f1746.js"><link rel="prefetch" href="/assets/js/736.80e8af9f.js"><link rel="prefetch" href="/assets/js/737.0bb5011c.js"><link rel="prefetch" href="/assets/js/738.87e5d4a6.js"><link rel="prefetch" href="/assets/js/739.33fea425.js"><link rel="prefetch" href="/assets/js/74.b0ece8ff.js"><link rel="prefetch" href="/assets/js/740.43da4693.js"><link rel="prefetch" href="/assets/js/741.872de7e1.js"><link rel="prefetch" href="/assets/js/742.df04264b.js"><link rel="prefetch" href="/assets/js/743.0e5bc544.js"><link rel="prefetch" href="/assets/js/744.f52f6b8a.js"><link rel="prefetch" href="/assets/js/745.a12e3b8c.js"><link rel="prefetch" href="/assets/js/746.46047788.js"><link rel="prefetch" href="/assets/js/747.262f66c8.js"><link rel="prefetch" href="/assets/js/748.afa00053.js"><link rel="prefetch" href="/assets/js/749.433cd912.js"><link rel="prefetch" href="/assets/js/75.a305785c.js"><link rel="prefetch" href="/assets/js/750.73e63036.js"><link rel="prefetch" href="/assets/js/751.73c5a5f4.js"><link rel="prefetch" href="/assets/js/752.3eb47899.js"><link rel="prefetch" href="/assets/js/753.5c8651fe.js"><link rel="prefetch" href="/assets/js/754.a741a586.js"><link rel="prefetch" href="/assets/js/755.3b540caa.js"><link rel="prefetch" href="/assets/js/756.89654fc0.js"><link rel="prefetch" href="/assets/js/757.50fb77bb.js"><link rel="prefetch" href="/assets/js/758.b7e7d75a.js"><link rel="prefetch" href="/assets/js/759.059d00a3.js"><link rel="prefetch" href="/assets/js/76.d5475ef4.js"><link rel="prefetch" href="/assets/js/760.1733cfc8.js"><link rel="prefetch" href="/assets/js/761.1e2d2e09.js"><link rel="prefetch" href="/assets/js/762.c348b9d7.js"><link rel="prefetch" href="/assets/js/763.fb6e8e34.js"><link rel="prefetch" href="/assets/js/764.5e093f6e.js"><link rel="prefetch" href="/assets/js/765.3700e2ec.js"><link rel="prefetch" href="/assets/js/766.47fdd2ab.js"><link rel="prefetch" href="/assets/js/767.0f8555c3.js"><link rel="prefetch" href="/assets/js/768.bc122014.js"><link rel="prefetch" href="/assets/js/769.ad8f689c.js"><link rel="prefetch" href="/assets/js/77.e958d3ac.js"><link rel="prefetch" href="/assets/js/770.870ce279.js"><link rel="prefetch" href="/assets/js/771.8f573d59.js"><link rel="prefetch" href="/assets/js/772.f4dc7450.js"><link rel="prefetch" href="/assets/js/773.afd78ceb.js"><link rel="prefetch" href="/assets/js/774.524dabd4.js"><link rel="prefetch" href="/assets/js/775.74e50990.js"><link rel="prefetch" href="/assets/js/776.1f122480.js"><link rel="prefetch" href="/assets/js/777.198c32ce.js"><link rel="prefetch" href="/assets/js/778.c3d11bdb.js"><link rel="prefetch" href="/assets/js/779.6a315a1d.js"><link rel="prefetch" href="/assets/js/78.eab4b5de.js"><link rel="prefetch" href="/assets/js/780.275b733b.js"><link rel="prefetch" href="/assets/js/781.39701927.js"><link rel="prefetch" href="/assets/js/782.5f16d137.js"><link rel="prefetch" href="/assets/js/783.6dcf622b.js"><link rel="prefetch" href="/assets/js/784.bc816f7f.js"><link rel="prefetch" href="/assets/js/785.e7a309ae.js"><link rel="prefetch" href="/assets/js/786.c299f5fb.js"><link rel="prefetch" href="/assets/js/787.8d175a71.js"><link rel="prefetch" href="/assets/js/788.b7be069d.js"><link rel="prefetch" href="/assets/js/789.c772413d.js"><link rel="prefetch" href="/assets/js/79.30f7cca0.js"><link rel="prefetch" href="/assets/js/790.cdc55f8f.js"><link rel="prefetch" href="/assets/js/791.88e2a9da.js"><link rel="prefetch" href="/assets/js/792.d6bee1eb.js"><link rel="prefetch" href="/assets/js/793.ff6ac1b9.js"><link rel="prefetch" href="/assets/js/794.b99d6e20.js"><link rel="prefetch" href="/assets/js/795.e5127ef0.js"><link rel="prefetch" href="/assets/js/796.4bd88264.js"><link rel="prefetch" href="/assets/js/797.56f969d3.js"><link rel="prefetch" href="/assets/js/798.c4b87f4c.js"><link rel="prefetch" href="/assets/js/799.5caded0a.js"><link rel="prefetch" href="/assets/js/8.d5679e1b.js"><link rel="prefetch" href="/assets/js/80.a4d43888.js"><link rel="prefetch" href="/assets/js/800.f3de8dd8.js"><link rel="prefetch" href="/assets/js/801.c31f4aed.js"><link rel="prefetch" href="/assets/js/802.d19f5d8d.js"><link rel="prefetch" href="/assets/js/803.81dacb7f.js"><link rel="prefetch" href="/assets/js/804.6dab336d.js"><link rel="prefetch" href="/assets/js/805.0d42609d.js"><link rel="prefetch" href="/assets/js/806.ece66c18.js"><link rel="prefetch" href="/assets/js/807.5e248ea6.js"><link rel="prefetch" href="/assets/js/808.28c03939.js"><link rel="prefetch" href="/assets/js/809.f1d17489.js"><link rel="prefetch" href="/assets/js/81.622ab938.js"><link rel="prefetch" href="/assets/js/810.5ce53e73.js"><link rel="prefetch" href="/assets/js/811.da9076c5.js"><link rel="prefetch" href="/assets/js/812.a78eb357.js"><link rel="prefetch" href="/assets/js/813.316524cd.js"><link rel="prefetch" href="/assets/js/814.318928f4.js"><link rel="prefetch" href="/assets/js/815.fb382674.js"><link rel="prefetch" href="/assets/js/816.81f4d649.js"><link rel="prefetch" href="/assets/js/817.40223e98.js"><link rel="prefetch" href="/assets/js/818.fc023e33.js"><link rel="prefetch" href="/assets/js/819.a8d61fb7.js"><link rel="prefetch" href="/assets/js/82.b5c7a10d.js"><link rel="prefetch" href="/assets/js/820.7972c7d7.js"><link rel="prefetch" href="/assets/js/821.029deb8a.js"><link rel="prefetch" href="/assets/js/822.f2330d62.js"><link rel="prefetch" href="/assets/js/823.970c0837.js"><link rel="prefetch" href="/assets/js/824.f12a2246.js"><link rel="prefetch" href="/assets/js/825.9d579744.js"><link rel="prefetch" href="/assets/js/826.dfd74765.js"><link rel="prefetch" href="/assets/js/827.348b591f.js"><link rel="prefetch" href="/assets/js/828.83476ef9.js"><link rel="prefetch" href="/assets/js/829.99450736.js"><link rel="prefetch" href="/assets/js/83.27769935.js"><link rel="prefetch" href="/assets/js/830.6436f87a.js"><link rel="prefetch" href="/assets/js/831.95e1194b.js"><link rel="prefetch" href="/assets/js/832.344664a0.js"><link rel="prefetch" href="/assets/js/833.18f08536.js"><link rel="prefetch" href="/assets/js/834.ec52fda9.js"><link rel="prefetch" href="/assets/js/835.e500a443.js"><link rel="prefetch" href="/assets/js/836.22e0097d.js"><link rel="prefetch" href="/assets/js/837.ddefa78b.js"><link rel="prefetch" href="/assets/js/838.bdde52fc.js"><link rel="prefetch" href="/assets/js/839.ff5c86f4.js"><link rel="prefetch" href="/assets/js/84.ace1feba.js"><link rel="prefetch" href="/assets/js/840.e470d097.js"><link rel="prefetch" href="/assets/js/841.75afc9e0.js"><link rel="prefetch" href="/assets/js/842.04b6ce24.js"><link rel="prefetch" href="/assets/js/843.c014d0c5.js"><link rel="prefetch" href="/assets/js/844.efd43c28.js"><link rel="prefetch" href="/assets/js/845.d4f16422.js"><link rel="prefetch" href="/assets/js/846.aea0a07e.js"><link rel="prefetch" href="/assets/js/847.f1067a25.js"><link rel="prefetch" href="/assets/js/848.8bee7005.js"><link rel="prefetch" href="/assets/js/849.ee529c05.js"><link rel="prefetch" href="/assets/js/85.dcbcd08b.js"><link rel="prefetch" href="/assets/js/850.98bd0160.js"><link rel="prefetch" href="/assets/js/851.df9fe7e1.js"><link rel="prefetch" href="/assets/js/852.0daa11aa.js"><link rel="prefetch" href="/assets/js/853.0d97bbb9.js"><link rel="prefetch" href="/assets/js/854.681b1dab.js"><link rel="prefetch" href="/assets/js/855.44c2cec1.js"><link rel="prefetch" href="/assets/js/856.63112a2e.js"><link rel="prefetch" href="/assets/js/857.8ea17e72.js"><link rel="prefetch" href="/assets/js/858.ed38166d.js"><link rel="prefetch" href="/assets/js/859.c066c3b6.js"><link rel="prefetch" href="/assets/js/86.7a38e8a1.js"><link rel="prefetch" href="/assets/js/860.d5fb5417.js"><link rel="prefetch" href="/assets/js/861.d093fa21.js"><link rel="prefetch" href="/assets/js/862.95f879f7.js"><link rel="prefetch" href="/assets/js/863.894dba48.js"><link rel="prefetch" href="/assets/js/864.2a8cb2f9.js"><link rel="prefetch" href="/assets/js/865.d233cbb6.js"><link rel="prefetch" href="/assets/js/866.d3979b6f.js"><link rel="prefetch" href="/assets/js/867.8da18c41.js"><link rel="prefetch" href="/assets/js/868.194cea76.js"><link rel="prefetch" href="/assets/js/869.64b683a0.js"><link rel="prefetch" href="/assets/js/87.f3e00c6d.js"><link rel="prefetch" href="/assets/js/870.b89a8615.js"><link rel="prefetch" href="/assets/js/88.672e0f46.js"><link rel="prefetch" href="/assets/js/89.250a82fb.js"><link rel="prefetch" href="/assets/js/9.2c280511.js"><link rel="prefetch" href="/assets/js/90.f1a381e8.js"><link rel="prefetch" href="/assets/js/91.e123d01d.js"><link rel="prefetch" href="/assets/js/92.cf63f3f6.js"><link rel="prefetch" href="/assets/js/93.6d4724c3.js"><link rel="prefetch" href="/assets/js/94.dc48f30a.js"><link rel="prefetch" href="/assets/js/95.d435fca1.js"><link rel="prefetch" href="/assets/js/96.8d3d949b.js"><link rel="prefetch" href="/assets/js/97.8fd7c52d.js"><link rel="prefetch" href="/assets/js/98.78fd67c6.js"><link rel="prefetch" href="/assets/js/99.b6546e65.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.51ef31dd.js">
<link rel="stylesheet" href="/assets/css/0.styles.11e03d19.css">
</head>
<body>
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/img/logo.png" alt=" " class="logo"></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Documentation</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/QuickStart/QuickStart.html" class="nav-link">latest</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" class="nav-link">v0.13.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.12.x/QuickStart/QuickStart.html" class="nav-link">v0.12.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">v0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">v0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">v0.9.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">v0.8.x</a></li></ul></div></div><div class="nav-item"><a href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" class="nav-link external">
Design
<!----></a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Community/About.html" class="nav-link">About</a></li><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToJoin.html" class="nav-link">Become a Contributor</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/HowtoContributeCode.html" class="nav-link">How to Contribute Code</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Integration-Test/Integration-Test-refactoring-tutorial.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">English</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Integration-Test/Integration-Test-refactoring-tutorial.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Documentation</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/QuickStart/QuickStart.html" class="nav-link">latest</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.13.x/QuickStart/QuickStart.html" class="nav-link">v0.13.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.12.x/QuickStart/QuickStart.html" class="nav-link">v0.12.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.11.x/Get Started/QuickStart.html" class="nav-link">v0.11.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.10.x/Get Started/QuickStart.html" class="nav-link">v0.10.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.9.x/0-Get Started/1-QuickStart.html" class="nav-link">v0.9.x</a></li><li class="dropdown-item"><!----> <a href="/UserGuide/V0.8.x/0-Get Started/1-QuickStart.html" class="nav-link">v0.8.x</a></li></ul></div></div><div class="nav-item"><a href="https://cwiki.apache.org/confluence/display/IOTDB/System+Design" class="nav-link external">
Design
<!----></a></div><div class="nav-item"><a href="/Download/" class="nav-link">Download</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Community</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Community/About.html" class="nav-link">About</a></li><li class="dropdown-item"><!----> <a href="https://cwiki.apache.org/confluence/display/iotdb" class="nav-link external">
Wiki
<!----></a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Project Committers.html" class="nav-link">People</a></li><li class="dropdown-item"><!----> <a href="/Community/Community-Powered By.html" class="nav-link">Powered By</a></li><li class="dropdown-item"><!----> <a href="/Community/Materials.html" class="nav-link">Resources</a></li><li class="dropdown-item"><!----> <a href="/Community/Feedback.html" class="nav-link">Feedback</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Development</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/Development/VoteRelease.html" class="nav-link">How to vote</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToCommit.html" class="nav-link">How to Commit</a></li><li class="dropdown-item"><!----> <a href="/Development/HowToJoin.html" class="nav-link">Become a Contributor</a></li><li class="dropdown-item"><!----> <a href="/Development/Committer.html" class="nav-link">Become a Committer</a></li><li class="dropdown-item"><!----> <a href="/Development/ContributeGuide.html" class="nav-link">ContributeGuide</a></li><li class="dropdown-item"><!----> <a href="/Development/HowtoContributeCode.html" class="nav-link">How to Contribute Code</a></li><li class="dropdown-item"><!----> <a href="/Development/format-changelist.html" class="nav-link">Changelist of TsFile</a></li><li class="dropdown-item"><!----> <a href="/Development/rpc-changelist.html" class="nav-link">Changelist of RPC</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">ASF</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="http://www.apache.org/" class="nav-link external">
Foundation
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/licenses/" class="nav-link external">
License
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/security/" class="nav-link external">
Security
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/sponsorship.html" class="nav-link external">
Sponsorship
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/foundation/thanks.html" class="nav-link external">
Thanks
<!----></a></li><li class="dropdown-item"><!----> <a href="http://www.apache.org/events/current-event" class="nav-link external">
Current Events
<!----></a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">Languages</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/UserGuide/Master/Integration-Test/Integration-Test-refactoring-tutorial.html" aria-current="page" class="nav-link router-link-exact-active router-link-active">English</a></li><li class="dropdown-item"><!----> <a href="/zh/UserGuide/Master/Integration-Test/Integration-Test-refactoring-tutorial.html" class="nav-link">简体中文</a></li></ul></div></div> <a href="https://github.com/apache/iotdb.git" target="_blank" rel="noopener noreferrer" class="repo-link">
GitHub
<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>IoTDB User Guide (latest)</span> <!----></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>IoTDB Introduction</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Quick Start</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Data Concept</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Syntax Conventions</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>API</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Operate Metadata</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Write and Delete Data</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Query Data</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Process Data</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Administration Management</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Maintenance Tools</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Ecosystem Integration</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Cluster</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>UDF Library</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>Reference</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content content__default"><h1 id="developer-document-for-integration-test"><a href="#developer-document-for-integration-test" class="header-anchor">#</a> Developer Document for Integration Test</h1> <p><strong>Integration test</strong> is one of the phases in software testing, when different software modules are put together and tested as a whole. Integration tests are for evaluating whether a system or component meets the target functional requirements.</p> <h2 id="apache-iotdb-integration-test-criteria"><a href="#apache-iotdb-integration-test-criteria" class="header-anchor">#</a> Apache IoTDB Integration Test Criteria</h2> <h3 id="the-environment-of-the-integration-test-of-apache-iotdb"><a href="#the-environment-of-the-integration-test-of-apache-iotdb" class="header-anchor">#</a> The Environment of the integration test of Apache IoTDB</h3> <p>There are three kinds of environments for Apache IoTDB integration test, correspondingly <strong>local standalone, Cluster, and remote.</strong> The integration test should be conducted on at least one of them. Details of the three kinds are as follows.</p> <ol><li>Local standalone. It is set up for integration testing of IoTDB, the standalone version. Any change of the configurations of IoTDB would require updating the configuration files before starting the database.</li> <li>Cluster. It is set up for integration testing of IoTDB, the distribution version (pseudo-distribution). Any change of the configurations of IoTDB would require updating the configuration files before starting the database.</li> <li>Remote. It is set up for the integration testing of a remote IoTDB instance, which could be either a standalone instance or a node in a remote cluster. Any change of the configuration is restricted and is not allowed currently.</li></ol> <p>Integration test developers need to specify at least one of the environments when writing the tests. Please check the details below.</p> <h3 id="black-box-testing"><a href="#black-box-testing" class="header-anchor">#</a> Black-Box Testing</h3> <p>Black-box testing is a software testing method that evaluates the functionality of a program without regard to its internal structure or how it works. Developers do not need to understand the internal logic of the application for testing. <strong>Apache IoTDB integration tests are conducted as black-box tests. Any test interacting with the system through JDBC or Session API is considered a black-box test case.</strong> Moreover, the validation of the output should also be implemented through the JDBC or Session API.</p> <h3 id="steps-of-an-integration-test"><a href="#steps-of-an-integration-test" class="header-anchor">#</a> Steps of an integration test</h3> <p>Generally, there are three steps to finish the integration test, (1) constructing the test class and annotating the environment, (2) housekeeping to prepare for the test and clean up the environment after the test, and (3) implementing the logic of the integration test. To test IoTDB not under the default configuration, the configuration should be changed before the test, which will be introduced in section 4.</p> <img src="https://github.com/apache/iotdb-bin-resources/blob/main/integration-test/pic/step_en.svg" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <h4 id="_1-integration-test-class-it-class-and-annotations"><a href="#_1-integration-test-class-it-class-and-annotations" class="header-anchor">#</a> 1. Integration Test Class (IT Class) and Annotations</h4> <p>When writing new IT classes, the developers are encouraged to create the new ones in the <a href="https://github.com/apache/iotdb/tree/master/integration-test" target="_blank" rel="noopener noreferrer">integration-test<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> module. Except for the classes serving the other test cases, the classes containing integration tests to evaluate the functionality of IoTDB should be named &quot;function&quot;+&quot;IT&quot;. For example, the test for auto-registration metadata in IoTDB is named “<font color="green">IoTDBAutoCreateSchema</font><font color="red">IT</font>”.</p> <ul><li>Category`` Annotation. <strong>When creating new IT classes, the <code>@Category</code> should be introduced explicitly</strong>, and the test environment should be specified by <code>LocalStandaloneIT.class</code>, <code>ClusterIT.class</code>, and <code>RemoteIT.class</code>, which corresponds to the Local Standalone, Cluster and Remote environment respectively. <strong>In general, <code>LocalStandaloneIT.class</code> and <code>ClusterIT.class</code> should both be included</strong>. Only in the case when some functionalities are only supported in the standalone version can we include <code>LocalStandaloneIT.class</code> solely.</li> <li>RunWith Annotation. The <code>@RunWith(IoTDBTestRunner.class)</code> annotation should be included in every IT class.</li></ul> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token comment">// Introduce annotations to IoTDBAliasIT.class. The environments include local standalone, cluster and remote. </span>
<span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">RemoteIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAliasIT</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token comment">// Introduce annotations to IoTDBAlignByDeviceIT.class. The environments include local standalone and cluster. </span>
<span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAlignByDeviceIT</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br></div></div><h4 id="_2-housekeeping-to-prepare-for-the-test-and-clean-up-the-environment-after-the-test"><a href="#_2-housekeeping-to-prepare-for-the-test-and-clean-up-the-environment-after-the-test" class="header-anchor">#</a> 2. Housekeeping to Prepare for the Test and Clean up the Environment after the Test</h4> <p>Preparations before the test include starting an IoTDB (single or cluster) instance and preparing data for the test. The logic should be implemented in the <code>setUp()</code> method, and the method should follow the annotation <code>@BeforeClass</code> or <code>@Before</code>.
The former means that this method is the first method executed for the IT class and is executed only once. The latter indicates that <code>setUp()</code> will be executed before each test method in the IT class.</p> <ul><li>Please start IoTDB instance through the factor class, i.e., <code>EnvFactory.getEnv().initBeforeClass()</code>.</li> <li>Data preparation for the test includes registering storage groups, registering time series, and writing time series data as required by the test. It is recommended to implement a separate method within the IT class to prepare the data, such as <code>insertData()</code>.
Please try to take advantage of the <code>executeBatch()</code> in JDBC or <code>insertRecords()</code> and <code>insertTablets()</code> in Session API if multiple statements or operations are to be executed.</li></ul> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@BeforeClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">setUp</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token comment">// start an IoTDB instance</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">initBeforeClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// data preparation</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>After the test, please clean up the environment by shut down the connections that have not been closed. This logic should be implemented in the <code>tearDown()</code> method. The <code>tearDown()</code> method follows the annotation <code>@AfterClass</code> or <code>@After</code>. The former means that this method is the last method to execute for the IT class and is executed only once. The latter indicates that <code>tearDown()</code> will be executed after each test method in the IT class.</p> <ul><li>If the IoTDB connection is declared as an instance variable and is not closed after the test, please explicitly close it in the <code>tearDown()</code> method.</li> <li>The cleaning up should be implemented through the factory class, i.e., <code>EnvFactory.getEnv().cleanAfterClass()</code>.</li></ul> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@AfterClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">tearDown</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// close the connection</span>
<span class="token comment">// clean up the environment</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">cleanAfterClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h4 id="_3-implementing-the-logic-of-it"><a href="#_3-implementing-the-logic-of-it" class="header-anchor">#</a> 3. Implementing the logic of IT</h4> <p>IT of Apache IoTDB should be implemented as black-box testing. Please name the method as &quot;functionality&quot;+&quot;Test&quot;, e.g., &quot;<font color="green">selectWithAlias</font><font color="red">Test</font>&quot;. The interaction should be implemented through JDBC or Session API.</p> <p>1 With JDBC</p> <p>When using the JDBC interface, it is recommended that the connection be established in a try statement. Connections established in this way do not need to be closed in the tearDown method explicitly. Connections need to be established through the factory class, i.e., <code>EnvFactory.getEnv().getConnection()</code>. It is not necessary to specify the IP address or port number. The sample code is shown below.</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">someFunctionTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">Connection</span> connection <span class="token operator">=</span> <span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getConnection</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Statement</span> statement <span class="token operator">=</span> connection<span class="token punctuation">.</span><span class="token function">createStatement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// execute the statements and test the correctness</span>
<span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">fail</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p>Please note that,</p> <ul><li><strong>It is required to use <code>executeQuery()</code> to query the data from the database and get the ResultSet.</strong></li> <li><strong>For updating the database without any return value, it is required to use <code>execute()</code> method to interact with the database.</strong>
The sample code is as follows.</li></ul> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">exampleTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">Connection</span> connection <span class="token operator">=</span> <span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getConnection</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Statement</span> statement <span class="token operator">=</span> connection<span class="token punctuation">.</span><span class="token function">createStatement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// use execute() to set the storage groups</span>
statement<span class="token punctuation">.</span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token string">&quot;set storage group to root.sg&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// use executeQuery() query the storage groups</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">ResultSet</span> resultSet <span class="token operator">=</span> statement<span class="token punctuation">.</span><span class="token function">executeQuery</span><span class="token punctuation">(</span><span class="token string">&quot;show storage group&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>resultSet<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">String</span> storageGroupPath <span class="token operator">=</span> resultSet<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token string">&quot;storage group&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">assertEquals</span><span class="token punctuation">(</span><span class="token string">&quot;root.sg&quot;</span><span class="token punctuation">,</span> storageGroupPath<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">fail</span><span class="token punctuation">(</span><span class="token string">&quot;This ResultSet is empty.&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><p>2 With Session API</p> <p>Currently, it is not recommended to implement IT with Session API.</p> <p>3 Annotations of Environment for the Test Methods</p> <p>For test methods, developers can also specify a test environment with the annotation before the method. It is important to note that a case with additional test environment annotations will be tested not only in the specified environment, but also in the environment of the IT class to which the use case belongs. The sample code is as follows.</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBExampleIT</span> <span class="token punctuation">{</span>
<span class="token comment">// This case will only be tested in a local stand-alone test environment</span>
<span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">theStandaloneCaseTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token comment">// The use case will be tested in the local standalone environment, the cluster environment, and the remote test environment.</span>
<span class="token annotation punctuation">@Test</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">RemoteIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">theAllEnvCaseTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><h4 id="_4-change-the-configurations-of-iotdb-when-testing"><a href="#_4-change-the-configurations-of-iotdb-when-testing" class="header-anchor">#</a> 4. Change the configurations of IoTDB when testing</h4> <p>Sometimes, the configurations of IoTDB need to be changed in order to test the functionalities under certain conditions. Because changing the configurations on a remote machine is troublesome, configuration modification is not allowed in the remote environment. However, it is allowed in the local standalone and cluster environment. Changes of the configuration files should be implemented in the <code>setUp()</code> method, before <code>EnvFactory.getEnv().initBeforeClass()</code>, and should be implemented through ConfigFactory. In <code>tearDown()</code> , please undo all changes of the configurations and revert to its original default settings by ConfigFactory after the environment cleanup (<code>EnvFactory.getEnv().cleanAfterTest()</code>). The example code is as follows.</p> <div class="language-java line-numbers-mode"><pre class="language-java"><code><span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAlignedSeriesQueryIT</span> <span class="token punctuation">{</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableSeqSpaceCompaction<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableUnseqSpaceCompaction<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableCrossSpaceCompaction<span class="token punctuation">;</span>
<span class="token annotation punctuation">@BeforeClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">setUp</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token comment">// get the default configurations</span>
enableSeqSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableSeqSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enableUnseqSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enableCrossSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableCrossSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// update configurations</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableSeqSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableCrossSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">initBeforeClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">AlignedWriteUtil</span><span class="token punctuation">.</span><span class="token function">insertData</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token annotation punctuation">@AfterClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">tearDown</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">cleanAfterClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// revert to the default configurations </span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableSeqSpaceCompaction</span><span class="token punctuation">(</span>enableSeqSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span>enableUnseqSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableCrossSpaceCompaction</span><span class="token punctuation">(</span>enableCrossSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br></div></div><h2 id="q-a"><a href="#q-a" class="header-anchor">#</a> Q&amp;A</h2> <h3 id="ways-to-check-the-log-after-the-ci-failure"><a href="#ways-to-check-the-log-after-the-ci-failure" class="header-anchor">#</a> Ways to check the log after the CI failure</h3> <p>1 click <em>Details</em> of the corresponding test</p> <img src="https://github.com/apache/iotdb-bin-resources/blob/main/integration-test/pic/details.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>2 check and download the error log</p> <img src="https://github.com/apache/iotdb-bin-resources/blob/main/integration-test/pic/download1.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <p>You can also click the <em>summary</em> at the upper left and then check and download the error log.</p> <img src="https://github.com/apache/iotdb-bin-resources/blob/main/integration-test/pic/download2.png" style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;"> <h3 id="commands-for-running-it"><a href="#commands-for-running-it" class="header-anchor">#</a> Commands for running IT</h3> <p>Please check <a href="https://github.com/apache/iotdb/blob/master/integration-test/README.md" target="_blank" rel="noopener noreferrer">Integration Test For the MPP Architecture<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> for details.</p></div> <!----> <p style="text-align: center; color: #909399; font-size: 12px; margin: 0 30px;">Copyright © 2022 The Apache Software Foundation.<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation</p> <p style="text-align: center; margin-top: 10px; color: #909399; font-size: 12px; margin: 0 30px;"><strong>Have a question?</strong> Connect with us on QQ, WeChat, or Slack. <a href="https://github.com/apache/iotdb/issues/1995">Join the community</a> now.</p> <p style="text-align: center; margin-top: 10px; color: #909399; font-size: 12px; margin: 0 30px;">
We use <a href="https://analytics.google.com">Google Analytics</a> to collect anonymous, aggregated usage information.
</p></main></div><div class="global-ui"></div></div>
<script src="/assets/js/app.f6f354da.js" defer></script><script src="/assets/js/3.c8384d0b.js" defer></script><script src="/assets/js/61.f2dbd155.js" defer></script>
</body>
</html>