go to post Robert Cemper · Jan 24, 2019 You could use the feature that any Classmethod may also serve as Stored Procedure.Like this: Class User.Remote{ClassMethod Echo(inout As %String) As %String [ SqlName = Demo, SqlProc ]{ return "Echo:"_inout }}And then you may call your Procedure like this: getting backSELECT DEMO('hello WORLD') getting back Echo:hello WORLDAll you have to care for is to return something.what happens inside your ClassMethod is up to you and doesn't need to be related.
go to post Robert Cemper · Jan 21, 2019 As you have an installation of Caché you will also have the Documentation with it.I recommend "Using Caché ObjectScript" to start with ObjectScript.It is also public accessible https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOSI also recommend having a look at the free online training library.The link is in the header of this forum: LEARNINGBrowse Catalog and search for O bjectScript BasicsAll details on individual commands, functions, system variables are again in your local instance or in thepublic reference on docs.intersystems.com
go to post Robert Cemper · Jan 20, 2019 My personal preference is to a have a solution NOW.And not wait for something that may take too long for me.just the most simple example to solve your issue with a ClassMethod: Class nodes.Select{ClassMethod Address1(town As %String = "") As %String{ set (list,id)="" for { set id=$o(^Customer(id)) quit:id="" if ^(id,"Address",1)=town set list=list_$lb(id) } return "["_$lts(list)_"]"}}
go to post Robert Cemper · Jan 20, 2019 See details in NoSQL Methods for Global NodesEspecially Get the Next Global Subscript: next() lets you iterate over first subscript ^Customer(id) 1, 2, 3, ...next using Retrieve a Global Node: get() you access ^Customer(id, "Address", 1) and check if it is "London" from docs mydata.retrieve This method will return a list of subscript values that are defined directly beneath a given level in the global.In your call, you get the full global. but you have to do the detail work yourself.There is no such thing as SELECT ...... FROM GLOBAL WHERE .......This is NoSQL.But you may hide your functionality in a ClassMethod inCaché and use invoke_classmethod()
go to post Robert Cemper · Jan 18, 2019 Hi Julius,You got my point!A Stream is a Stream and a String is a String andthey are different things with different handling. The fact that they both (can) contain characters is of no importance.
go to post Robert Cemper · Jan 17, 2019 Without offering a solution to develop this magic data type that Julius suggestedYou should also define what datatype you plan to present for the SQL side.And that is always taken from the Compiled Property definition.All streams typically present themselves a CLOB or BLOB or similar and have no MAXsizeWhile a String presents itself as a VARCHAR with a MAXSIZE.I see no way to manipulate this on the fly.For object access, you may write a Setter and Getter that covers the real nature of your data:For SQL access I see no chance at the moment.Indexing is another issue. This would require another piece of magic.My suggestion:have a %Stringhave a %Streamand have a calculated property of %String to decide which one to present.like a centipede with a wooden leg: 99 times tic and 1 tocthe stream is then truncated and still requires extra coding.
go to post Robert Cemper · Jan 14, 2019 Thanks! That solves my questions.I just see close to me a situation that the upgrade to a higher version ( 16.2 to 18.1)may trigger quite an effort on updating all developer's Studio. With all that "can never happen"
go to post Robert Cemper · Jan 14, 2019 I was thinking about this issue from @Wolf KoellingIRIS Quarterly Container only releases and Studio"install some code on the target server" sounds to have the potential to work around his show stopper.
go to post Robert Cemper · Jan 14, 2019 Hi John,Would this include a certain level of independence between editing and Caché, Ensemble, IRIS version?Especially a kind of "forward" compatibility as long as you don't go for new features?
go to post Robert Cemper · Jan 14, 2019 Did you check it with Chrome or just the default browser ?for similar reasons I have set my default browser to Chrome
go to post Robert Cemper · Jan 11, 2019 I'm glad I could help the community with my answers andI especially like to express my BIG THANK to my readers voting for me.This clear and positive feedback is a strong motivation for me for the future years.
go to post Robert Cemper · Jan 10, 2019 My interpretation of th eerror message is:The JDBCdriver gets a request that it doesn't understand for a some reason but doesnt uncover the details.The issue is to my understanding sowher in the Java part outside Caché.I'd suggest to contact WRC as the know how to trace this and also understand the results.
go to post Robert Cemper · Jan 7, 2019 You are right: LNX distrib + Win Distrib were the same build.As far I remember from the version string "2018.1.1.643.0 " only "2018.1.1" is important.And also the container should have $ZV to verify (No idea what's in there actually )
go to post Robert Cemper · Jan 7, 2019 Hi Wolf,I ran into a similar problem a few weeks ago: IRIS on Linux - no studioMy solution: Custom install on my local WIN10 desktop. Only the Studio (and ODBC drivers).Nice side effect: the new IRIS-Studio also talks seamlessly to my local Caché. My assumption: As it works for an isolated Linux it should work for Docker as well (if no firewall blocks you )
go to post Robert Cemper · Jan 4, 2019 HIVE docs on String Types shows me:STRINGVARCHAR (Note: Only available starting with Hive 0.12.0)CHAR (Note: Only available starting with Hive 0.13.0andVarcharVarchar types are created with a length specifier (between 1 and 65535), which defines the maximum number of characters allowed in the character string. If a string value being converted/assigned to a varchar value exceeds the length specifier, the string is silently truncated. Character length is determined by the number of code points contained by the character string.Related to your ERROR that tells us that STRING has no size limit => it is a STREAM in our terms. So if you don't convert a STRING to VARCHAR [ preferable VARCHAR(255) ] you won't be able to use an alphanumeric IDYou may, of course, add some artificial numbering of type BIGINT to be used as ID.In any case, just with data type STRING I'd call this a rather a text file than an SQL usable table.Without touching the original source you may need to write your own loader:reading the HIVE "table" sequentially row by rowinsert it into a manually designed table/class with automatic id
go to post Robert Cemper · Jan 3, 2019 Using UUID is a .save way to have a UNIQUE Key.And Open by Key is a stable way for access. BUT be warned: replacing the default ID means locking you out from Bitmap indexing.This might not be an issue with modestly sized tables. With larger ones it may kill your query performance
go to post Robert Cemper · Jan 2, 2019 After exercising this you may start to analyze how to run asynchronous web sockets also without additional JS stuff.see more Using WebSockets (RFC 6455)
go to post Robert Cemper · Jan 2, 2019 Jour problem is that morder**....js is not found in your CSP library structures.Better start with the official example in namespace SAMPLES: Class Web.SocketTest Extends %CSP.WebSocketThat one is really useful to start
go to post Robert Cemper · Dec 27, 2018 I'm not sure if this is the question but I think"*.data.*" could be covered by ?.E1".data.".E eventually instead of .E somewhat limited by .AN or .ANP"Sample.*" could become ?1"Sample.".E Same for .ANP as above
go to post Robert Cemper · Dec 24, 2018 And also in Unix/Linux. It's important that the agents of all participants can talk to each other. (I just was hit by a misconfigured firewall)