Makes sense. IMHO most of the stuff I mentioned is just minor qualms. The
overall syntax is pretty nice, and I think it'd be a great idea to have
something like this.

*--*
*Tyler Romeo*
Stevens Institute of Technology, Class of 2015
Major in Computer Science
www.whizkidztech.com | tylerro...@gmail.com



On Sun, Aug 19, 2012 at 7:12 AM, Daniel Friesen
<dan...@nadir-seen-fire.com>wrote:

>  On 12-08-18 10:37 PM, Tyler Romeo wrote:
>
> I think this is an awesome idea and I'd be willing to help on this.
>
>  I have a few questions about the page linked above though:
>
>    - Why don't we use foreign keys in MySQL?
>
>  We don't use them now so I didn't use them in the abstract table schema
> types. PostreSQL and iirc Oracle use them so I added reference(), it also
> acts as a documentation hint. We could regenerate the table schema
> documentation based on this. This time around directly extracting what
> column refers to another out of the code.
> For MySQL, FKeys actually lower performance, but in any case if you think
> we should use foreign keys we should have a wikitech-l discussion over it.
>
>
>
>    - The word "hack" is used three times. That's probably an issue. ;)
>
>  Heh. Yeah. Though how else do we handle the few spots where a part of
> our database schema goes and does something complete out of line from the
> rest of the schema?
> eg: cl_timestamp uses timestamp instead of our binary(14).
>
>
>
>    - Is there a reason we're changing the default from NULL to NOT NULL?
>    Wouldn't it be better to just use a "required" keyword?
>
>  95% of our column definitions are NOT NULL. In fact not allowing null is
> practically a default, you don't really allow null unless you make an
> explicit decision that you want null values.
> So I made NOT NULL the default and made allowing null an explicit nullable
> flag.
> NOT NULL only prevents you from setting a field as null. It doesn't make
> it required because most other fields will still default to something like
> 0, '', or some other default that's specified. So "required" doesn't really
> fit the meaning
>
>
>
>    - We should probably support MySQL's -- comment syntax, just in case.
>
>  Yeah I planned to from the start. Just include opening #, --, and //
> comments inside the parser.
> Although, when it came to table alters I started contemplating the --
> comment vs. -column; parsing and rethought that.
> Though thinking about it again, the parsing will probably work fine.
>
>
>
>    - What's the [ignore] on the insert call do? (It becomes a little
>    confusing since there is also the [tablename] syntax on global indexes.)
>
>  That was for INSERT IGNORE. After I noticed that some of our
> archive/*.sql files use INSERT IGNORE. I dropped the idea of `insert ignore
> tablename ...` because it would be ambiguous for a table named "ignore".
> So yeah, it would be nice to find a better syntax for insert ignore.
> I'm also contemplating if I should find a syntax for INSERT..SELECT since
> we seem to use it in a small number of migrations.
>
>
>
>    - The Alter Table syntax looks really weird (with tildas and whatnot).
>
>  I started wanting to keep the alter table syntax as close as possible to
> the table definition/creation syntax.
> So I started with prefixing with - and + which work beautifully as DROP
> and ADD column/etc... commands.
> Then when I thought of MODIFY/CHANGE I didn't want to make that unprefixed
> and ~ seemed to work best for that.
>
> But yeah, here and there it could use some ideas for alternative ways to
> do the syntax.
>
>
> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
>
>  *--*
> *Tyler Romeo*
> Stevens Institute of Technology, Class of 2015
> Major in Computer Science
> www.whizkidztech.com | tylerro...@gmail.com
>
>
>
> On Sat, Aug 18, 2012 at 2:20 PM, Daniel Friesen <li...@nadir-seen-fire.com
> > wrote:
>
>> I see the branch, but I don't see the code:
>>
>> https://svn.wikimedia.org/viewvc/mediawiki/branches/abstract-schema/phase3/
>> It looks like someone just copied phase3 and then never actually changed
>> any code. I don't even see a syntax idea there.
>>
>> ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://daniel.friesen.name]
>>
>>  On 12-08-18 11:10 AM, Chad wrote:
>> >
>> > We tried this before, and I'd love to see it happen. Take a look at
>> > the abstract-schema branch in SVN for what we did.
>> >
>> > -Chad
>> >
>> > On Aug 18, 2012 1:53 PM, "Daniel Friesen" <li...@nadir-seen-fire.com
>>  > <mailto:li...@nadir-seen-fire.com>> wrote:
>> >
>> >     We've got a nice abstract query system but our table creation and
>> >     migrations are horrible. We re-write them for multiple database
>> >     engines. And as a result extensions need to do the same and often
>> >     don't. Leading to things being a mess for databases other than
>> MySQL.
>> >
>> >     While I was doing the sites stuff a syntax for defining tables
>> >     came to mind and I wrote out an RfC for a method of defining our
>> >     database abstractly.
>> >
>>  >
>> https://www.mediawiki.org/wiki/Requests_for_comment/Abstract_table_definitions
>> >
>> >     --
>> >     ~Daniel Friesen (Dantman, Nadir-Seen-Fire)
>> >     [http://daniel.friesen.name]
>>
>
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to