close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 14 years ago

#895 closed defect (fixed)

Storing objects of grammar Serie

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: high Milestone:
Component: OIS Version:
Severity: critical Keywords:
Cc:

Description

En MMS permitimos almacenar las variables involucradas en la definición de un modelo para que puedan ser utilizadas por otro usuario sin necesidad de cargar el proyecto donde se definieron.

Resulta, sin embargo que en algunas circunstancias, no sé bien aislar cuales, el almacenamiento de series infinitas en OZA's se hace correctamente, mientras que en otras, las series se truncan usando las fechas DefFirst y DefLast por defecto.

¿Hay alguna consciencia de que esto ocurra?
¿Sería conveniente conseguir aislar un ejemplo en el que esto ocurra?
¿Se es consciente de otras limitaciones en el almacenamiento de objetos en OZA's?

Change History (4)

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Las series infinitas se truncan siempre entre las fechas por defecto pues no hay otra forma de almacenarlas. Me gustaría ver un caso en el que no sea así a ver qué está pasando.

Si no se quiere depender de que las fechas por defecto sean la misma cuando se guardaron y cuando se cargan en otra sesión lo mejor es no guardar series infinitas en ningún caso, sino acotarlas activamete dentro un intervalo adecuado al proyecto en cuestión.

comment:2 Changed 15 years ago by Pedro Gea

No sé, basta con probar:

Real Ois.Store([[
  CalInd(C,C)
]], "C:\Temp\serie.oza");

y luego:

Set oza = Ois.Load("C:\Temp\serie.oza")[1];
Date First(oza[1]);
Date Last(oza[1]);

comment:3 Changed 15 years ago by Víctor de Buen Remiro

Pues sí, ya no recordaba ese apaño que me hicieron meter contra mi voluntad.
Cuando la serie es infinita OIS intenta almacenar su árbol sintáctico lo cual es algo que no se guardaba antes como es lógico, y tampoco se puede hacer para todos los objetos, ya que eso puede ocupar mucho espacio y ralentizar la evaluación de TOL una barbaridad. Tuve que meter alguna heurística para intentar hacer el menor daño posible, que probablemente es bastante, ya que para cuando se sabe que un objeto es una serie infinita ya no hay forma de volver atrás para reconstruir el árbol. Hay que decidir de antemano a qué objetos se les rellena esa información y cuáles no y probablemente no funcione correctamente. Otra cosa que puede ocurrir es que ese árbol no sea posible evaluarlo en la sesión de carga porque dependa de objetos locales o globales que no existen en ese momento.

No me extraña que lo hubiera olvidado porque fue una auténtica pesadilla.

Una vez más las series infinitas creando problemas infinitos, c'est la vie.

No creo que haya ninguna solución, y menos sin un caso concreto que poder reproducir, así que lo mejor nuevamete es restringir el uso de las series infinitas para lo que son, puras definiciones abstractas. Como almacén de datos no hay como una buena serie acotada con su SubSer.

comment:4 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.