As far as I know it is not possible to switch it on.

You might find function DESCENDANTS ( helpful.

For time dimension, all members of the level are generated and available to queries that show empty. This means

SELECT DESCENDANTS([DateOfSale].[YearSold].&[2015],DateOfSale.DaySold) ON 1 FROM HoleFoods

will show all days from 2015 on rows, whether there are facts recorded for those days or not.

SQL Adapter does some metadata caching.

See, for example, doc for method EnsLib.SQL.Common:ExecuteProcedure

"Appending a '#' to the pIO argument (or passing only '#') prevents the adapter from using cached DescribeColumns() results for the procedure call output, forcing a fresh call to ODBC DescribeColumns() every time the stored procedure is invoked. This can be necessary if the procedure is capable of returning different sequences of result types from consecutive invocations"

I'm not sure if this is what happened in this case, though.

By default %ToJSON method prints empty properties.

If you pass pFormat without "e" flags (that is passed by default), then empty properties are skipped:

USER>set p = ##class(%ZEN.proxyObject).%New()

USER>set p.a = 1

USER>set p.b = 2

USER>do p.%ToJSON()
USER>set p.b = ""

USER>do p.%ToJSON()
USER>do p.%ToJSON(,"alotw")

I encourage you to use Caché 2016.1 with native JSON support. Don't start with %ZEN.proxyObject.
See great article by Stefan Wittman about JSON support in 2016.1:

The first time a message is added to a domain by $$$Text, $$$SessionLanguage is used:

$$$SessionLanguage is determined by locale of current process, that is by default is the same as locale of Caché instance

Default locale for Caché instance is determined during installation based on OS locale. For example, on English Windows that has Russian in Regional Settings, Caché is installed with locale rusw (ruw8 for 8-bit installation). You can change locale after installation. There is no option to select locale during installation.

You can change current session language with ##class(%MessageDictionary).SetSessionLanguage("ru")

Hi Blaise. There is query ErrorLog in %CSP.UI.System.BackgroundTask class so you can print errors like follows:

USER>do ##class(%ResultSet).RunQuery("%CSP.UI.System.BackgroundTask","ErrorLog",3932)

3932 here is task id.

And print errors to file:

USER>set file="c:\temp\sqlerrors.txt"
USER>open file:"NW":5
USER>use file do ##class(%ResultSet).RunQuery("%CSP.UI.System.BackgroundTask","ErrorLog",3932)
USER>close file

Notice that %CSP.UI.System.BackgroundTask is marked for internal use only.

«And I want to be able to post new comments to any old post without any restriction.» I agree with this.

«I want to be able to edit my comment while topic is visible. At any time.»
Why? If something is changed, so that comment is no longer relevant, you can post a new comment.
If you made mistkae during posting -- you have 10 minutes to fix it.