ueberdb2 4.1.1 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/package.json +5 -3
  2. package/.eslintignore +0 -2
  3. package/.eslintrc.cjs +0 -66
  4. package/.github/dependabot.yml +0 -11
  5. package/.github/workflows/npmpublish.yml +0 -134
  6. package/.travis.yml +0 -46
  7. package/CHANGELOG.md +0 -304
  8. package/CONTRIBUTING.md +0 -103
  9. package/SECURITY.md +0 -5
  10. package/databases/cassandra_db.ts +0 -265
  11. package/databases/couch_db.ts +0 -189
  12. package/databases/dirty_db.ts +0 -85
  13. package/databases/dirty_git_db.ts +0 -82
  14. package/databases/elasticsearch_db.ts +0 -257
  15. package/databases/memory_db.ts +0 -41
  16. package/databases/mock_db.ts +0 -43
  17. package/databases/mongodb_db.ts +0 -142
  18. package/databases/mssql_db.ts +0 -226
  19. package/databases/mysql_db.ts +0 -183
  20. package/databases/postgres_db.ts +0 -213
  21. package/databases/postgrespool_db.ts +0 -11
  22. package/databases/redis_db.ts +0 -129
  23. package/databases/rethink_db.ts +0 -114
  24. package/databases/sqlite_db.ts +0 -159
  25. package/docker-compose.yml +0 -44
  26. package/index.ts +0 -224
  27. package/lib/AbstractDatabase.ts +0 -79
  28. package/lib/CacheAndBufferLayer.ts +0 -665
  29. package/lib/logging.ts +0 -33
  30. package/test/lib/databases.ts +0 -73
  31. package/test/lib/mysql.sql +0 -84
  32. package/test/test.ts +0 -328
  33. package/test/test_bulk.ts +0 -69
  34. package/test/test_elasticsearch.ts +0 -128
  35. package/test/test_findKeys.ts +0 -41
  36. package/test/test_flush.ts +0 -55
  37. package/test/test_getSub.ts +0 -28
  38. package/test/test_lru.ts +0 -151
  39. package/test/test_memory.ts +0 -32
  40. package/test/test_metrics.ts +0 -734
  41. package/test/test_mysql.ts +0 -62
  42. package/test/test_postgres.ts +0 -16
  43. package/test/test_setSub.ts +0 -19
  44. package/test/test_tojson.ts +0 -34
