NULL and missing are two different concepts. Null means unknown, not missing. The data structure should have an ability to store NULL to be compatible with RDBMS semantics. While a dynamic column is similar to a NoSQL document store it is not one, and should support SQL semantics. IMHO --Justin Sent from my iPhone
On Feb 3, 2015, at 7:58 AM, Tom Worster <fsb@thefsb.org> wrote:
Hi Sergei,
On 2/3/15, 7:13 AM, "Sergei Golubchik" <serg@mariadb.org> wrote:
A dynamic column cannot be NULL, so using a JSON null (a different kind of null) to express "dynamic column exists but cannot be represented as requested" should work. The ORM would then have the names and positions in the structure of all the BINARY dynamic columns. With that it can send a SELECT with one or more COLUMN_GET(dyncol_blob, "name" AS BINARY) expressions. I could live with that.
Hmm. May be a dynamic column cannot be NULL now, but this is not a conceptual limitation, there is no logical reason why it coldn't be.
There may be no *technical* reason why it couldn't be but I see no *logical* reason why it would be. I can understand how tables (be they schema, temp or select) need NULL to say "it's not here" but a dynamic column existing and having a "value" of NULL is a non-sequitur. Writing a NULL to a dynamic column currently deletes it and I think that makes perfect sense. (I think we see know how the word "column" in "dynamic columns" can be misleading.)
So I'd rather keep JSON null for that. What I mean was that the whole COLUMN_GET should fail and return NULL, just as any function does when it gets invalid input:
MariaDB [test]> select uncompress("foobar"), 1/0, sqrt(-2); +----------------------+------+----------+ | uncompress("foobar") | 1/0 | sqrt(-2) | +----------------------+------+----------+ | NULL | NULL | NULL | +----------------------+------+----------+
(it can also throw a warning, like uncompress does).
I see what you mean but it's not a very useful answer. Much more useful to get the names, datatypes and structure plus all the values that aren't non-unicode strings.
Tom
_______________________________________________ Mailing list: https://launchpad.net/~maria-discuss Post to : maria-discuss@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-discuss More help : https://help.launchpad.net/ListHelp