different approach:
SELECT LI.id from FDRD_Com.List LI
JOIN FDRD_Com.Prod PR
ON LI.vehicle = PR.Car
WHERE PE.ProductLineName='Toyota'
AND PR.Car is not null -- might be obsolete- Log in to post comments
different approach:
SELECT LI.id from FDRD_Com.List LI
JOIN FDRD_Com.Prod PR
ON LI.vehicle = PR.Car
WHERE PE.ProductLineName='Toyota'
AND PR.Car is not null -- might be obsoleteIN is expecting a list.
Did you ever try
select id from FDRD_Com.List where vehicle IN
(select LIST(Car) from FDRD_Com.Prod where ProductLineName='Toyota' and Car is not null)
on the sub select ?
As an active participant you know the practical case.
Though most readers that never touched AOC might be confused.
The original intention was to exclude parts not solved in ObjectScript:
(e.g Java, C# JS, ....)
It turned out this was not possible to implement with acceptable effort.
Big THANK YOU @Jani Hurskainen for sharing your story.
I'm impressed by the progress you made on ObjectScript
after only 1,5 years maybe 30% of working time,
AoC examples are definitely different from the target cases ObjectScript was designed for.
Its top target is the underlaying database, string manipulation and less math functionality.
My best wishes for Health and Success for the New Year
Robert
In 2021 I published my article IRIS easy ECP workbench
with a related a Docker based demo on OEX.
All you need is the ECP enabled license for containers or Platform Independent
Community version is not ECP enabled
Only 2 completed Packages from GitHub >
installed and verified with 2 test sets fulfill requirements.
You have to provide your test data set manually.
The contest is closed.
Thank you @Evgeny Shvarov !
I'd like to underline especially the use of Docker.
My hundreds reviews in OEX wouldn't be possible without it with my limited test environment.
It's not only the option to run various versions in parallel to my personal setup,
but much more the possibility to clean out all traces and specific settings just with a click.
If you ever tried to remove COMPLETELY an IRIS installation with all traces
from Windows you may understand me.
And with the available templates it is a really easy exercise to compose
your personal customized package with almost no effort and
test it over and over from scratch.
If available anyhow any SQL or TSQL is slower
Suggestion:
you crate your own stored procedure to decide during SELECT
example:
/// Return NEW for first occurance of item
/// otherwise return OLD
Class User.ItemStat Extends %RegisteredObject
{
ClassMethod NewOld(item As %String = "") As %String [ SqlProc ]
{
if item="" quit "?"
if $d(^||list(item)) quit "OLD"
if $i(^||list(item)) quit "NEW"
}
}How to use it:
SELECT *, ItemStat_NewOld(item) as Status
FROM items order by 2Result:
ID date item Status
1 09/13/1932 A NEW
2 04/06/1933 D NEW
10 06/15/1940 A OLD
4 11/26/1940 A OLD
6 02/19/1956 B NEW
8 04/22/1957 D OLD
7 05/01/1959 D OLD
9 06/29/1961 ?
3 07/04/1992 B OLD
5 12/08/2020 D OLD
Looking forward to hear your story!
That's often of much more value than the pure code..
Somewhere in your data structure you have a property / Column of type DATE
the content seems to be a null_string (string of length zero) instead of a real SQL NULL (empty, no value)
My guess: it's one of the 8 Dob ( Date of Birth ?) named fields
check the related contents
Congratulations and big THANKS @Alberto Fuentes
Similar to previous years I will provide the results of our private leaderboard
DCrank AOCrank Scores Stars ok% ----- Code Parts OK ----- Name
0 --- ---- ---- --- ----*----*----*----*----* --- DC Members ---
1 7 7361 50 100 3333333333333333333333333 abdul-manaan
2 8 7296 50 100 3333333333333333333333333 Yuval Golan
3 9 5310 36 72 3333333333333331331------ JFerreB
4 11 2598 18 36 333333333---------------- Peter Zubiago
5 13 2537 17 34 333333331---------------- Oskari Kosonen
6 14 2052 14 28 3333313---1-------------- Keith Avery
7 15 1928 13 26 3333331------------------ Jani Hurskainen
8 17 1639 11 22 333311--1---------------- Ivo ver eecke
9 18 1278 9 18 33331-------------------- TylerFeldhege
10 21 875 6 12 333---------------------- rhodery
11 23 695 5 10 331---------------------- Chris Marais
12 24 565 4 8 33----------------------- Oliver Wilms
13 --- ---- ---- --- ------------------------- --- ISC internals ---
14 2 7592 50 100 3333333333333333333333333 TestSet 1
15 3 7545 50 100 3333333333333333333333333 TestSet 2
16 22 811 6 12 333---------------------- Junhee Lee
17 --- ---- ---- --- ------------------------- --- unknow in DC ---
18 1 7683 50 100 3333333333333333333333333 Dominik Znidar
19 4 7540 50 100 3333333333333333333333333 Joaquin Derrac Rus
20 5 7539 50 100 3333333333333333333333333 Jarjar 314
21 6 7527 50 100 3333333333333333333333333 (anonymous user #1128565)
22 10 3295 23 46 3333313-1331311---------- (anonymous user #4293990)
23 12 2569 18 36 33333-331-1-3------------ Sloan Kanaski
24 16 1902 13 26 33331111--1-------------- Chhayank Warad
25 19 1083 8 16 3333--------------------- Noah Dohrmann
26 20 1064 8 16 3333--------------------- (anonymous user #214666)
27 25 427 3 6 31----------------------- Gary Nguyen
28 Rows(s) Affected
UTC 2024-12-30 08:28:42
EST 2024-12-30 03:28:42
Hi @Jeffrey Drumm ;
different approach: use your own datatype that always returns fixed MAXLEN string:
/// Make fixlength String according to MAXLEN parameter
Class rcc.GetFix Extends %Library.String
{
/// Fill value <var>%val</var> to <a href="#MAXLEN">MAXLEN</a> characters.
Method Get() As %String [ CodeMode = generator, ServerOnly = 1 ]
{
set code="$e(%val_"""_$j("",+%parameter("MAXLEN"))
set code=code_""",1,"_+%parameter("MAXLEN")_")"
$$$GENERATE( " Quit "_code)
QUIT $$$OK
}
}and a test class:
Class rcc.FixTest Extends %RegisteredObject
{
Property test As rcc.GetFix(MAXLEN = 12);
}
and now some check from terminal:
SAMPLES>set z=##class(rcc.FixTest).%New() set z.test="rob"
SAMPLES>write z.test,$L(z.test)
rob 12
SAMPLES>;some oversized string
SAMPLES>set z.test=";some oversized string"
SAMPLES>write z.test,$L(z.test)
;some oversi12
SAMPLES> Hope this helps you along
My guess:
#2)
Every LOCK persists until the process is ended or the LOCK is removed explicitely (LOCK -....)
it is not related to any error handling.
#1)
depends on your design.
If there is no conflict of subscripts between ADD and REMOVE possible there is no need of a Lock
no need for this COPY
if your docker-compose.yml contains
volumes:
- ./:/home/irisowner/dev
So comparing .CLS to .MAC/.INT is like comparing a goat to the final cheese you buy.
video added https://youtu.be/fl0SDt-rxAU
A few questions:
To get the property position dynamically by program you may use this ClassMethod
ClassMethod PropSeq(classname As %String = "", propname As %String = "")
As %String [ SqlProc ]
{
if classname="" set classname=..%ClassName(1)
set pos=0
&sql(
SELECT SequenceNumber INTO :pos
FROM %Dictionary.CompiledProperty
WHERE transient=0
AND parent=:classname
AND name=:propname
)
if SQLCODE set pos="-1;"_SQLCODE
quit pos
}
a somewhat 'dirty' approach
select ID, Name_GivenName from Demo.DemoPatient
where FOR SOME %ELEMENT(Demo.DemoPatient.Aliases) ($LISTFIND(%value,'Twain')>0)advantage - no need to know the structure of your serial class
risk - false positives for unexpected coincidences. eg. Washington, John, ...
the example builds on the fact that the storage structure of the serial object is known
Storage Default { <Data name="serItemState"> <Value name="1"> <Value>Subject</Value> </Value> <Value name="2"> <Value>Change</Value> </Value> <Value name="3"> <Value>Color</Value> </Value> </Data> <State>serItemState</State> <StreamLocation>^rcc.IC.serItemS</StreamLocation>
in this case color is #3 in serial storage ==>> $list(%Value,3)
So you need to know the position of FamilyName in HS.SDA3.Name (e.g.7 ?)
then you can use $list(%value,7) = 'Twain' as condition
7 is just a guess as I don't have any HS* classes at hands
This article is focused on indexing, though it shows the principle of the SQL query
Effective use of Collection Indexing and Querying Collections through SQL
THX. Never used it before
it applies to any code in ObjectScript
BIG THANKS!
That soved the problem
It's a shame that the owner of the package didn't react to the ISSUE on Github or OEX for 3 months