Correction:
in SQL.Shell you get a partial result
- Log in to post comments
Correction:
in SQL.Shell you get a partial result
Once the query is running it is not interested in any browser activity.
BUT:
the query is stopped when you fall into the session timeout
and the related process (and any query) is terminated.
SO it not running forever!
the benefit of the shell is:
you can stop it by <CTRL>+C immediately. But also don't get any output.
so it's rather a KILL than a STOP
in Caché Terminal you may
;;; see I/O device guide for more details
The name of the io table is really just UTF8 with no hyphen !
So you force translation to internal format.
Reading from Caché with "utf8" set should do it as well.
So Caché normally should be ok.
Have you tried to read the HEX codes stored. (eg. by http://www.pspad.com/ )
I had the experience that especially with Windows some well-written files
looked bad by false (back)translation in some cases.
(Notepad is one of the ugly beasts to stick with 8 bit chars.)
It looks to me somehow like double encoded.
Does your installation run as 8bit national (iso latin1) set or as wide char. unicode PTUW ?
Mgmt Portal "About" tells you .png)
Assuming that cdate has a rather narrow selectivity
#1) looking for a distinct value (1) gives a rather moderate result set. So the index global might not consume too much buffer blocks.
#2) looking for >1 (combined with a significant EXTENTSIZE may create a huge resultset.
So it is wise to scan the index global first {typically less blocks than data global] and keep the hits sorted by ID.
Then you run with this hit list along the master map through your data global. Assuming that data require
significantly more block reads than the index global.
With a reasonable amount of Global buffers, your temp Global even might not see the Disk storage at all.
You see it's a bunch of assumptions hidden in this query plan.
The main goal, in any case, is to have as less "disk" access as possible.
I quoted "disk" as storage has so many kinds of variations that it just stands as a synonym.
Download as by PRODUCTS / Download IRIS .
Never heard of J-Report before.
Sounds good.
Does this imply to allow more than one accepted Comment / Reply ?
I see !
And can confirm that this is by design (and ANSI definition) built like a routine call by value.
And you have no chance for a pass by reference. [ somehow for i=1:1:.x ]
Funny enough I remember a related discussion when I implemented that piece of M_interpreter almost 40 yrs ago (pre Caché in MACRO32)
And the result was: If someone wants a dynamic ended loop he should use the unlimited variant and QUIT it when done.
(WHILE was unknown in the standard definition of '78)
And for reason of backward compatibility, no one ever tried to change it.
I probably miss the point of your example.
BUT, the equivalent of your WHILE loop is this FOR loop:
set x=5 for i=1:1 write "i: ",i,", x: ",x,! if $i(x) quit:i>x
and it's immedeatly evident that this loop is endless by design similar as the while construct
Hi Dmitriy,
$ZF(-1) has no chance for a timeout it is strictly synchronous
So $ZF(-2) and Looping for a result might be a workaround
$ZF(-100,"/ASYNC", ...) may do the same. See details
Both need to run the external routine in a script that documents its completion in some file and you check it.
A different approach could be a Command Pipe (CPIPE) where you read the result with a timed READ.
It's basically the same
Actually most queries run on a single server.
With Sharding It might be much more important to see possible effects of distributed queries.
Especially in the starting phase when optimizing distributions is still somehow like tapping in the fog.
Hi Ben,
I have query plans tonight. but not in SQL ;-)
seriously. 90% from SMP, the rest from SQLshell.
Alternate Query never crossed my path.
Fully support this! Just working with user _SYSTEM is not funny.
Hi Scott!
Happy new year!
You are right ZEN is out but CSP is not.
With ZEN you might have implemented inline editing.
But is rather simpler to achieve an acceptable result (except coloring) if you separate editing from table view.
The generated page has a SEARCH page that should be easy to configure. <CSP:SEARCH>
And if you force the generated page to start with the search page with maxrows=25 you might cover the needs I understood.
This were my changes:
<title>Cache Server Page - Sample.Person (SAMPLES)</title>
</head>
<!-- start with search page -->
<body onload='form_search()'>
<h1 align='center'>
and at end:
</body>
This is the extended CSP:SEARCH tag:
<csp:search name='form_search'
classname='Sample.Person'
where='ID,Name,DOB,Home.City,Home.State' options='clearbtn,sortbox'
PREDICATES="%startswith,=,contains" MAXROWS=25
SELECT = 'ID,Name,DOB,Home.City,Home.State,Home.Street,Home.Zip'
>
I did the example in namespace SAMPLES
Hi Jeff,
After some playing around it was clear that any error in a procedures ends up with <-149>:<SQL Function encountered an error>
as you found out yourself.
To have <-400> the error must happen at the top level of your SQL statement .
Using your initial SqlProc
If you add an argument to your SELECT ....., 1/HL7.Message.Get(pid) as found ....
you get a useless 1/tMsg.Read(tMsg.Size) value
but you get
enforced by a 0 return value.
That's just half of the request and I see no way to influence %msg variable
So you can enforce a STOP of your query.
Sorry,
I had in mind to set SQLCODE = -400 , %msg, . .. or similar Embedded SQL variables directly
if it is just for SQLCODE instead of ProcedureBlock = 0 you may use
ClassMethod Get(pId As %String) As %String [ SqlName = GetMsg, SqlProc ,
% variables are public anyhow
details on PublicList
Did you try to use
ClassMethod Get(pId As %String) As %String [ SqlName = GetMsg, SqlProc ,
to get SQLCODE and related variables out fo your Class Context ?
Sorry, I had no chance to try it self.
I think it's both
#1 missing a lot of important countries
#2 wrong (or very aged) since FRANCE: 20 would mean to have 1 employee by customer . This simply can't match.
I think a look at the WRC registry might give some feeling on the dimensions. (without disclosing details)
For my case 5 yrs back picking out 1 of my partners which had >30 installations at 30 companies.
Could be they count "Intersystems Only" - but that's not stated nor does it make sense.
walking through their web pages you see fast who is their preferred product supplier. no need to mention
Attention!
The list of companies from enlyft.com is totally wrong.
Even if you just look at Electronic Health Record you miss important countries like whole Scandinavia, Italy, Germany, China, ...
and beyond that whole middle and eastern Europe and especially Russia. Where is Japan ?
Just as a signal how massively wrong these figures are:
My small Austria has more companies using Intersystems products than this 26 counting for India.
I'd suggest you contact Intesystems Marketing for REAL figures.
Your source is just faked information.
Thanks for the confirmation.
By this trick, (applied on coordinates) I could beat Oracle Spacial by magnitudes
Thanks for the feedback!
& Happy New Year
![]()
the issue is here:
Method RtnReceive(RtnName As %String,
RtnLines As %ListOfDataTypes(ELEMENTTYPE="%String",
XMLITEMNAME="RtnLinesItem",XMLNAME="RtnLines")) As %String [ Final, ProcedureBlock = 1, SoapBindingStyle = document, SoapBodyUse = literal, WebMethod ]
{use instead ELEMENTTYPE="%VarString",
%VarString inherits from %String all except pre-define MAXLEN=50
Wild guess from the hip:
Your Data Type is a %String with default (MALXLEN=50)
Try instead %VarString or %XML.String
A few recommendations to improve performance:
#1) %TimeStamp is a nice thing for display tough rather inefficient for indexing as it is mostly close to a unique index.
If you just check for Date as you describe you better use an index on a calculate property of type %Date
instead of a string, your date values in index are just integers !!!
that makes your index slim and fast.
#2)
check for = is the easiest one, therefore, the fastest
check for > is the slowest as you have no stop condition
between is somewhat better as you have to check > and < but you have a start / stop delimited range.
And integer compare is by dimensions faster than any string compares with any available processor chip.
And you do lots of them!
in reality, better check the number of Global references and lines you execute.
That's the truth. Costs are good guesswork based on generic parameters out of tune table but rather for the dimension.
SUPER ! ![]()
less scrolling = easier to foloww the contents.
A real Xmas gift! ![]()
Congrats & best wishes
@Kenneth.Poindexter8571 this is correct
though the result might be disappointing.
See: >ping www.intersystems.com
Antwort von 172.227.166.122: Bytes=32 Zeit=22ms TTL=55
But:
USER>w $system.INetInfo.AddrToHostName($C(172,227,166,122))
a172-227-166-122.deploy.static.akamaitechnologies.com
USER>
here ist lengthy doc to the wizard
https://cedocs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GSTD_Start#GSTD_CreateWeb