uuid = Choice(r_uuid_str, string, most_greedy=False)
group_match = Repeat(r_grave_str, 1, 1)
series_match = Prio(
+ List(Choice(
+ series_all,
+ series_name,
+ group_match,
+ series_re,
+ most_greedy=False), series_setopr, 1),
Choice(
series_all,
series_name,
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2019-01-03 10:42:54
+ * Created at: 2019-03-06 11:59:02
*/
#ifndef CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
#define CLERI_EXPORT_SIRI_GRAMMAR_GRAMMAR_H_
* Note that debian alpha packages should use versions like this:
* 2.0.30-0alpha0
*/
-#define SIRIDB_VERSION_PRE_RELEASE "-alpha-0"
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-1"
#ifndef NDEBUG
#define SIRIDB_VERSION_BUILD_RELEASE "+debug"
{'success_msg': 'Successfully inserted {} point(s).'.format(
LENPOINTS)})
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series
all - ("series-001" | "series-002" | /windows.*/)
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-003'],
['series-004'],
['linux-001'],
['linux-002'],
['linux-003'],
- ['linux-004']]})
+ ['linux-004']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series all - (
"series-001" | "series-002" | (/windows.*/ & /.*001/))
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-003'],
['series-004'],
['linux-001'],
['linux-004'],
['windows-002'],
['windows-003'],
- ['windows-004']]})
-
- self.assertEqual(
- await self.client0.query('''
+ ['windows-004']
+ ])
+ }
+ )
+ result = await self.client0.query('''
list series all - (
"series-001" | "series-002" | (/windows.*/ - /.*001/))
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-003'],
['series-004'],
['linux-001'],
['linux-002'],
['linux-003'],
['linux-004'],
- ['windows-001']]})
+ ['windows-001']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series (
"series-001" | "series-002" | /windows.*/) - /.*003/
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
['series-002'],
['windows-001'],
['windows-002'],
- ['windows-004']]})
+ ['windows-004']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series all - (/series.*/ ^ /.*001/)
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
['linux-002'],
['linux-003'],
['linux-004'],
['windows-002'],
['windows-003'],
- ['windows-004']]})
+ ['windows-004']
+ ])
+ }
+ )
self.assertEqual(
await self.client0.query('''
'columns': ['name'],
'series': []})
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series /.*001/ & (/series.*/ | /linux.*/)
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
- ['linux-001']]})
+ ['linux-001']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series /.*001/ & ((((/series.*/ | /linux.*/))))
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
- ['linux-001']]})
+ ['linux-001']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series (/.*001/ | /.*002/) & (/series.*/ | /linux.*/)
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
['series-002'],
['linux-001'],
- ['linux-002']]})
+ ['linux-002']
+ ])
+ }
+ )
- self.assertEqual(
- await self.client0.query('''
+ result = await self.client0.query('''
list series ((/.*001/ | /.*002/) & (/series.*/ | /linux.*/))
- '''),
+ ''')
+ result['series'] = sorted(result['series'])
+
+ self.assertEqual(
+ result,
{
'columns': ['name'],
- 'series': [
+ 'series': sorted([
['series-001'],
['series-002'],
['linux-001'],
- ['linux-002']]})
+ ['linux-002']
+ ])
+ }
+ )
with self.assertRaisesRegex(
QueryError,
[1447254000, 31530.520833333332],
[1447257600, 4.666666666666667]]})
+ self.assertEqual(
+ await self.client0.query('select * from {}'.format(
+ ','.join(['"aggr"'] * 600)
+ )),
+ {'aggr': DATA['aggr']}
+ )
+
self.assertEqual(
await self.client0.query('select difference(1h) from "aggr"'),
{'aggr': [[1447250400, 1], [1447254000, -3], [1447257600, 5]]})
}
}
+static void QUERY_unique(cleri_olist_t * olist)
+{
+ while (olist != NULL && olist->next != NULL)
+ {
+ cleri_olist_t * test = olist;
+ while (test->next != NULL)
+ {
+ if (olist->cl_obj == test->next->cl_obj)
+ {
+ cleri_olist_t * tmp = test->next->next;
+ free(test->next);
+ test->next = tmp;
+ continue;
+ }
+ test = test->next;
+ }
+ olist = olist->next;
+ }
+}
+
static void QUERY_send_invalid_error(uv_async_t * handle)
{
size_t len;
"Query error at position %zd. Expecting ",
query->pr->pos);
+ /* required for libcleri versions prior to 0.10.1 */
+ QUERY_unique(query->pr->expecting->required);
+
/* expand the error message with suggestions. we try to add nice names
* for regular expressions etc.
*/
* should be used with the libcleri module.
*
* Source class: SiriGrammar
- * Created at: 2019-01-03 10:42:54
+ * Created at: 2019-03-06 11:59:02
*/
#include "siri/grammar/grammar.h"
cleri_t * group_match = cleri_dup(CLERI_GID_GROUP_MATCH, r_grave_str);
cleri_t * series_match = cleri_prio(
CLERI_GID_SERIES_MATCH,
- 3,
+ 4,
+ cleri_list(CLERI_NONE, cleri_choice(
+ CLERI_NONE,
+ CLERI_FIRST_MATCH,
+ 4,
+ series_all,
+ series_name,
+ group_match,
+ series_re
+ ), series_setopr, 1, 0, 0),
cleri_choice(
CLERI_NONE,
CLERI_FIRST_MATCH,