iidec / Integra.Space.Language-upstream

Lenguaje de consulta que permite el acceso a datos en tiempo real
0 stars 0 forks source link

Cambio en gramatica de query apply #50

Open marianogenovese opened 8 years ago

marianogenovese commented 8 years ago

Por la necesidad de tener nuevos comportamientos en los querys, se han creando nuevos argumentos en apply del query. Anteriormente existia un solo apply que era apply window por lo que se requiere cambiar en la gramatica para que sea una lista de apply que incluyan:

OscarCanek commented 7 years ago

Es posible cambiar la sintaxis de la siguiente forma mas natural?

actual: apply repetition cambio: 'repeat', unsigned_int_value, 'times';

actual: apply duration cambio: 'terminate', 'in', timespan_value

marianogenovese commented 7 years ago

Si se propone otra sintaxis también debería haber cambio en apply window. Lo que se propuso fue mantener el mismo concepto bajo 'apply' si existen nuevas funciones se mantengan bajo apply ademas a nivel de lenguaje sabrías que la semantica y sintaxis esta correcta con apply y con futuras funciones.

OscarCanek commented 7 years ago

Lo ultimo no entendí muy bien a que se refiere pero respecto a los primeros argumentos que otras funciones agregaremos ? Ademásdeberiamos buscar seguir la línea de la facilidad para los futuros usuarios

marianogenovese commented 7 years ago

Hasta ahora vemos la necesidad de repetition window y duration por eso van con la funcion apply si existen nuevos que más adelante vemos la necesidad de incluirlos ya tendriamos agrupados todos estas funciones bajo la palabra apply. Yo creo que no es dificil entender el concepto de apply.

OscarCanek commented 7 years ago

Propuesta para extender la funcionalidad

Una funcionalidad extra que se me ocurre, que hasta el momento pienso no lleva mucho esfuerzo implementarlo, es poner una duración pero especificando fecha y hora. Con la otra sintaxis quedaría asi:

'terminate', 'in', timespan_value -> 'apply', 'duration', timespan_value 'terminate', 'at', datetime_value -> ?

Esto nos permitiría crear un stream que termine por ejemplo a alguna hora y fecha espeficicada. Ademas cabe destacar que son mutuamente excluyentes, solo se podrá especificar uno u otro.

¿Qué piensa de esta extensión?. Puede poner la sintaxis para ese ejemplo en apply para que lo agregue a la gramática de space.

marianogenovese commented 7 years ago

Seria una variante, pero eso conllevaria a que los stream tengan un status de iniciado (start) y detenido (stop) cosa que actualmente no existe. Por consiguiente no deberia ser terminate sino al relacionado con stop.

OscarCanek commented 7 years ago

Hasta el momento apply repetition se comporta como se espera, sin embargo, apply duration no se está comportando como se esperaba ya que no para el observable al terminar el tiempo especificado, cabe destacar que en un observable de prueba si termina el observable al cumplir el tiempo especificado.

Observable de prueba (funciona como se espera)

image

Confirmaré si el mal comportamiento se debe al framework de pruebas

Actualización

Se necesita buscar una solución para poder probar esta extensión con el framework de pruebas ya que, como se muestra en la imagen de abajo, se esta ignorando los tiempos del take

image

Se debe encontrar la razón de por qué con buffer no pasa el mismo problema pero con take esta ignorando el tiempo especificado.

Solución

El problema estaba en la creación del observable que se utiliza de input para la prueba, el framework maneja tiempos mediante ticks, por lo tanto hay que colocar los tiempos en cantidad de ticks. Ej.

100 milisegundos -> TimeSpan.FromMilliseconds(100).Ticks ->1000000 1 segundo -> TimeSpan.FromSeconds(1).Ticks -> 10000000