@@ -1,73 +0,0 @@
1
- const os = require('os');
2
-
3
-
4
- export const databases = {
5
- memory: {},
6
- dirty: {
7
- filename: `${os.tmpdir()}/ueberdb-test.db`,
8
- speeds: {
9
- setMax: 1,
10
- getMax: 0.1,
11
- findKeysMax: 0.5,
12
- },
13
- },
14
- sqlite: {
15
- filename: `${os.tmpdir()}/ueberdb-test.sqlite`,
16
- speeds: {
17
- setMax: 0.6,
18
- getMax: 0.5,
19
- findKeysMax: 2.5,
20
- removeMax: 0.5,
21
- },
22
- },
23
- mysql: {
24
- user: 'ueberdb',
25
- host: '127.0.0.1',
26
- password: 'ueberdb',
27
- database: 'ueberdb',
28
- charset: 'utf8mb4',
29
- speeds: {
30
- findKeysMax: 6,
31
- getMax: 1,
32
- },
33
- },
34
- postgres: {
35
- user: 'ueberdb',
36
- host: 'localhost',
37
- password: 'ueberdb',
38
- database: 'ueberdb',
39
- charset: 'utf8mb4',
40
- speeds: {
41
- setMax: 6,
42
- },
43
- },
44
- redis: {
45
- },
46
- mongodb: {
47
- url: 'mongodb://127.0.0.1:27017',
48
- database: 'mydb_test',
49
- speeds: {
50
- setMax: 0.2,
51
- getMax: 0.05,
52
- removeMax: 0.3,
53
- },
54
- },
55
- couch: {
56
- host: '127.0.0.1',
57
- port: 5984,
58
- database: 'ueberdb',
59
- user: 'ueberdb',
60
- password: 'ueberdb',
61
- speeds: {
62
- findKeysMax: 30,
63
- },
64
- },
65
- elasticsearch: {
66
- base_index: 'ueberdb_test',
67
- speeds: {
68
- findKeysMax: 30,
69
- }, host: '127.0.0.1',
70
- port: '9200',
71
-
72
- },
73
- };
@@ -1,84 +0,0 @@
1
- -- MySQL dump 10.16 Distrib 10.1.44-MariaDB, for debian-linux-gnu (x86_64)
2
- --
3
- -- Host: localhost Database: ueberdb
4
- -- ------------------------------------------------------
5
- -- Server version 10.1.44-MariaDB-0ubuntu0.18.04.1
6
-
7
- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
8
- /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
9
- /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
10
- /*!40101 SET NAMES utf8mb4 */;
11
- /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
12
- /*!40103 SET TIME_ZONE='+00:00' */;
13
- /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
14
- /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
15
- /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
16
- /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
17
-
18
- --
19
- -- Table structure for table `store`
20
- --
21
-
22
- DROP TABLE IF EXISTS `store`;
23
- /*!40101 SET @saved_cs_client = @@character_set_client */;
24
- /*!40101 SET character_set_client = utf8 */;
25
- CREATE TABLE `store` (
26
- `key` varchar(100) COLLATE utf8mb4_bin NOT NULL,
27
- `value` longtext COLLATE utf8mb4_bin NOT NULL,
28
- PRIMARY KEY (`key`)
29
- ) ENGINE=InnoDB` DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
30
- /*!40101 SET character_set_client = @saved_cs_client */;
31
-
32
- --
33
- -- Dumping data for table `store`
34
- --
35
-
36
- LOCK TABLES `store` WRITE;
37
- /*!40000 ALTER TABLE `store` DISABLE KEYS */;
38
- INSERT INTO `store` VALUES ('2015-04-14 09:43:10','19.52'),('2014-12-03 03:33:56','92.88'),('2015-01-08 18:50:47','2.94'),('2014-11-01 15:29:22','27.57'),('2015-03-11 06:20:50','25.94'),('2015-08-22 13:36:27','30.84'),('2015-01-24 01:16:06','66.44'),('2014-10-08 18:06:07','82.89'),('2014-10-28 17:57:19','37.19'),('2015-02-22 07:42:36','37.1'),('2014-03-20 08:03:50','63.6'),('2015-04-18 00:58:53','86.42'),('2014-08-30 00:48:45','96.41'),('2014-11-27 10:32:24','79.59'),('2015-08-04 01:18:27','64.29'),('2014-09-08 08:03:45','94.27'),('2015-12-15 05:44:09','6.03'),('2014-10-20 21:13:05','36.74'),('2014-06-06 02:37:47','76.49'),('2015-07-18 17:32:08','26.98'),('2015-01-02 07:53:55','93.37'),('2014-08-02 10:27:55','40.9'),('2014-09-04 20:00:28','50.99'),('2015-04-22 18:06:58','74.93'),('2015-03-25 17:07:21','17.67'),('2015-01-28 12:41:29','90.28'),('2014-11-01 21:02:56','45.12'),('2014-10-12 17:16:27','72.16'),('2014-11-05 17:39:30','54.79'),('2015-08-08 06:17:33','34.41'),('2014-03-19 22:40:37','73.94'),('2014-11-10 08:18:28','85.66'),('2014-11-28 00:23:42','56.51'),('2015-05-14 19:19:25','8.32'),('2015-11-01 19:16:01','39.55'),('2014-11-26 07:39:52','39.26'),('2014-08-17 16:59:17','72.69'),('2014-10-05 20:09:31','54.99'),('2014-12-21 22:02:18','36.54'),('2014-03-26 14:50:33','38.79'),('2015-04-15 12:24:01','16.46'),('2015-08-23 11:19:22','69.65'),('2014-08-27 15:03:30','27.73'),('2014-12-14 06:59:53','37.91'),('2015-06-18 05:18:09','83.98'),('2015-03-05 15:18:17','94.64'),('2014-07-01 21:15:08','4.1'),('2015-02-25 10:59:39','72.6'),('2015-09-11 13:45:17','97.61'),('2014-06-21 07:35:21','48.29'),('2014-10-14 15:46:49','28.08'),('2015-02-24 21:34:11','42.77'),('2014-10-27 23:32:22','63.55'),('2014-09-07 00:48:39','29.26'),('2014-05-22 01:21:02','24.63'),('2015-06-28 10:10:53','80.67'),('2015-09-01 06:06:14','88.32'),('2015-02-10 17:27:17','87.59'),('2014-12-05 03:36:31','22.62'),('2015-02-05 05:27:17','44.86'),('2015-09-13 22:59:01','77.66'),('2014-06-28 07:28:15','1.77'),('2015-02-21 21:09:23','44.98'),('2015-03-05 22:49:24','50.93'),('2015-03-05 02:42:00','59.65'),('2015-02-05 03:49:00','96.69'),('2015-01-12 12:28:31','24.77'),('2014-12-02 03:01:47','70.87'),('2015-08-05 21:34:35','1.02'),('2014-09-29 08:21:28','68.45'),('2015-06-04 10:05:58','47.97'),('2015-10-08 02:21:02','89.46'),('2014-12-18 07:23:58','61.69'),('2015-04-10 20:31:54','20.16'),('2014-11-22 22:48:01','46.77'),('2015-01-18 17:42:29','97.36'),('2014-10-09 05:05:03','26.33'),('2015-04-26 20:38:31','77.69'),('2015-08-02 22:07:28','4.1'),('2015-04-24 08:38:56','30.75'),('2015-01-06 18:36:31','49.42'),('2015-11-16 03:11:59','22.89'),('2014-07-07 13:35:57','96.83'),('2015-07-01 13:34:48','28.37'),('2014-11-30 19:16:21','55.14'),('2015-09-22 19:10:39','45.4'),('2015-05-05 01:53:22','43.01'),('2014-08-08 13:24:26','15.14'),('2014-12-09 09:37:10','50.02'),('2015-10-19 19:35:43','93.02'),('2015-08-17 07:56:38','90.6'),('2014-06-15 06:28:20','36.9'),('2015-04-30 11:20:30','5.71'),('2014-12-15 08:36:37','60.41'),('2014-07-05 18:38:48','78.3'),('2014-12-11 07:18:10','32.65'),('2015-09-19 04:47:23','98.4'),('2014-10-10 14:02:49','90.24'),('2014-08-11 06:28:59','62.29'),('2014-10-22 15:24:50','46.78'),('2015-02-17 22:06:19','60.96'),('2014-09-14 04:17:01','13.47'),('2015-08-07 05:54:25','31.98'),('2014-11-17 16:56:45','94.23'),('2015-02-21 16:13:40','74.96'),('2014-08-06 20:43:17','52.32'),('2014-12-03 15:35:59','62.18'),('2014-08-31 12:32:59','61.54'),('2015-04-01 02:49:55','44.33'),('2014-10-22 03:45:12','84.81'),('2015-10-20 03:50:45','87.56'),('2015-04-09 10:21:52','15.26'),('2014-12-16 01:21:56','56.25'),('2015-03-21 17:27:06','88.37'),('2015-08-25 11:18:52','50.7'),('2014-12-04 21:59:34','69.95'),('2015-07-26 09:58:42','27.5'),('2015-03-29 08:30:36','11.05'),('2014-11-14 23:25:57','41.84'),('2015-03-24 08:52:38','48.68'),('2014-07-12 01:32:50','64.84'),('2014-12-31 00:08:03','72.93'),('2014-07-27 12:58:56','83.41'),('2015-07-22 23:01:03','3.55'),('2014-02-15 22:55:17','31.93'),('2015-01-20 08:16:24','58.35'),('2014-11-01 15:01:33','5.91'),('2014-05-01 14:44:02','97.48'),('2014-11-24 01:03:41','38.59'),('2014-10-02 19:07:20','55'),('2015-01-12 09:10:45','58.06'),('2014-02-28 22:05:06','60.22'),('2015-01-25 02:59:46','49.97'),('2014-12-03 23:26:21','71.91'),('2015-01-25 14:16:40','3.68'),('2015-06-17 01:24:36','53.05'),('2014-10-16 11:21:17','44.23'),('2014-11-12 02:20:43','6.24'),('2015-09-19 21:05:05','4.75'),('2015-01-31 11:29:31','11.58'),('2015-04-21 10:06:05','97.91'),('2014-12-10 13:52:22','20.14'),('2015-02-17 17:08:08','67.35'),('2015-01-14 08:18:59','43.98'),('2015-05-23 06:41:30','0.29'),('2015-03-11 18:50:46','35.57'),('2014-10-07 03:03:08','38.07'),('2015-01-04 19:22:34','84.85'),('2015-03-07 23:43:33','60.18'),('2015-03-06 02:58:12','23.65'),('2014-03-03 01:02:41','66.7'),('2014-08-18 23:25:41','97.52'),('2014-11-19 18:04:44','0.77'),('2015-09-21 17:47:09','28.49'),('2014-12-04 18:46:18','58.65'),('2014-07-09 09:34:12','22.31'),('2015-07-09 14:48:40','1.21'),('2015-07-18 10:32:23','94.46'),('2015-06-18 07:18:47','24.51'),('2015-03-16 08:30:17','9.96'),('2014-11-03 22:58:55','35.14'),('2014-10-09 20:58:02','42.55'),('2015-01-25 20:53:28','54.76'),('2015-08-05 21:13:13','32.12'),('2015-09-10 01:36:14','91.35'),('2015-03-14 07:24:16','40.54'),('2015-03-13 17:05:12','76.52'),('2015-05-13 11:03:13','26.95'),('2014-09-21 10:59:14','90.15'),('2014-12-10 00:35:35','83.97'),('2015-09-09 10:49:15','83.36'),('2014-09-25 05:42:10','1.65'),('2014-12-19 16:06:26','80.99'),('2015-07-11 02:38:43','34.65'),('2014-10-17 12:47:01','85.53'),('2014-04-26 11:18:44','7.15'),('2014-11-20 03:52:13','62.66'),('2015-04-14 00:13:48','19.48'),('2015-09-01 05:56:41','66.41'),('2014-09-09 09:25:02','86.86'),('2015-02-06 12:54:15','55.88'),('2014-05-29 06:06:33','25.36'),('2014-10-14 16:21:52','19.85'),('2015-11-11 12:14:27','3.18'),('2014-09-21 05:27:49','18.34'),('2015-06-04 06:38:28','81.57'),('2015-05-03 19:48:38','30.4'),('2015-07-03 09:35:08','29.28'),('2015-02-08 12:00:49','21.52'),('2014-11-13 02:19:19','31.4'),('2014-06-06 01:26:10','31.12'),('2015-10-26 00:13:52','41.52'),('2014-10-07 23:45:23','81.79'),('2014-04-26 18:18:28','22.4'),('2014-08-28 03:14:09','83.9'),('2014-11-05 00:35:54','7.12'),('2014-10-26 04:32:33','4.36'),('2015-07-26 07:17:11','56.44'),('2015-02-26 00:18:32','97.15'),('2015-01-04 16:00:03','48.37'),('2015-08-27 19:46:45','46.4'),('2015-01-25 18:21:41','5.91'),('2015-10-03 18:55:00','20.03'),('2014-08-11 05:36:51','43.07'),('2015-04-21 06:24:34','5.1'),('2014-09-21 21:13:20','44.66'),('2014-09-04 08:46:38','35.46'),('2014-06-22 05:12:47','31.11'),('2015-07-08 08:05:54','31.38'),('2015-07-14 23:09:11','70.3'),('2014-10-17 21:38:18','76.66'),('2015-02-10 21:58:25','34.44'),('2014-07-08 17:41:51','85.15'),('2015-05-03 02:33:31','82.03'),('2014-10-18 10:53:53','63.61'),('2015-08-16 06:48:00','73.84'),('2015-04-29 05:47:18','90.03'),('2015-02-05 11:31:22','8.8'),('2015-01-09 17:34:32','73.51'),('2015-04-14 10:57:12','43.18'),('2015-01-09 13:47:38','69.2'),('2014-03-22 11:47:50','70.66'),('2015-01-01 15:24:24','84.61'),('2015-03-07 22:02:17','61.06'),('2014-05-24 23:06:17','0.33'),('2015-09-03 01:24:31','78.13'),('2015-01-21 12:53:24','41.4'),('2014-05-15 05:13:30','2.52'),('2014-11-22 18:00:15','83.78'),('2015-06-18 23:18:44','34.57'),('2014-12-07 06:54:22','3.52'),('2015-01-29 15:05:26','47.98'),('2015-02-05 08:48:44','43.56'),('2014-08-18 05:34:39','89.33'),('2014-08-15 12:18:49','70.19'),('2015-09-07 14:32:49','3.28'),('2014-12-12 11:20:22','67.22'),('2014-04-02 06:26:25','89.41'),('2015-06-11 13:04:41','37.92'),('2014-08-26 04:25:07','19.86'),('2015-01-11 20:25:07','64.76'),('2014-10-29 22:14:36','44.24'),('2014-05-15 00:12:39','90.95'),('2015-01-12 12:20:20','81.08'),('2014-08-09 17:28:02','30.72'),('2015-07-10 04:15:09','68.14'),('2014-05-08 08:38:06','22'),('2014-11-03 20:01:47','20.19'),('2014-10-28 21:17:07','21.45'),('2015-03-31 06:03:42','70.5'),('2015-04-20 02:16:12','60.89'),('2015-04-21 13:58:06','67.5'),('2015-02-28 20:14:19','55.75'),('2015-09-17 13:58:44','37.72'),('2014-07-15 15:55:26','12.3'),('2014-09-05 04:30:40','65.73'),('2014-09-12 22:59:56','26.48'),('2014-08-04 10:09:14','43.77'),('2015-05-08 19:23:33','86.6'),('2015-01-27 01:17:21','46.39'),('2015-04-02 07:34:23','72.8'),('2015-01-30 15:05:44','71.84'),('2015-09-25 15:12:05','81.46'),('2015-06-18 12:33:34','76.76'),('2015-02-18 14:22:42','41.73'),('2015-03-07 15:11:55','65.65'),('2015-10-14 07:42:48','25'),('2014-11-23 10:44:31','27.88'),('2014-05-13 23:07:57','55.34'),('2014-12-27 20:36:16','74.44'),('2014-04-02 11:49:50','60.79'),('2015-05-10 02:09:43','53.16'),('2014-07-09 17:34:27','11.26'),('2015-01-11 23:36:18','65.93'),('2015-05-14 17:56:47','70.58'),('2014-07-01 02:25:31','66.23'),('2014-10-17 17:30:16','92.76'),('2015-02-06 10:55:49','32.22'),('2014-07-21 13:49:48','73.56'),('2015-06-24 15:19:32','14.5'),('2015-05-12 08:40:50','73.92'),('2014-11-13 12:40:50','22.25'),('2014-08-27 08:06:56','83.74'),('2014-10-26 14:54:50','98.33'),('2014-10-25 10:02:04','5.42'),('2015-02-03 12:07:35','78.61'),('2015-05-03 23:13:46','42.39'),('2014-06-20 14:59:37','68.48'),('2015-04-18 16:19:47','34.2'),('2015-12-22 09:34:46','86.85'),('2014-12-04 09:29:56','24.82'),('2015-08-27 17:18:05','40.49'),('2014-05-11 19:40:51','69.4'),('2015-01-03 23:22:00','58.68'),('2014-12-20 13:59:55','20.44'),('2015-04-10 05:01:51','51.18'),('2014-08-01 20:32:33','42.4'),('2015-04-23 15:36:57','10.19'),('2014-12-09 18:39:35','70.22'),('2015-10-16 11:11:50','42.21'),('2014-11-12 04:00:21','81.05'),('2014-09-25 14:11:04','44.56'),('2014-05-01 14:37:48','76.22'),('2014-08-20 15:26:52','94.45'),('2014-11-04 20:51:43','98.1'),('2014-05-03 23:54:43','97.79'),('2015-03-07 01:44:01','74.18'),('2015-02-27 17:06:54','94.53'),('2014-10-30 22:26:15','59.49'),('2015-02-14 08:56:10','6.59'),('2015-04-24 09:07:06','20.84'),('2014-07-25 04:13:41','89.38'),('2015-07-30 16:06:55','87.42'),('2014-12-28 19:05:46','80.39'),('2015-09-16 08:36:43','71.25'),('2015-11-10 01:23:36','29.44'),('2015-07-01 18:59:35','31.48'),('2015-09-06 13:52:30','23.74'),('2015-01-11 17:13:04','49.1'),('2014-12-15 14:51:25','87.1'),('2015-08-11 23:42:36','42.23'),('2015-01-30 03:42:29','26.98'),('2014-11-21 12:30:34','18.04'),('2014-12-19 08:40:53','15.09'),('2014-03-21 16:48:12','19.68'),('2015-05-26 01:54:08','66.98'),('2014-11-24 06:31:28','27.45'),('2014-12-29 10:38:03','87.58'),('2015-03-23 22:37:02','65.28'),('2014-02-22 06:18:29','57.99'),('2015-05-22 10:01:01','76.72'),('2015-02-15 03:04:15','71.75'),('2015-06-04 19:15:52','68.47'),('2015-08-02 14:16:28','40.64'),('2014-05-11 17:51:17','2.09'),('2014-11-07 07:00:04','69.98'),('2015-05-02 02:04:05','41.69'),('2015-07-31 20:27:36','46.01'),('2015-06-21 16:59:57','55.08'),('2014-12-16 11:33:51','64.05'),('2014-11-22 06:11:57','37.15'),('2015-06-07 11:44:53','42.88'),('2015-06-15 00:29:46','27.53'),('2015-07-07 06:32:53','44.63'),('2014-11-01 02:29:35','26.94'),('2015-10-17 18:41:25','49.98'),('2015-01-05 07:57:06','71.06'),('2014-07-05 07:32:43','35.22'),('2014-04-17 00:57:30','98.94'),('2014-07-12 12:59:31','64.29'),('2015-05-09 01:31:54','71.46'),('2014-10-27 07:47:46','81.46'),('2015-02-16 02:22:06','87.1'),('2014-12-15 23:01:42','68.77'),('2015-01-25 22:20:59','49.92'),('2015-08-24 10:15:42','36.78'),('2014-10-01 21:32:17','94.65'),('2015-08-12 02:00:34','78.8'),('2015-08-18 07:16:40','48.44'),('2014-10-01 20:00:00','47.93'),('2015-01-19 07:33:13','26.63'),('2015-10-02 12:18:34','35.89'),('2014-10-22 08:52:06','52.12'),('2014-03-17 13:09:09','0.7'),('2015-10-11 16:47:36','48.82'),('2014-08-03 00:23:40','86.35'),('2014-12-01 06:11:24','90.32'),('2014-06-05 00:34:43','94.39'),('2015-03-31 19:13:34','12.6'),('2015-03-18 06:29:39','59.51'),('2015-01-25 20:28:22','20.23'),('2014-10-19 18:31:02','12.12'),('2015-02-08 12:38:40','23.5'),('2014-11-09 03:38:24','52.86'),('2014-07-24 17:51:02','94.2'),('2014-10-12 05:47:41','8.7'),('2015-02-24 01:38:50','52.8'),('2014-10-26 19:22:35','88.94'),('2014-06-27 13:40:17','89.26'),('2014-10-23 14:35:07','39.86'),('2014-08-26 01:44:39','78.67'),('2015-02-02 05:47:18','17.65'),('2014-07-11 04:00:58','88.05'),('2015-07-05 17:02:37','67.64'),('2014-07-23 03:05:12','33.47'),('2014-10-11 22:47:57','51.33'),('2014-03-16 08:38:41','2.67'),('2015-04-16 00:01:43','28.07'),('2014-07-05 04:55:09','73.71'),('2015-10-27 04:49:28','39.01'),('2014-11-15 09:11:07','30.43'),('2015-08-24 00:36:18','81.01'),('2014-12-15 12:26:51','59.36'),('2014-12-30 15:30:43','61.17'),('2014-12-01 12:54:50','91.33'),('2014-06-02 10:19:31','54.44'),('2014-08-28 17:23:39','89.67'),('2015-04-06 04:48:45','3.58'),('2015-02-16 07:24:19','65.48'),('2014-02-07 02:30:55','41.97'),('2015-09-13 21:18:52','89.15'),('2015-05-03 01:16:48','99.29'),('2014-10-26 02:57:36','35.64'),('2015-04-23 06:18:00','70.19'),('2015-07-19 12:07:11','52.95'),('2014-06-02 03:30:54','40.99'),('2015-08-01 22:00:28','49.87'),('2014-05-29 05:45:13','82.73'),('2014-09-26 06:08:16','71.86'),('2014-10-28 19:41:56','14.73'),('2015-01-31 14:15:00','38.43'),('2015-06-13 04:10:14','76.82'),('2014-06-30 16:57:07','7.56'),('2015-07-13 15:35:15','30.91'),('2015-01-26 17:19:43','68.82'),('2014-04-23 01:28:27','70.6'),('2014-08-27 06:06:07','90.22'),('2014-12-04 12:24:08','11.46'),('2014-05-07 07:28:47','81'),('2014-09-17 19:34:03','70.3'),('2014-08-06 15:28:34','37.38'),('2014-06-24 09:49:25','92.31'),('2015-02-14 04:04:37','75.11'),('2015-10-10 08:58:17','16.52'),('2014-08-14 03:41:10','93.41'),('2015-06-16 00:40:44','26.46'),('2014-09-23 22:50:38','94.63'),('2015-01-02 05:12:56','56'),('2015-08-03 12:29:55','24.8'),('2014-12-03 15:06:14','72.25'),('2014-11-28 02:53:35','10.26'),('2015-09-01 11:41:06','70.18'),('2015-11-13 12:43:41','37.22'),('2014-05-12 02:48:11','82.79'),('2015-04-26 20:36:41','18.51'),('2014-09-09 09:15:32','45.13'),('2014-07-10 12:14:52','10.81'),('2015-02-26 05:52:28','46.54'),('2015-03-25 15:18:09','31.16'),('2015-03-02 05:38:40','35.85'),('2015-01-04 10:24:39','26.68'),('2015-04-17 04:31:18','66.57'),('2015-01-06 04:41:44','5.55'),('2015-04-12 09:35:06','46.3'),('2014-11-01 12:03:37','54'),('2015-03-27 06:03:15','69.62'),('2015-02-26 10:45:56','11.53'),('2015-01-22 21:49:50','42.52'),('2015-08-15 11:48:56','90.72'),('2015-01-06 15:50:49','9.43'),('2014-06-25 08:47:27','5.07'),('2015-01-05 07:26:29','50.69'),('2014-12-19 17:59:35','18.23'),('2014-12-28 10:34:56','90.12'),('2015-02-13 20:48:23','16.9'),('2015-11-15 06:49:51','18.77'),('2014-07-06 04:44:46','45.26'),('2015-04-05 23:17:02','14.31'),('2015-01-14 02:37:40','22.56'),('2014-11-04 09:36:05','18.52'),('2015-05-26 21:11:45','72.43'),('2015-03-25 16:29:06','94.31'),('2014-07-18 22:33:22','89.23'),('2015-05-29 11:26:58','92.19'),('2015-10-27 14:59:10','65.54'),('2014-09-06 21:47:07','54.49'),('2015-05-21 14:14:42','89.88'),('2015-05-25 19:25:26','19.23'),('2014-05-02 13:19:46','11.8'),('2014-12-04 09:58:19','25.03'),('2014-12-16 01:54:36','83.84'),('2015-07-18 23:35:48','31.17'),('2015-10-14 08:11:58','29.61'),('2015-01-13 14:53:35','27.52'),('2014-07-31 06:06:10','2.1'),('2014-05-13 10:08:24','24.6'),('2014-05-23 18:28:33','11.64'),('2014-06-29 00:19:50','66.58'),('2014-09-02 03:37:55','12.24'),('2015-04-07 13:39:57','81.35'),('2015-02-06 07:15:05','77.69'),('2014-10-22 15:09:28','18.52'),('2014-11-20 04:52:57','83.9'),('2015-01-15 01:21:57','11.82'),('2015-03-02 21:28:29','80.51'),('2014-04-20 21:09:03','21.63'),('2014-07-29 04:18:18','56.89'),('2014-09-18 09:22:26','67.3'),('2015-08-05 05:42:49','47.98'),('2015-02-16 08:02:12','21.25'),('2015-02-26 04:43:04','4.74'),('2014-11-19 12:28:15','5.01'),('2015-07-12 02:20:43','72.9'),('2015-03-29 14:56:32','96.4'),('2014-12-28 00:07:05','43.68'),('2015-08-21 10:01:54','92.03'),('2015-03-26 03:23:40','83.02'),('2015-03-30 20:44:19','57.13'),('2015-04-01 03:28:50','28.66'),('2014-03-07 02:32:29','50.7'),('2014-08-06 09:22:54','82.2'),('2015-10-29 05:56:40','7.11'),('2014-12-10 02:17:56','49.51'),('2014-11-28 19:26:51','68.59'),('2015-05-05 01:45:32','50.25'),('2015-08-23 19:39:23','68.18'),('2015-04-14 09:04:33','97.75'),('2015-04-13 23:22:29','79.07'),('2014-12-01 12:58:16','86.41'),('2014-09-13 18:37:12','77.93'),('2015-04-23 07:24:50','1.07'),('2014-09-09 14:24:43','81.75'),('2014-10-31 12:48:57','11.2'),('2014-11-29 08:11:21','89'),('2014-05-20 17:09:22','17.64'),('2015-01-12 19:26:04','7.94'),('2015-04-01 07:34:43','58.93'),('2015-12-01 05:36:24','0'),('2014-07-27 23:57:26','8.91'),('2014-11-10 09:13:58','12.48'),('2014-04-18 15:48:57','58.18'),('2014-05-30 04:01:41','17.1'),('2014-09-22 11:15:12','97.23'),('2014-12-04 19:33:30','17.04'),('2015-06-22 08:52:35','38.27'),('2015-10-14 10:05:42','1.28'),('2015-01-08 11:58:55','69.04'),('2014-06-14 10:01:41','88.95'),('2014-06-23 18:47:31','52.06'),('2014-12-03 04:38:02','62.79'),('2014-10-29 03:22:25','17.97'),('2015-02-16 20:48:57','41.84'),('2014-12-28 10:13:37','62.33'),('2014-09-29 12:09:46','56.71'),('2014-10-07 20:56:12','54.25'),('2015-04-02 22:35:03','8.65'),('2015-06-11 13:28:12','27.64'),('2015-08-09 07:52:16','77.4'),('2015-05-02 22:01:56','46.15'),('2015-06-02 10:06:58','1.82'),('2015-05-20 18:27:30','99.75'),('2014-05-09 23:34:04','30.54'),('2014-12-04 15:05:02','50.29'),('2015-06-15 14:25:38','98.49'),('2015-04-25 22:56:46','21.47'),('2014-12-10 02:11:14','58.72'),('2014-09-09 07:29:24','17.55'),('2014-09-12 08:11:07','18.6'),('2015-02-24 16:38:02','13.85'),('2014-03-03 01:44:53','5.91'),('2014-05-02 22:47:06','98.83'),('2014-03-16 19:39:06','46.48'),('2014-05-16 16:58:31','50.35'),('2015-03-16 07:28:18','73.2'),('2015-03-30 15:27:20','96.22'),('2014-12-04 22:44:50','21.24'),('2015-07-05 06:30:59','1.12'),('2015-08-08 23:09:48','16.43'),('2015-07-02 17:10:34','84.44'),('2014-10-09 00:43:09','11.19'),('2015-01-27 21:49:48','15.56'),('2015-02-07 19:01:33','42.36'),('2015-04-15 16:41:26','69.01'),('2015-02-23 01:36:22','77.22'),('2014-11-18 09:52:04','13.97'),('2015-07-07 22:05:43','32.85'),('2014-05-29 09:13:40','50.95'),('2014-08-13 17:40:58','88.61'),('2014-04-11 09:30:58','13.05'),('2014-05-17 15:53:33','51.71'),('2014-07-10 02:30:08','84.11'),('2015-07-21 07:07:49','32.42'),('2014-01-19 18:54:05','22.5'),('2015-03-22 19:37:41','24.49'),('2015-04-26 23:56:26','51.86'),('2014-06-10 13:19:25','87.16'),('2014-08-09 07:32:03','72.64'),('2015-05-28 23:02:28','58.03'),('2015-02-16 03:54:43','80.89'),('2015-03-02 22:53:18','4.3'),('2014-12-09 17:28:35','60.37'),('2015-08-09 08:10:58','13.17'),('2014-12-08 10:47:45','23.62'),('2015-07-14 14:47:14','34.3'),('2015-05-23 23:31:26','6.38'),('2014-12-08 14:41:56','84.27'),('2015-04-17 08:47:37','69.71'),('2014-01-14 14:40:16','1.45'),('2014-02-09 20:18:29','34.17'),('2014-09-21 00:33:28','94.18'),('2015-09-11 20:21:28','11.59'),('2015-03-06 01:35:17','84.61'),('2015-04-05 05:26:15','56.16'),('2014-11-28 04:10:09','8.01'),('2015-08-11 14:45:57','24.87'),('2015-04-16 08:44:07','73'),('2015-08-15 08:11:26','68.66'),('2015-10-23 07:25:48','21.97'),('2014-12-23 09:18:23','3.44'),('2014-04-06 11:57:41','82.13'),('2014-07-25 05:40:38','77.61'),('2014-11-30 07:16:04','91.02'),('2015-11-12 16:11:20','86.32'),('2014-07-12 14:55:09','48.17'),('2014-11-11 08:28:40','23.06'),('2015-08-24 07:26:38','44.11'),('2015-04-26 02:38:34','5.84'),('2014-10-26 06:28:43','76.24'),('2014-11-08 10:58:08','41.23'),('2015-03-13 02:37:33','39.82'),('2014-07-17 05:57:27','72.17'),('2014-12-19 17:44:19','98.94'),('2014-09-19 06:17:34','66.65'),('2015-03-01 20:31:06','60.17'),('2014-10-15 03:35:54','14.4'),('2015-07-03 17:55:01','26.96'),('2015-01-10 12:14:39','68.33'),('2015-06-27 11:48:29','38.28'),('2015-03-12 10:05:31','17.58'),('2015-04-20 04:34:39','72.67'),('2014-09-19 17:45:20','38.89'),('2014-04-14 20:52:57','48.76'),('2014-05-26 11:14:14','51.04'),('2015-03-12 19:12:03','66.91'),('2014-10-02 04:42:28','74.44'),('2014-11-08 22:14:03','48.87'),('2015-01-29 15:40:45','99.92'),('2015-03-15 02:03:05','73.71'),('2014-11-23 00:48:20','99.3'),('2015-01-18 05:07:11','53.4'),('2014-08-25 23:51:22','91.1'),('2014-08-31 14:17:40','45.94'),('2014-08-20 15:28:52','15.57'),('2015-10-27 08:34:00','5.08'),('2014-06-21 23:22:59','85.75'),('2014-07-18 03:23:54','22.68'),('2014-09-13 20:32:49','99.58'),('2014-06-01 12:03:22','53.84'),('2015-04-10 21:44:57','18.31'),('2014-09-07 18:26:53','10.97'),('2015-05-07 20:40:33','83.51'),('2015-04-29 00:00:05','84.46'),('2014-06-22 13:54:45','2.15'),('2015-02-03 05:00:18','91.39'),('2015-07-04 20:49:04','53.43'),('2015-01-21 14:18:28','6.92'),('2014-11-01 02:34:43','11.1'),('2015-02-15 08:01:57','1.1'),('2014-06-08 17:01:12','88.32'),('2014-06-05 12:45:11','36.24'),('2015-05-06 04:44:59','14.12'),('2014-12-06 07:41:09','51.02'),('2015-02-08 02:40:45','0.81'),('2015-04-01 02:52:00','87.24'),('2014-12-05 09:02:04','57.57'),('2015-06-29 17:24:35','50.21'),('2015-05-10 16:52:57','62.73'),('2014-02-16 12:35:58','62.45'),('2015-08-06 20:09:30','2.33'),('2015-04-19 20:31:47','0'),('2015-09-27 14:08:31','37.43'),('2014-01-11 21:05:44','94.49'),('2015-06-09 05:51:37','48.63'),('2015-02-03 15:17:22','39.22'),('2014-08-03 04:57:40','24.91'),('2015-06-16 04:07:40','33.91'),('2015-07-28 00:18:45','39.96'),('2014-04-18 05:35:40','81.18'),('2015-02-10 03:10:38','15.55'),('2014-11-10 03:10:10','52.31'),('2014-08-28 19:48:42','64.97'),('2015-05-25 07:24:43','85.05'),('2014-11-19 06:04:30','50.14'),('2014-12-13 17:55:21','14.41'),('2014-02-26 17:48:40','99.31'),('2015-10-13 01:01:23','55.73'),('2015-04-10 04:59:08','76.71'),('2014-08-27 07:15:54','32.49'),('2014-11-20 10:38:22','28.24'),('2014-04-05 03:02:23','81.57'),('2015-09-12 23:56:38','63.18'),('2014-12-03 05:29:15','51.69'),('2014-10-29 04:34:03','29.11'),('2015-02-19 21:15:56','33.62'),('2015-08-25 13:58:24','3.16'),('2015-02-27 11:43:49','45.07'),('2015-02-04 05:11:10','20.7'),('2015-03-29 22:13:46','38.83'),('2014-09-26 02:21:36','47.31'),('2015-04-02 16:39:26','36.18'),('2015-04-05 16:53:52','17.05'),('2014-12-20 10:07:03','86.81'),('2015-06-14 13:13:13','84.68'),('2014-12-01 12:28:54','30.61'),('2015-02-21 13:38:01','62.64'),('2014-07-21 05:42:52','84.88'),('2015-04-15 13:05:24','98.81'),('2015-01-09 00:57:41','12.81'),('2015-01-09 07:31:02','57.07'),('2015-03-22 19:28:07','19.53'),('2015-02-03 06:34:45','21.91'),('2014-04-23 20:43:54','25.68'),('2015-04-09 12:56:04','62.89'),('2015-03-30 15:02:57','37.45'),('2015-02-17 10:45:12','97.84'),('2014-11-02 17:58:12','15.76'),('2014-07-01 15:18:40','19.38'),('2015-03-10 15:43:36','24.74'),('2014-08-10 00:46:39','56.35'),('2015-05-12 17:36:39','40.21'),('2015-07-08 15:55:29','95.31'),('2014-08-08 02:31:26','38.84'),('2015-01-23 07:59:23','33.71'),('2014-09-06 15:03:47','48.21'),('2014-11-02 01:21:45','46.89'),('2015-06-19 10:20:45','49.28'),('2014-07-25 18:55:50','76.24'),('2015-07-26 07:08:36','68.89'),('2014-12-27 08:23:42','53.04'),('2015-09-18 18:45:21','83.1'),('2014-06-30 21:51:08','15.96'),('2015-05-10 13:48:17','32.96'),('2014-01-05 06:24:27','5.75'),('2014-05-06 15:54:51','69.87'),('2014-03-22 16:10:54','34.83'),('2015-05-19 20:52:49','0.12'),('2014-06-19 05:33:46','69.46'),('2014-10-24 21:18:20','53.68'),('2014-07-19 14:16:52','19.07'),('2015-10-12 11:16:38','76.12'),('2014-07-31 08:37:27','74.48'),('2015-04-11 21:29:50','3.39'),('2015-06-22 18:57:47','59.99'),('2014-05-27 20:39:15','7.54'),('2014-05-27 08:22:56','83.48'),('2015-03-17 12:57:58','75.24'),('2014-09-22 14:59:23','64.84'),('2015-05-29 05:08:30','56.14'),('2014-11-27 02:38:42','40.35'),('2014-05-20 20:48:48','12.39'),('2015-03-26 05:42:22','1.69'),('2015-02-10 10:33:29','0.5'),('2015-08-17 14:36:37','94.28'),('2015-02-09 15:48:39','29.33'),('2014-10-11 02:25:35','0.38'),('2015-02-10 03:15:29','38.75'),('2014-11-06 23:10:33','89.67'),('2014-12-18 10:07:31','27.62'),('2015-02-02 12:19:44','88.79'),('2015-02-15 12:58:38','57.22'),('2014-07-28 05:19:54','80.25'),('2015-04-07 00:10:33','75.39'),('2014-08-20 10:10:17','64.22'),('2014-08-13 12:59:19','1.98'),('2014-02-02 16:30:00','24.86'),('2014-07-20 05:20:27','35'),('2014-06-18 01:49:43','28.8'),('2015-01-08 22:08:07','59.37'),('2015-04-19 13:29:15','71.55'),('2015-03-15 21:23:34','21.31'),('2015-02-27 23:18:07','72.95'),('2014-03-27 10:35:22','60.65'),('2015-06-07 22:02:45','82.65'),('2015-04-15 09:47:41','74.25'),('2015-03-13 16:23:08','8.31'),('2014-12-25 10:25:38','60.12'),('2015-04-03 03:49:10','85.38'),('2014-09-05 20:03:12','7.39'),('2015-07-01 09:11:37','85.94'),('2015-06-01 22:05:12','75.49'),('2014-11-16 02:44:19','18.58'),('2015-09-13 02:47:51','48.57'),('2015-04-22 01:53:44','83.93'),('2014-06-21 00:09:18','2.71'),('2014-04-05 05:16:11','50.45'),('2014-12-30 05:25:18','63.04'),('2014-08-20 23:29:32','80.84'),('2014-12-21 01:02:31','65.57'),('2015-06-07 21:06:47','62.94'),('2015-05-30 00:56:42','64.59'),('2014-12-25 05:35:53','68.12'),('2014-06-27 10:22:56','5.71'),('2014-05-21 03:29:06','17.88'),('2014-08-02 18:30:30','76.5'),('2014-06-25 14:36:31','37.04'),('2015-09-02 17:00:25','97.63'),('2014-08-22 02:10:17','10.26'),('2014-12-24 22:34:46','85.14'),('2015-03-16 15:46:03','34.38'),('2014-11-17 23:47:51','51.56'),('2014-10-29 10:07:12','96.52'),('2015-04-25 19:07:23','29.21'),('2014-11-10 04:39:17','31.06'),('2015-02-23 20:05:52','96.45'),('2014-08-17 14:11:08','77.13'),('2015-02-11 12:14:46','66.46'),('2015-03-08 16:43:26','34.44'),('2014-07-17 19:17:29','60.9'),('2014-06-01 07:49:05','41.72'),('2014-07-13 04:37:05','93.8'),('2015-02-22 10:24:55','77.43'),('2015-03-13 08:33:24','61.91'),('2014-10-03 15:22:15','62.53'),('2015-02-17 10:41:05','30.83'),('2015-01-02 03:47:38','77.81'),('2014-09-27 11:04:37','92.73'),('2014-12-20 11:44:54','17.47'),('2014-07-16 12:50:34','94.16'),('2014-12-03 10:15:04','61.27'),('2015-03-12 13:23:46','59.1'),('2014-07-28 22:56:40','73.48'),('2014-07-29 05:54:39','82.9'),('2015-05-26 17:24:09','48.08'),('2015-06-16 04:38:09','7.93'),('2015-08-22 17:02:45','36.35'),('2014-12-04 10:32:27','93.55'),('2014-08-31 19:03:40','2.98'),('2015-04-01 12:20:56','12.31'),('2014-11-15 13:17:39','4.08'),('2015-02-13 06:08:37','93.78'),('2014-11-29 08:36:13','92.06'),('2014-08-22 14:26:59','33.04'),('2014-08-11 07:44:23','57.79'),('2014-06-11 09:04:32','30.92'),('2014-12-02 09:05:52','13.19'),('2015-07-25 22:49:39','20.74'),('2015-04-29 16:36:35','2.9'),('2014-10-10 12:28:45','72.16'),('2015-02-19 17:55:28','94.62'),('2014-12-31 13:02:26','21.03'),('2015-03-20 03:20:29','27.67'),('2015-02-26 07:15:26','45.84'),('2015-07-22 06:23:38','19.8'),('2015-02-28 23:36:35','46.67'),('2014-12-17 08:11:44','98.57'),('2015-06-02 14:13:26','25.63'),('2014-07-11 00:40:49','89.32'),('2014-07-30 02:25:30','53.73'),('2014-11-30 03:40:34','86.39'),('2014-06-22 08:39:33','60.87'),('2015-02-16 13:32:07','36.61'),('2014-06-14 05:04:38','85.16'),('2014-07-17 12:45:35','24.42'),('2015-02-21 15:44:12','54.18'),('2015-09-14 22:27:50','74.7'),('2015-06-28 00:15:45','13.31'),('2015-01-02 10:30:39','48.15'),('2014-02-21 13:48:31','92.5'),('2015-03-12 00:57:17','0.3'),('2015-07-13 11:34:27','26.45'),('2015-03-22 08:11:16','8.18'),('2014-04-17 02:34:42','40.48'),('2015-04-23 05:15:14','17.44'),('2014-09-28 10:44:57','1.9'),('2014-12-20 18:06:32','81.07'),('2014-07-11 02:31:45','34.32'),('2014-09-17 21:26:06','57.07'),('2014-10-27 10:32:02','39.14'),('2014-05-26 20:01:50','89.91'),('2014-10-22 18:03:44','36.4'),('2014-10-23 12:11:37','84.54'),('2014-12-17 03:52:02','80.23'),('2014-11-19 00:11:19','35.85'),('2014-09-02 02:43:06','1.79'),('2015-09-05 16:24:59','74.96'),('2015-03-23 11:57:45','48.65'),('2014-07-15 05:47:35','68.15'),('2014-10-04 16:30:04','38.63'),('2015-03-13 07:42:58','50.41'),('2015-02-27 23:47:09','89.9'),('2015-06-06 10:34:10','30.85'),('2014-12-29 07:22:19','40.53'),('2014-10-31 12:25:36','9.41'),('2014-09-19 23:07:21','58.8'),('2014-12-16 22:19:09','49.63'),('2015-04-25 05:16:47','82.85'),('2015-02-22 07:47:16','87.8'),('2015-01-05 20:30:38','86.98'),('2015-03-10 10:36:15','87.48'),('2015-08-21 02:36:30','49.88'),('2014-10-21 14:23:28','28.7'),('2014-03-05 20:54:10','49.31'),('2015-04-11 07:42:22','70.15'),('2014-04-05 00:09:02','80.46'),('2015-03-06 16:01:11','43.07'),('2015-03-20 01:33:35','72.78'),('2015-04-28 00:16:57','59.71'),('2014-11-13 00:30:55','11.91'),('2015-08-09 05:38:28','40.24'),('2014-11-21 01:24:32','97.86'),('2014-09-24 04:25:47','42.57'),('2015-05-14 00:23:16','63.3'),('2014-06-17 03:26:33','14.66'),('2014-10-15 20:57:43','63.83'),('2014-09-22 20:02:57','10.68'),('2014-09-30 01:59:42','30.58'),('2015-01-14 22:19:29','58.29'),('2014-12-03 00:09:22','37.66'),('2014-08-11 05:45:54','39.22'),('2014-11-06 21:01:32','21.02'),('2014-06-22 10:26:04','22.44'),('2014-11-12 23:07:25','27.61'),('2014-06-29 04:11:48','2.85'),('2014-11-22 19:27:06','82.52'),('2015-02-24 22:51:36','25.06'),('2014-12-09 03:40:06','76.76'),('2014-12-03 08:17:22','64.13'),('2014-05-28 08:09:12','58.11'),('2015-05-29 16:28:53','16.9'),('2014-09-07 14:25:04','83.1'),('2014-09-14 08:28:27','91.75'),('2014-09-19 20:41:03','96.03'),('2014-06-05 05:57:55','5.13'),('2014-08-26 10:47:51','17.96'),('2014-07-22 02:47:32','97.84'),('2014-09-23 23:53:58','42.47'),('2015-05-06 08:36:14','56'),('2014-10-17 15:04:21','33.56'),('2015-03-15 09:33:02','72.78'),('2014-08-28 17:07:35','16.31'),('2015-02-08 04:16:43','39.74'),('2015-08-18 19:54:56','38.56'),('2015-07-18 09:45:28','11.71'),('2015-06-24 22:56:57','95.55'),('2015-08-31 08:31:27','27.89'),('2015-03-04 10:21:27','51.13'),('2014-10-01 18:29:06','37.14'),('2015-05-19 19:10:54','90.83'),('2015-03-01 23:29:18','63.56'),('2014-11-15 13:11:03','32.39'),('2015-05-18 08:35:45','75.05'),('2014-07-15 15:45:15','29.63'),('2015-09-19 16:16:59','44.3'),('2014-11-16 09:19:05','43.62'),('2015-08-22 13:50:34','93.46'),('2015-07-25 11:51:39','99.21'),('2014-10-03 19:09:55','13.5'),('2015-03-30 09:01:47','1.4'),('2014-12-18 08:56:55','47.34'),('2015-06-21 12:07:38','49.55'),('2014-08-05 04:37:03','85.61'),('2014-09-10 14:00:41','11.24'),('2015-05-13 08:16:59','87.93'),('2014-04-26 16:23:22','31.1'),('2014-07-24 03:33:01','13.96'),('2015-03-08 05:33:53','77.31'),('2014-05-30 09:21:43','7.47'),('2014-11-02 18:44:46','10.58'),('2014-12-18 18:58:15','44.38'),('2015-06-24 23:34:45','64.88'),('2015-04-29 02:09:55','92.39'),('2014-12-07 12:37:10','39.16'),('2014-11-23 11:08:33','37.96'),('2015-05-11 18:42:45','79.5'),('2014-07-05 16:11:00','35.15'),('2015-01-06 17:28:25','65.13'),('2014-07-07 20:59:25','61.5'),('2014-10-01 03:28:18','61.67'),('2014-12-18 19:02:41','73.33'),('2014-11-23 09:52:16','1.21'),('2014-07-07 07:31:58','16.63'),('2014-11-26 20:08:06','98.1'),('2015-06-07 11:27:41','99.08'),('2015-02-10 09:17:32','77.55'),('2015-03-13 21:58:09','28.68'),('2014-10-08 14:40:30','0.47'),('2015-03-07 00:52:34','63.41'),('2014-06-29 05:53:47','59.73'),('2014-06-21 12:05:13','66.65'),('2015-04-29 11:48:03','19.07'),('2015-04-12 13:45:44','25.73'),('2014-06-29 10:23:56','43.94'),('2015-10-23 00:22:59','20.55'),('2014-05-20 09:54:58','57.8'),('2014-09-23 10:59:51','68.78'),('2015-11-12 08:06:38','41.63'),('2014-06-22 11:56:42','73.39'),('2015-06-23 12:39:39','47.38'),('2015-04-08 14:23:38','8.5'),('2015-07-20 13:42:11','0.78'),('2014-09-26 07:38:44','33.04'),('2014-12-19 21:42:25','22.3'),('2014-06-30 14:09:52','92.16'),('2015-06-21 15:07:37','70.41'),('2014-04-03 07:45:42','44.4'),('2014-07-14 16:32:38','51.26'),('2014-11-02 05:59:15','1.58'),('2015-07-01 04:20:40','42.32'),('2015-02-15 13:55:34','43.13'),('2014-08-01 08:50:27','7.46'),('2014-03-03 15:18:24','32.05'),('2014-10-17 21:52:38','62.98'),('2014-12-23 12:57:06','72.88'),('2014-09-11 09:29:22','29.67'),('2015-02-27 21:30:11','6.1'),('2014-12-09 20:04:59','86.64'),('2014-11-08 14:05:20','66.42'),('2015-12-05 04:54:44','74.04'),('2015-01-27 08:37:08','30.26'),('2015-10-03 00:55:09','21.87');
39
- /*!40000 ALTER TABLE `store` ENABLE KEYS */;
40
- UNLOCK TABLES;
41
-
42
- --
43
- -- Dumping events for database 'ueberdb'
44
- --
45
-
46
- --
47
- -- Dumping routines for database 'ueberdb'
48
- --
49
- /*!50003 DROP PROCEDURE IF EXISTS `generate_data` */;
50
- /*!50003 SET @saved_cs_client = @@character_set_client */ ;
51
- /*!50003 SET @saved_cs_results = @@character_set_results */ ;
52
- /*!50003 SET @saved_col_connection = @@collation_connection */ ;
53
- /*!50003 SET character_set_client = utf8mb4 */ ;
54
- /*!50003 SET character_set_results = utf8mb4 */ ;
55
- /*!50003 SET collation_connection = utf8mb4_general_ci */ ;
56
- /*!50003 SET @saved_sql_mode = @@sql_mode */ ;
57
- /*!50003 SET sql_mode = 'NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */ ;
58
- DELIMITER ;;
59
- CREATE DEFINER=`root`@`localhost` PROCEDURE `generate_data`()
60
- BEGIN
61
- DECLARE i INT DEFAULT 0;
62
- WHILE i < 1000 DO
63
- INSERT INTO `store` (`key`,`value`) VALUES (
64
- FROM_UNIXTIME(FLOOR(RAND()*31536000)+UNIX_TIMESTAMP('2014-01-01 01:00:00')+FLOOR(RAND()*31536000)),
65
- ROUND(RAND()*100,2)
66
- );
67
- SET i = i + 1;
68
- END WHILE;END ;;
69
- DELIMITER ;
70
- /*!50003 SET sql_mode = @saved_sql_mode */ ;
71
- /*!50003 SET character_set_client = @saved_cs_client */ ;
72
- /*!50003 SET character_set_results = @saved_cs_results */ ;
73
- /*!50003 SET collation_connection = @saved_col_connection */ ;
74
- /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
75
-
76
- /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
77
- /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
78
- /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
79
- /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
80
- /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
81
- /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
82
- /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
83
-
84
- -- Dump completed on 2020-05-05 8:20:49
package/test/test.ts DELETED
@@ -1,328 +0,0 @@
1
- // @ts-expect-error TS(7016): Could not find a declaration file for module 'wtfn... Remove this comment to see the full error message
2
- import wtfnode from 'wtfnode';
3
- // @ts-expect-error TS(7016): Could not find a declaration file for module 'cli-... Remove this comment to see the full error message
4
- import Clitable from 'cli-table';
5
- // @ts-ignore
6
- import Randexp from 'randexp';
7
- import assert$0 from 'assert';
8
- import {databases as databases$0} from './lib/databases';
9
- import {promises} from 'fs';
10
- import logging from '../lib/logging';
11
- import * as ueberdb from '../index';
12
- 'use strict';
13
- const assert = assert$0.strict;
14
- const databases = {databases: databases$0}.databases;
15
- const fs = {promises}.promises;
16
- const maxKeyLength = 100;
17
- const randomString = (length = maxKeyLength) => new Randexp(new RegExp(`.{${length}}`)).gen();
18
- // eslint-disable-next-line mocha/no-top-level-hooks
19
- after(async () => {
20
- // Add a timeout to forcibly exit if something is keeping node from exiting cleanly.
21
- // The timeout is unref()ed so that it doesn't prevent node from exiting when done.
22
- setTimeout(() => {
23
- console.error('node should have exited by now but something is keeping it open ' +
24
- 'such as an open connection or active timer');
25
- wtfnode.dump();
26
- process.exit(1); // eslint-disable-line n/no-process-exit
27
- }, 5000).unref();
28
- });
29
-
30
- describe(__filename, () => {
31
- let speedTable: any;
32
- let db: any;
33
- before(async () => {
34
- speedTable = new Clitable({
35
- head: [
36
- 'Database',
37
- 'read cache',
38
- 'write buffer',
39
- '#',
40
- 'ms/set',
41
- 'ms/get',
42
- 'ms/findKeys',
43
- 'ms/remove',
44
- 'total ms',
45
- 'total ms/#',
46
- ],
47
- colWidths: [15, 15, 15, 8, 13, 13, 13, 13, 13, 13],
48
- });
49
- });
50
- after(async () => {
51
- console.log(speedTable.toString());
52
- });
53
- Object.keys(databases).filter((v)=>v === "sqlite")
54
- .forEach((database) => {
55
- // @ts-ignore
56
- const dbSettings = databases[database];
57
- describe(database, () => {
58
- for (const readCache of [false, true]) {
59
- describe(`${readCache ? '' : 'no '}read cache`, () => {
60
- for (const writeBuffer of [false, true]) {
61
- describe(`${writeBuffer ? '' : 'no '}write buffer`, function (this: any) {
62
- this.timeout(5000);
63
- before(async () => {
64
- if (dbSettings.filename) { await fs.unlink(dbSettings.filename).catch(() => { }); }
65
- db = new ueberdb.Database(database, dbSettings, {
66
- ...(readCache ? {} : {cache: 0}),
67
- ...(writeBuffer ? {} : {writeInterval: 0}),
68
- }, new logging.ConsoleLogger());
69
- await db.init();
70
- });
71
- after(async () => {
72
- await db.close();
73
- if (dbSettings.filename) { await fs.unlink(dbSettings.filename).catch(() => { }); }
74
- });
75
- describe('white space in key is not ignored', () => {
76
- for (const space of [false, true]) {
77
- describe(`key ${space ? 'has' : 'does not have'} a trailing space`, () => {
78
- let input: any;
79
- let key: any;
80
- before(async () => {
81
- input = {a: 1, b: new Randexp(/.+/).gen()};
82
- key = randomString(maxKeyLength - 1) + (space ? ' ' : '');
83
- await db.set(key, input);
84
- });
85
- it('get(key) -> record', async () => {
86
- const output = await db.get(key);
87
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
88
- assert.equal(JSON.stringify(output), JSON.stringify(input));
89
- });
90
- it('get(`${key} `) -> nullish', async () => {
91
- const output = await db.get(`${key} `);
92
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
93
- assert(output == null);
94
- });
95
- if (space) {
96
- it('get(key.slice(0, -1)) -> nullish', async () => {
97
- const output = await db.get(key.slice(0, -1));
98
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
99
- assert(output == null);
100
- });
101
- }
102
- });
103
- }
104
- });
105
- it('get of unknown key -> nullish', async () => {
106
- const key = randomString();
107
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
108
- assert((await db.get(key)) == null);
109
- });
110
- it('set+get works', async () => {
111
- const input = {a: 1, b: new Randexp(/.+/).gen()};
112
- const key = randomString();
113
- await db.set(key, input);
114
- const output = await db.get(key);
115
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
116
- assert.equal(JSON.stringify(output), JSON.stringify(input));
117
- });
118
- it('set+get with random key/value works', async () => {
119
- const input = {testLongString: new Randexp(/[a-f0-9]{50000}/).gen()};
120
- const key = randomString();
121
- await db.set(key, input);
122
- const output = await db.get(key);
123
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
124
- assert.equal(JSON.stringify(output), JSON.stringify(input));
125
- });
126
- it('findKeys works', async function (this: any) {
127
- if (database === 'mongodb') { this.skip(); } // TODO: Fix mongodb.
128
- // TODO setting a key with non ascii chars
129
- const key = new Randexp(/([a-z]\w{0,20})foo\1/).gen();
130
- await Promise.all([
131
- db.set(key, true),
132
- db.set(`${key}a`, true),
133
- db.set(`nonmatching_${key}`, false),
134
- ]);
135
- const keys = await db.findKeys(`${key}*`, null);
136
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
137
- assert.deepEqual(keys.sort(), [key, `${key}a`]);
138
- });
139
- it('findKeys with exclusion works', async function (this: any) {
140
- if (database === 'mongodb') { this.skip(); } // TODO: Fix mongodb.
141
- const key = new Randexp(/([a-z]\w{0,20})foo\1/).gen();
142
- await Promise.all([
143
- db.set(key, true),
144
- db.set(`${key}a`, true),
145
- db.set(`${key}b`, false),
146
- db.set(`${key}b2`, false),
147
- db.set(`nonmatching_${key}`, false),
148
- ]);
149
- const keys = await db.findKeys(`${key}*`, `${key}b*`);
150
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
151
- assert.deepEqual(keys.sort(), [key, `${key}a`].sort());
152
- });
153
- it('findKeys with no matches works', async () => {
154
- const key = new Randexp(/([a-z]\w{0,20})foo\1/).gen();
155
- await db.set(key, true);
156
- const keys = await db.findKeys(`${key}_nomatch_*`, null);
157
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
158
- assert.deepEqual(keys, []);
159
- });
160
- it('findKeys with no wildcard works', async () => {
161
- const key = new Randexp(/([a-z]\w{0,20})foo\1/).gen();
162
- await db.set(key, true);
163
- const keys = await db.findKeys(key, null);
164
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
165
- assert.deepEqual(keys, [key]);
166
- });
167
- it('remove works', async () => {
168
- const input = {a: 1, b: new Randexp(/.+/).gen()};
169
- const key = randomString();
170
- await db.set(key, input);
171
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
172
- assert.equal(JSON.stringify(await db.get(key)), JSON.stringify(input));
173
- await db.remove(key);
174
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
175
- assert((await db.get(key)) == null);
176
- });
177
- it('getSub of existing property works', async () => {
178
- await db.set('k', {sub1: {sub2: 'v'}});
179
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
180
- assert.equal(await db.getSub('k', ['sub1', 'sub2']), 'v');
181
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
182
- assert.deepEqual(await db.getSub('k', ['sub1']), {sub2: 'v'});
183
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
184
- assert.deepEqual(await db.getSub('k', []), {sub1: {sub2: 'v'}});
185
- });
186
- it('getSub of missing property returns nullish', async () => {
187
- await db.set('k', {sub1: {}});
188
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
189
- assert((await db.getSub('k', ['sub1', 'sub2'])) == null);
190
- await db.set('k', {});
191
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
192
- assert((await db.getSub('k', ['sub1', 'sub2'])) == null);
193
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
194
- assert((await db.getSub('k', ['sub1'])) == null);
195
- await db.remove('k');
196
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
197
- assert((await db.getSub('k', ['sub1', 'sub2'])) == null);
198
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
199
- assert((await db.getSub('k', ['sub1'])) == null);
200
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
201
- assert((await db.getSub('k', [])) == null);
202
- });
203
- it('setSub can modify an existing property', async () => {
204
- await db.set('k', {sub1: {sub2: 'v'}});
205
- await db.setSub('k', ['sub1', 'sub2'], 'v2');
206
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
207
- assert.deepEqual(await db.get('k'), {sub1: {sub2: 'v2'}});
208
- await db.setSub('k', ['sub1'], 'v2');
209
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
210
- assert.deepEqual(await db.get('k'), {sub1: 'v2'});
211
- await db.setSub('k', [], 'v3');
212
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
213
- assert.equal(await db.get('k'), 'v3');
214
- });
215
- it('setSub can add a new property', async () => {
216
- await db.remove('k');
217
- await db.setSub('k', [], {});
218
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
219
- assert.deepEqual(await db.get('k'), {});
220
- await db.setSub('k', ['sub1'], {});
221
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
222
- assert.deepEqual(await db.get('k'), {sub1: {}});
223
- await db.setSub('k', ['sub1', 'sub2'], 'v');
224
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
225
- assert.deepEqual(await db.get('k'), {sub1: {sub2: 'v'}});
226
- await db.remove('k');
227
- await db.setSub('k', ['sub1', 'sub2'], 'v');
228
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
229
- assert.deepEqual(await db.get('k'), {sub1: {sub2: 'v'}});
230
- });
231
- it('setSub rejects attempts to set properties on primitives', async () => {
232
- for (const v of ['hello world', 42, true]) {
233
- await db.set('k', v);
234
- assert.rejects(db.setSub('k', ['sub'], 'x'), {
235
- name: 'TypeError',
236
- message: /property "sub" on non-object/,
237
- });
238
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
239
- assert.deepEqual(await db.get('k'), v);
240
- }
241
- });
242
- it('speed is acceptable', async function (this: any) {
243
- this.timeout(180000);
244
- const {speeds: {count = 1000, setMax = 3, getMax = 0.1, findKeysMax = 3, removeMax = 1} = {}} = dbSettings || {};
245
- const input = {a: 1, b: new Randexp(/.+/).gen()};
246
- // TODO setting a key with non ascii chars
247
- const key = new Randexp(/([a-z]\w{0,20})foo\1/).gen();
248
- // Pre-allocate an array before starting the timer so that time spent growing the
249
- // array doesn't throw off the benchmarks.
250
- const promises = [...Array(count + 1)].map(() => null);
251
- const timers = {start: Date.now()};
252
- for (let i = 0; i < count; ++i) { promises[i] = db.set(key + i, input); }
253
- promises[count] = db.flush();
254
- await Promise.all(promises);
255
- // @ts-expect-error TS(2339): Property 'set' does not exist on type '{ start: nu... Remove this comment to see the full error message
256
- timers.set = Date.now();
257
- for (let i = 0; i < count; ++i) { promises[i] = db.get(key + i); }
258
- await Promise.all(promises);
259
- // @ts-expect-error TS(2339): Property 'get' does not exist on type '{ start: nu... Remove this comment to see the full error message
260
- timers.get = Date.now();
261
- for (let i = 0; i < count; ++i) { promises[i] = db.findKeys(key + i, null); }
262
- await Promise.all(promises);
263
- // @ts-expect-error TS(2339): Property 'findKeys' does not exist on type '{ star... Remove this comment to see the full error message
264
- timers.findKeys = Date.now();
265
- for (let i = 0; i < count; ++i) { promises[i] = db.remove(key + i); }
266
- promises[count] = db.flush();
267
- await Promise.all(promises);
268
- // @ts-expect-error TS(2339): Property 'remove' does not exist on type '{ start:... Remove this comment to see the full error message
269
- timers.remove = Date.now();
270
- const timePerOp = {
271
- // @ts-expect-error TS(2339): Property 'set' does not exist on type '{ start: nu... Remove this comment to see the full error message
272
- set: (timers.set - timers.start) / count,
273
- // @ts-expect-error TS(2339): Property 'get' does not exist on type '{ start: nu... Remove this comment to see the full error message
274
- get: (timers.get - timers.set) / count,
275
- // @ts-expect-error TS(2339): Property 'findKeys' does not exist on type '{ star... Remove this comment to see the full error message
276
- findKeys: (timers.findKeys - timers.get) / count,
277
- // @ts-expect-error TS(2339): Property 'remove' does not exist on type '{ start:... Remove this comment to see the full error message
278
- remove: (timers.remove - timers.findKeys) / count,
279
- };
280
- speedTable.push([
281
- database,
282
- readCache ? 'yes' : 'no',
283
- writeBuffer ? 'yes' : 'no',
284
- count,
285
- timePerOp.set,
286
- timePerOp.get,
287
- timePerOp.findKeys,
288
- timePerOp.remove,
289
- // @ts-expect-error TS(2339): Property 'remove' does not exist on type '{ start:... Remove this comment to see the full error message
290
- timers.remove - timers.start,
291
- // @ts-expect-error TS(2339): Property 'remove' does not exist on type '{ start:... Remove this comment to see the full error message
292
- (timers.remove - timers.start) / count,
293
- ]);
294
- // Removes the "Acceptable ms/op" column if there is no enforced limit.
295
- const filterColumn = (row: any) => {
296
- if (readCache && writeBuffer) { return row; }
297
- row.splice(1, 1);
298
- return row;
299
- };
300
- const acceptableTable = new Clitable({
301
- head: filterColumn(['op', 'Acceptable ms/op', 'Actual ms/op']),
302
- colWidths: filterColumn([10, 18, 18]),
303
- });
304
- acceptableTable.push(...[
305
- ['set', setMax, timePerOp.set],
306
- ['get', getMax, timePerOp.get],
307
- ['findKeys', findKeysMax, timePerOp.findKeys],
308
- ['remove', removeMax, timePerOp.remove],
309
- ].map(filterColumn));
310
- console.log(acceptableTable.toString());
311
- if (readCache && writeBuffer) {
312
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
313
- assert(setMax >= timePerOp.set);
314
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
315
- assert(getMax >= timePerOp.get);
316
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
317
- assert(findKeysMax >= timePerOp.findKeys);
318
- // @ts-expect-error TS(2775): Assertions require every name in the call target t... Remove this comment to see the full error message
319
- assert(removeMax >= timePerOp.remove);
320
- }
321
- });
322
- });
323
- }
324
- });
325
- }
326
- });
327
- });
328
- });