go to post Robert Cemper · Jul 29, 2020 Hi @Lucas Fernandes It was a little bit more complicated than expected. Anyhow take a lookSQL for ^ERROR Global Thanks to @José Roberto Pereira for the inspiration.
go to post Robert Cemper · Jul 29, 2020 in IRIS if the data type is any numeric (%Integer, %Decimal, %Float, ..... or %Boolean) the value is NOT enclosed in Quotes.
go to post Robert Cemper · Jul 29, 2020 Just to outline my understanding:my package will be rcc.subject.classname rarely eventually zrcc.subject.classname if it should go to %SYS . And I will not touch/ rename existing projects as this means changing not just the codebut also README.md , Descriptions in OEX and Articles in DC, Screenshots, Dependencies (not just my own), ...Over all a good source for mistakes, typos, errrors, confusion,
go to post Robert Cemper · Jul 28, 2020 What is the rule for VERSION in Dependencies ?Is it an EQUAL or a MINIMUM Version. e.g. <Version>0.0.0</Version> would mean any version <Dependencies> <ModuleReference> <Name>holefoods</Name> <Version>0.1.0</Version> </ModuleReference> </Dependencies> Thanks !
go to post Robert Cemper · Jul 28, 2020 The so-called SQLformat doesn't exist in Caché (at least not in the last 20 years)But over the gateway, you can move data from Caché to PostgeSQL. "from a table on CACHE to a POSTGRESQL table" So you need a trigger to do it:- Caché has to be the active part hereyou can start the upload over a webservice, an REST call, even as an SQLprocedure, or automatically by the schedulerAnd if you don't want to touch your target table directly you may have a shadow-copy in PostgreSQL thatthen serves as a source for your final updates. ( some INSERT...SELECT....) So instead of import from CSV, you do an import from a local table in PostgreSQLAnything is better than CSV.This would even allow filling your shadow over the day in small steps instead of a big bang (if needed)
go to post Robert Cemper · Jul 24, 2020 There is a JDBC driver to PostgreSQL available.Using that drive you define an SQL Gateway for your PostgreSQL and establish a link for your tables:The projection can be accessed as if was a table in Caché.Details & HowTo here: https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_gateway
go to post Robert Cemper · Jul 24, 2020 just tried. the link leads you to :https://openexchange.intersystems.com/package/Simple-remote-server-controlthere is the link to GitHub
go to post Robert Cemper · Jul 23, 2020 You might be inspired by this: https://community.intersystems.com/post/simple-remote-server-controlIn principle, a job is hanging around waiting for orders. Like a cab waiting for a drive.
go to post Robert Cemper · Jul 19, 2020 a little bit cross thinking it reminds me of this https://community.intersystems.com/post/unlimited-unique-index
go to post Robert Cemper · Jul 19, 2020 I 've never seen the 1000 cols limit. (Consider the record size and the related impact to storage !)But in a comparable situation, I used an array with the column name as a key. => unlimited columns, slim storage.And you can work on it in SQL and in classes.BUT this is object thinking, not straight SQL
go to post Robert Cemper · Jul 18, 2020 try it without "CONSTRAINT TestePK PRIMARY KEY (ID)"and without "ID INT NOT NULL, " so you get an autoincremented unique ID by default
go to post Robert Cemper · Jul 16, 2020 This option https://community.intersystems.com/post/terminal-multi-line-optionor the extended one with editor support https://community.intersystems.com/post/terminal-multi-line-command-editorcould be useful.
go to post Robert Cemper · Jul 12, 2020 Studio is an integrated part of Caché, Ensemble, IRIS, ... and part of any installation kit for Windows https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GSTD
go to post Robert Cemper · Jul 12, 2020 In studio you open the class and click the class attribute in the inspector
go to post Robert Cemper · Jul 12, 2020 to edit a table by DDL the corresponding class hat to be DDL allowed. DdlAllowed - Caché & Ensemble 2018.1.3 — 2018.1.4
go to post Robert Cemper · Jul 9, 2020 FIXED ! I have implemented an extension to %ZJSON.Generator to fix missing JSONTYPE Standard Caché data types don't have a parameter JSONTYPE (!!) so everthing is set to (quoted) "string".Especially numbers and boolean data must not be in quotes. e.g ....."NUMfield":124, "TrueFalse":true, .... instead of ....."NUMfield":"124", "TrueFalse":"true", .... this extension bypasses the missing parameter for these standard data types as indicated in %ZJSON.Adaptor/// number = %BigInt, %Currency, %Decimal, %Double, %Float, %Integer, %Numeric, %SmallInt, %TinyInt/// boolean = %Boolean For customized data classes it is easy to add Parameter JSONTYPE=". . . ."But changing sometihng in SYSLIB is a clear NO-NO to me. ( though it might have been easier) The extended version of %ZJSON.Generator is here: https://github.com/rcemper/Backport-JSON.-to-Cach-/blob/master/MissingJSONTYPE.xml
go to post Robert Cemper · Jul 9, 2020 Great stuff @Vitaliy.Serdtsev https://docs.intersystems.com/iris20192/csp/docbook/Doc.View.cls?KEY=RSQL_json everlasting learning!
go to post Robert Cemper · Jul 9, 2020 Got you! Something like $isJSON() ? like $isobject() or $listvalid()
go to post Robert Cemper · Jul 9, 2020 I didn't meet that. Basically it's %String or a %Stream based on size.I'd suggest having a private data type.This allows you also to have all tricky LogicalToODBC, .... under control. (and no MAXLEN for %String)And mapping it to %ALL or naming it %ZstringJSON or similar makes it public and update-restistant
go to post Robert Cemper · Jul 8, 2020 Some more findings what happens:The output methods are code generated. And the generator just uses JSONTYPE from the data type class.That means that even as the property parameter is available in Studio, ... you can't change it. example: Property bool as %Boolean (JSONTYPE="string") is just ignored and you see ,"bool":false This means: JSONTYPE is frozen in the data type classBringing Parameter JSONTYPE into the class (e.g, by %ZJSON.Adaptor) has no influence to the Generator To achieve the expected result you require a customized data class as suggested by @Timothy Leavitt Out of 25 only these 7 6 classes are affected the rest is string which is default anyhow. boolean %Library.Boolean.cls(JSONTYPE): Parameter JSONTYPE number %Library.Currency.cls(JSONTYPE): Parameter JSONTYPE number %Library.Decimal.cls(JSONTYPE): Parameter JSONTYPE number %Library.Float.cls(JSONTYPE): Parameter JSONTYPE number %Library.Integer.cls(JSONTYPE): Parameter JSONTYPE number %Library.Numeric.cls(JSONTYPE): Parameter JSONTYPE number %Library.PosixTime.cls(JSONTYPE): Parameter JSONTYPE not in Caché