Thanks Glen! I tested the migration against MySQL. I ran the migration SQL script manually and it worked (with the fixes that I just committed). I was able to bring up Roller and things look OK.
One fix was to add a new #dropForeignKey() macro because the drop foreign key syntax is different from drop index, at least on MySQL. Also, I commented out the following, which causes an error on MySQL: -- following does not work on MySQL -- alter table custom_template_rendition add constraint ctr_templateid_fk -- foreign key ( templateid ) references weblog_custom_template( id ) ; I have not yet been able to figure out why that causes an error. Next, I'll test with the ASF blogs. - Dave On Fri, Jul 25, 2014 at 11:35 PM, Glen Mazza <glen.ma...@gmail.com> wrote: > Oops, sorry I missed a FK constraint on custom_template_rendition's > templateid column pointing back to weblog_custom_template's id. I just put > that in, both the 500-to-510 upgrade script and in createdb.vm. There > should be no migration problems with this, because child table > custom_template_rendition doesn't exist in 5.0.x. > > Data model frozen again. :) > > Glen > > > On 7/24/2014 6:40 PM, Glen Mazza wrote: > >> OK, I'm finished with all database changes, we can have our schema >> freeze. :) The Weblog.customstylesheet column is gone. The 5.0.4 -> 5.1 >> upgrade process will mark custom stylesheets from custom themes with a >> "STYLESHEET" action in weblog_custom_template, so Roller 5.1 can easily >> identify them. As for custom stylesheets from shared themes, the upgrade >> process can't switch them from custom -> stylesheet (the necessary data for >> that isn't available within the DB), however due to some redundancy in >> StylesheetEdit.java's myPrepare(), Roller 5.1 will still detect the custom >> stylesheets and the moment they're saved again, their value will switch to >> STYLESHEET. We'll keep that redundancy until 5.0.x upgrade support is no >> longer an issue. >> >> Presently the actions are ALL CAPS in the theme template listing page, a >> little tough on the eyes, but we can put in an init caps value within the >> Enums so friendly text (Custom, Weblog, etc.) will be shown instead. >> >> I'm going to be looking at some LDAP enhancements and documentation >> tomorrow (stuff from Juergen) but that doesn't have to get into Roller 5.1. >> Dave, if you can confirm when you have the chance that the latest 5.1 >> works fine with Apache Blogs, I think we'll be ready to have a vote for 5.1. >> >> Regards, >> Glen >> >> >> On 07/24/2014 03:19 PM, Glen Mazza wrote: >> >>> I'm doing this now...it should get done today. >>> >>> Glen >>> >>> On 07/24/2014 11:27 AM, Glen Mazza wrote: >>> >>>> Hi Team, I figured out why WEBLOG.custom_stylesheet is presently being >>>> used, but can be retired with some coding changes. These are changes I >>>> think would be good to do anyway. >>>> >>>> There are two types of custom stylesheets: shared theme w/custom >>>> stylesheet and custom theme w/custom stylesheet, either of which store one >>>> row in WEBLOG_CUSTOM_TEMPLATE. Roller needs to know the name of the >>>> stylesheet in order to grab the stylesheet from the WEBLOG_CUSTOM_TEMPLATE >>>> table (and from there, CUSTOM_TEMPLATE_RENDITION) table. The name of the >>>> stylesheet is matched against the "link" column in WCT to make that match. >>>> To get the name: >>>> >>>> 1.) For the shared theme with custom stylesheet, Roller takes the name >>>> of the stylesheet from the Shared Theme, information which comes from the >>>> theme.xml file. It doesn't read WEBLOG.custom_stylesheet. This generally >>>> works, but has a drawback that if we remove a shared theme Roller will not >>>> know how to get to the custom stylesheet, and if the user switches shared >>>> themes with a different name for its stylesheet, the user's custom >>>> stylesheet will be inaccessible. >>>> >>>> 2.) For the custom theme with custom stylesheet, there is no shared >>>> theme.xml file, so Roller needs to read WEBLOG.custom_stylesheet to get the >>>> name. >>>> >>>> The architectural problem is that WEBLOG_CUSTOM_TEMPLATE's action >>>> column does not have a STYLESHEET value, requiring the above name search in >>>> order to locate it. As our template parser currently allows only one >>>> STYLESHEET (possibly with multiple renditions) per theme, if we had this >>>> value it would be very easy for Roller to find the stylesheet: SELECT >>>> <row> from WEBLOG_CUSTOM_TEMPLATE where weblogid = XXXX and action = >>>> STYLESHEET. If we have this, WEBLOG.custom_stylesheet would no longer be >>>> needed and the shared theme w/stylesheet will work even if the shared theme >>>> is deleted. >>>> >>>> The WEBLOG_CUSTOM_TEMPLATE "action" column, within our code, should be >>>> switched from strings to enum's anyway -- as part of this process I can add >>>> the STYLESHEET value and retire WEBLOG.custom_stylesheet column. (In a >>>> perfect world we'd rename "action" to "component", but that's less >>>> important for now.) As part of the migration process, we'd have an update >>>> command (pseudocode) so current user's templates can be identified >>>> properly: >>>> >>>> update weblog_custom_template wct set action = STYLESHEET where action >>>> = custom AND websiteid in (select id from weblog w where theme=custom and >>>> w.link = wct.link); >>>> >>>> WDYT? I can probably get this done in a day. >>>> >>>> Regards, >>>> Glen >>>> >>>> >>>> On 07/23/2014 11:30 PM, Glen Mazza wrote: >>>> >>>>> Offhand, it looks like we can remove it, once I clean up the code a >>>>> bit. This column isn't getting populated when I do a custom stylesheet >>>>> alone; however, when I switch to a complete custom theme, it then copies >>>>> the name of the stylesheet into weblog.customstylesheet. But it doesn't >>>>> need to do that, that value is already in weblog_custom_template, and I >>>>> don't think it does anything with that value anyway. >>>>> >>>>> Anyway, all the other columns in the list were removed, if I can't get >>>>> to this remaining column it can wait until 5.1 is out. >>>>> >>>>> Glen >>>>> >>>>> >>>>> On 07/23/2014 10:08 PM, Glen Mazza wrote: >>>>> >>>>>> No, in *that* case, we just get a single row in the >>>>>> custom_template_rendition table for that CSS holding the stylesheet text >>>>>> (instead of several rows holding also the theme templates.) It's just >>>>>> that >>>>>> weblog's customstylesheet column is still being written to and read from >>>>>> for some reason (still necessary? I don't know...), which I'll >>>>>> investigate. Apparently it's being used as a path value from the user's >>>>>> resources folder (custom stylesheet path), but that shouldn't be >>>>>> necessary >>>>>> as the CSS text is in the CTR table. Stay tuned... >>>>>> >>>>>> Glen >>>>>> >>>>>> On 07/23/2014 09:57 PM, Dave wrote: >>>>>> >>>>>>> On Wed, Jul 23, 2014 at 9:38 PM, Glen Mazza <glen.ma...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>> Hmm...Weblog's customstylesheet column is perhaps still in use, >>>>>>>> I'll look >>>>>>>> more into it tomorrow. >>>>>>>> >>>>>>>> As I remember, custom style sheet is a way to allow a blogger to >>>>>>> add CSS >>>>>>> for their blog while still using a shared theme, and not having to >>>>>>> edit >>>>>>> page templates. I think it is totally separate from the custom >>>>>>> templates. >>>>>>> >>>>>>> - Dave >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >