i would like to see a database server that forces all application logic to be implemented in the application itself: stripped down to the barest functionality; i spent years building application logic into sqlserver sprocs/udfs, but i finally saw the light and stopped doing that;
i'm secretly hoping that drizzle turns out to be something like a daemonized version of sqlite: bigger, faster, and dumber; if the database were like a machine architecture and the orm were like a complier, then i would want to see a risc solution; -g On Tue, Feb 3, 2009 at 2:34 PM, Monty Taylor <[email protected]> wrote: > Jay Pipes wrote: >> Hi all again, >> >> I would like to propose the removal of the WEEK() and WEEKOFYEAR() >> functions from Drizzle and the corresponding default_week_format session >> variable, sometimes called the "week mode". > > Sounds fine to me. If someone really wants week() or weekofyear() they > can write them as UDFs. > >> Details of these things in MySQL can be found here: >> >> http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_week >> >> http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_weekofyear >> >> http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_default_week_format >> >> >> Why am I proposing this? A number of reasons: >> >> 1) Simplify the date functions >> 2) Standardize to format specifiers available in the C std library for >> strftime() >> 3) Removal of custom code that duplicates the strftime() and mktime() >> functions in cstdlib (about 1000 lines of code). >> >> Will there be any loss of functionality? >> >> No. At least not any functionality that makes sense. :) >> >> The DATE_FORMAT() function has specifiers which enable getting the week >> number in three formats which correspond to the strftime() format >> specifiers: >> >> %U returns the week number 00-53 where week 1 is the first week >> containing a Sunday. Days in a week preceding the first Sunday are in >> week 0. >> >> %W returns the week number 00-53 where week 1 is the first week >> containing a Monday. Days in a week preceding the first Monday are in >> week 0. >> >> %V returns the week number of the year (Monday as the first day of the >> week) as a decimal number [01,53]. If the week containing 1 January has >> four or more days in the new year, then it is considered week 1. >> Otherwise, it is the last week of the previous year, and the next week >> is week 1. This format is the format specified by ISO8601:1988. >> >> Currently, the WEEK() function is, IMHO, overly complex and mostly >> redundant with DATE_FORMAT() given one of the specifiers above. It uses >> a week_mode second argument, which influences the return of the function >> per the following table: >> >> Mode First day of week Range Week 1 is the first week... >> ------ ------------------- ------- ------------------------------- >> 0 Sunday 0-53 with a Sunday in this year >> 1 Monday 0-53 with more than 3 days this year >> 2 Sunday 1-53 with a Sunday in this year >> 3 Monday 1-53 with more than 3 days this year >> 4 Sunday 0-53 with more than 3 days this year >> 5 Monday 0-53 with a Monday in this year >> 6 Sunday 1-53 with more than 3 days this year >> 7 Monday 1-53 with a Monday in this year >> >> If we removed the WEEK() function and week_mode variable entirely, the >> only supported behaviours would be modes 0, 3, and 5. All other modes >> correspond to behaviour that is contrary to any standard. >> >> ISO8601:1988 dictates that the first week is the one containing more >> than 3 days in a year, and that Monday is the start of the week and week >> numbers are numbered 1-53. Therefore modes 1, 4, and 6 produce >> behaviour that is actually dangerous: it pretends to be ISO8601, but >> isn't correct. >> >> Therefore, I propose the removal of WEEK() and week_mode. >> >> Here is how one might produce the identical result to WEEK() for modes >> 0, 3, and 5 using DATE_FORMAT() properly: >> >> # "mode 0" >> SELECT DATE_FORMAT("2008-01-01", "%U")+0; >> # "mode 3" >> SELECT DATE_FORMAT("2008-01-01", "%V")+0; >> # "mode 5" >> SELECT DATE_FORMAT("2008-01-01", "%W")+0; >> >> Please vote for whether my proposal has merit. >> >> Thanks, >> >> Jay >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~drizzle-discuss >> Post to : [email protected] >> Unsubscribe : https://launchpad.net/~drizzle-discuss >> More help : https://help.launchpad.net/ListHelp >> > > > _______________________________________________ > Mailing list: https://launchpad.net/~drizzle-discuss > Post to : [email protected] > Unsubscribe : https://launchpad.net/~drizzle-discuss > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

