On Fri, Feb 16, 2007 at 05:39:24PM -0300, Alvaro Herrera wrote: > FWIW there's already a type called tinterval that stores (start,end). I > don't think it's very much documented; maybe it can be extended or used > as base for a new, more complete and robust type, indexable in a more > natural way, etc etc.
The book I cited has a very complete description of the period data type including details on what extensions to SQL are needed. I am very interested in starting a robust implementation of the period datatype. I think the datetime infrastructure will already do most of the needed parsing and packing of the hard parts of the period datatype (namely the date and time formats). I will investigate the tinterval to see if it meets the needs of the PERIOD datatypes. I agree with focusing on the PERIOD datatype. I think that is a major part of the foundation for temporal extensions and would have to be implemented first. Therefore, I present the following plan for getting there. 1) Focus first on PERIOD(DATE) to keep things as simple as possible. 2) Implement a first cut on the period datatype that only handles storing two dates. (Maybe tinterval will get us here for free?) 3) Add information to the datatype for open or closed interval for beginning and ending sides of the period. I could probably have this done in time for the freeze with some mentoring. I could probably even start implementation of some indices and operator function for the type. This functionality is what I expect to have a shot of making an appearance in 8.3. It will be minimally functional at this point. The next project will be altering the parser to be able to construct and operate on PERIOD types with the syntax extensions to SQL in Dr. Snodgrass's book. Once all of the syntax is implemented for PERIOD(DATE), the next project will be to extend to support PERIOD(DATETIME WITH TIMEZONE). Again, I think the datatime infrastructure will be very useful here. wt ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings