go to post Robert Cemper · Aug 3, 2018 || is the concatenation operator in SQL1||1 results in 11 as you have seen'1||1' in single quotes should do it
go to post Robert Cemper · Aug 2, 2018 for cleaning up: /// to get rid of old versions /// select OBJ.DSTIME_DelVersion('Table',Version) /// ClassMethod DelVersion(Table As %String = " ", Version As %Integer = 0) As %Integer [ SqlProc ]{ Quit:'$l(Table) '$$$OK Kill ^OBJ.DSTIME(Table,+Version) Quit $$$OK}
go to post Robert Cemper · Aug 2, 2018 All I know about python is "Monty Python" OK.The table you want to control needs to get a parameter Parameter DSTIME = "AUTO"; and a recompileThen you can use this class to trace changes, new, delete /// Handle DSTIME using SQL/// select * from OBJ.DSTIME where version = lastversion/// to show allClass OBJ.DSTIME Extends %Persistent [ Final, SqlRowIdPrivate ] {Index idx On (Table, Version, RowID) [ IdKey ];Property Version As %Integer [ ReadOnly, SqlColumnNumber = 2 ];Property Table As %String [ ReadOnly, SqlColumnNumber = 3 ];Property RowID As %String [ ReadOnly, SqlColumnNumber = 4 ];Property Signal As %Integer(DISPLAYLIST = ",Modified,New,Deleted", VALUELIST = ",0,1,2") [Calculated, , SqlComputed, SqlColumnNumber = 5, SqlComputeCode = { set {*}=^OBJ.DSTIME({Table},{Version},{RowID})}];Property LastVersion As %Integer [ Calculated, SqlComputed, SqlColumnNumber = 6, SqlComputeCode = { set {*}=+$G(^OBJ.DSTIME) } ];/// to get actual last version and switch to new version/// select top 1 LastVersion,OBJ.DSTIME_NewVersion(LastVersion) from OBJ.DSTIME/// ClassMethod NewVersion(anycolumn As %String) As %Integer [ SqlProc ]{ Quit $I(^OBJ.DSTIME) }Storage Default {<DataLocation>^OBJ.DSTIME</DataLocation><IdLocation>^OBJ.DSTIMED</IdLocation><IndexLocation>^OBJ.DSTIMEI</IndexLocation><StreamLocation>^OBJ.DSTIMES</StreamLocation><Type>%Library.CacheStorage</Type>} } so get your actual changesselect * from OBJ.DSTIME where version = lastversionand switch to next version by select top 1 LastVersion,OBJ.DSTIME_NewVersion(LastVersion) from OBJ.DSTIME.But you have to have full access to Caché as you have to make the DB "talking" to be able to "listen"
go to post Robert Cemper · Aug 2, 2018 If you have just SQL access you may wrap a class around ^OBJ.DSTIME to select changes
go to post Robert Cemper · Aug 2, 2018 in combination with DeepSee there is a class parameter DSTIME to track additions, changes deletes for this purpose.https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=D2IMP_ch_current
go to post Robert Cemper · Aug 2, 2018 You have to test on server = "www.intersystem.com" not just domain.443 is ok USER>s req=##class(%Net.HttpRequest).%New()USER>s req.SSLConfiguration="SSL"USER>set sc=req.Get("https://www.intersystems.com")USER>zw scsc=1USER>set data=req.HttpResponse.DataUSER>do data.OutpuToDevice()>>>> lot of content <<<<
go to post Robert Cemper · Aug 1, 2018 There are some mistakes.#1 the links should be "HTTPS://www.intersystems.com" and you didn't set a ssl/tls config.if you use Set sc=httprequest.Get("http://www.intersystems.com",2)Do $system.OBJ.DisplayError(sc)you get ERROR #6159: ===> SSL missing#2 HttpResponse is an ObjectReferce not a Propertyset res=httprequest.HttpResponseZW res res=<OBJECT REFERENCE>[3@%Net.HttpResponse]+----------------- general information ---------------| oref value: 3| class name: %Net.HttpResponse| reference count: 3+----------------- attribute values ------------------| ContentBoundary = ""| ContentInfo = ""| ContentLength = 178| ContentType = "text/html"| Data = "4@%Stream.GlobalCharacter" ;;; here is your reply|Headers("CONNECTION") = "keep-alive"|Headers("CONTENT-LENGTH") = 178|Headers("CONTENT-TYPE") = "text/html"| Headers("DATE") = "Wed, 01 Aug 2018 15:25:05 GMT"|Headers("LOCATION") = "https://www.intersystems.com/"| Headers("SERVER") = "nginx"| Headers("X-TYPE") = "default"| HttpVersion = "HTTP/1.1"| ReasonPhrase = "Moved Permanently"| StatusCode = 301| StatusLine = "HTTP/1.1 301 Moved Permanently"+-----------------------------------------------------The content is in a Stream!! So Write is totally inappropriate to show it. Instead:do res.OutputToDevice() ;;;or similarHTTP/1.1 301 Moved PermanentlyCONNECTION: keep-aliveCONTENT-LENGTH: 178CONTENT-TYPE: text/htmlDATE: Wed, 01 Aug 2018 15:25:05 GMTLOCATION: https://www.intersystems.com/SERVER:nginxX-TYPE: default <html><head><title>301 Moved Permanently</title></head><body bgcolor="white"><center><h1>301 Moved Permanently</h1></center><hr><center>nginx</center></body></html>
go to post Robert Cemper · Jul 30, 2018 You may also want to check your message against the definition in WSDL. (e.g with XMLspy or similar)there are enough SOAP services around that don't fit to the WSDL they publish.
go to post Robert Cemper · Jul 30, 2018 Hi Thomas,If you generate your webservice from a WSDL you should check your classesfor correct hierarchical structure AND for properties flagged as required in WSDL.Typical situation: an address is optional but inside the address, the street is required. This can cause the whole address to be interpreted as required.You may either remove the required in properties or before generating the classes you edit the WSDL ( often easier).
go to post Robert Cemper · Jul 15, 2018 Your Sales Rep or Sales Engineer should also be a trustworthy resource.(probably not on Sunday morning / afternoon)
go to post Robert Cemper · Jul 14, 2018 As by your concrete questionCachéInterSystems Caché® is a high-performance database that powers transaction processing applications around the world. It is used for everything from mapping a billion stars in the Milky Way, to processing a billion equity trades in a day, to managing smart energy grids. EnsembleInterSystems Ensemble® is a seamless platform for rapid connectivity and the development of new connectable applications. Ensemble users typically complete projects twice as fast compared to previous generations of integration products. InterSystems IRISInterSystems IRIS Data Platform™ sets a new level of performance for rapidly developing and deploying important applications. All of the needed tools and capabilities are provided in a reliable, unified platform spanning data management, interoperability, transaction processing, and analytics.more
go to post Robert Cemper · Jul 13, 2018 I'm not aware of a "customized" collation.But this might be an appropriate workaround:- for your property, you define an additional calculated property that results out of your customized collation- for this new calculated property, you define COLLATION = EXACT to avoid default surprises (SQLUPPER !!!)If you index it, you should get what you expected without impact to the rest of your table
go to post Robert Cemper · Jul 12, 2018 On Win you could just swith on terminal logging.For Linux, you could connect to your server using PuTTY or similar and enable logging.Or make your personal copy %GSIZE => %zGSIZE and disable the artificial page breaks.(an interesting programming exercise)
go to post Robert Cemper · Jul 11, 2018 $EXTRACT(string,*-4,*)should do it . * marks the last char in the string*-4 ist he first of the last five chars
go to post Robert Cemper · Jul 9, 2018 if there is a problem with the single quote it should be in the query above as well. Your LAB person may look different to it. No by SQL.
go to post Robert Cemper · Jul 8, 2018 Very interesting result.You fall in timeout even with CallbackComment IS NULL !!!!!so single quotes can't be part of the game. So this should also work SELECT LENGTH(CallbackComment) FROM SQ.CBPhoneResult_View WHERE PhoneDateODBC = '2018-04-09' AND CallbackComment IS NOT NULL and this too SELECT LENGTH(CallbackComment), CallbackComment FROM SQ.CBPhoneResult_View WHERE PhoneDateODBC = '2018-04-09' AND CallbackComment IS NOT NULL This will indicate that some empty (NULL) element is causing the troubles. It might make sense to initialize all NULL CallbackComments with something.
go to post Robert Cemper · Jul 8, 2018 You can do an additional check directly in the table that holds CallbacKCommentFrom the Query Plan I assume it is SQ. CB_Contact something like SELECT ID, LENGTH(CallbackComment), CallbackComment FROM SQ.CB_Contact WHERE CallbackComment IS NOT NULL this should lead you to the critical point and someone with enough privileges could take a look at the stored data if it is really a single quote or something else
go to post Robert Cemper · Jul 8, 2018 As it stops also with the REPLACE let'S do 2 other checks: SELECT CallbackComment FROM SQ.CBPhoneResult_View WHERE PhoneDateODBC = '2018-04-09' AND CallbackComment IS NULL this verifies that the day plays no role SELECT LENGTH(CallbackComment) FROM SQ.CBPhoneResult_View WHERE PhoneDateODBC = '2018-04-09' AND NOT CallbackComment [ '''' Now we exclude all single quotesIf this one fails means that we see a single quote but it might be some other character I also changed to LENGTH as it should not interfere with single quotes [ is the contains operator