Hi Peter,

Yes, that is the actual returned value. But 

{"name":"ÁÂÃÄÅÆ"} 

is not valid JSON (see 2.5 in rfc4627). And I don't think invalid JSON *should* be expected from a function called COLUMN_JSON.

But I don't know what Maria should do when it is asked to return a value in a format that cannot express that value.

Tom

From: Peter Laursen <peter_laursen@webyog.com>
Date: Saturday, January 31, 2015 at 3:39 PM
To: Tom Worster <fsb@thefsb.org>
Cc: maria-discuss email list <maria-discuss@lists.launchpad.net>
Subject: Re: [Maria-discuss] JSON and binary strings

I get the result (what I think is expected) from the query "SELECT COLUMN_JSON(COLUMN_CREATE('name', UNHEX('C1C2C3C4C5C6'))):"

{"name":"ÁÂÃÄÅÆ"} 

.. in SQLyog (GUI client always using UTF8 as client character set)  on Windows. In command line client shipped with MariaDB 10.0 for Windows, I get garbage (both after SET NAMES latin1 and SET NAMES utf8 - but MariaDB does not (yet) have a fully unicode-enabled commandline client for Windows like MySQL 5.6 and 5.7 have). 

Are you sure that your client environment will handle all those special/accented characters at the same time? I think you bumped into an encoding issue in the client of some kind. What is your client environment and OS, and what does the query return here?



-- Peter
-- Webyog

On Sat, Jan 31, 2015 at 3:59 PM, Tom Worster <fsb@thefsb.org> wrote:
I could have been more direct. What should be the expected behavior in the following?

SELECT COLUMN_JSON(COLUMN_CREATE('name', UNHEX('C1C2C3C4C5C6')));


From: Tom Worster <fsb@thefsb.org>
Date: Friday, January 30, 2015 at 9:05 PM
To: maria-discuss email list <maria-discuss@lists.launchpad.net>
Subject: [Maria-discuss] JSON and binary strings

BINARY is one of the datatypes you can use with dynamic columns. If you try saving binary string and then retrieve it with COLUMN_JSON() then you get an invalid JSON document back. All the JSON decoders I tested reject such documents.

It doesn't make sense to me that COLUMN_JSON() would return a document that's invalid according to the JSON spec and can't be decoded. But I don't know what it should do. It seems that BINARY in dynamic columns means that COLUMN_JSON() is in an impossible position.

[On a related note, if you save a valid utf8 string that includes control characters (e.g. "I went down to the river,\nI set down on the bank.") then COLUMN_JSON() fails to escape them. While similar, this I think is a bug.]

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

_______________________________________________
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