From: Staffan T. <sta...@gm...> - 2012-10-30 17:47:46
|
I'm trying for the first time to use the OO_STEM_OF_STEMS option but can't figure out how to use or access the result. Here are two different attempts: Using a stem variable as output: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows.0 2 say rows.1 record say rows.2 record say rows.1.0 records1.0 say rows.1.1 records1.1 say rows.1[1] record1 say rows.1[2] record2 say rows.1[2][1] +++ Interactive trace. Error 97: Object method not found +++ Interactive trace. Error 97.1: Object "record2" does not understand message "[]" say rows.1[2][a] +++ Interactive trace. Error 97: Object method not found +++ Interactive trace. Error 97.1: Object "record2" does not understand message "[]" say rows.1[a] recordan ooSQLiteConnection say rows.1[b] B1 say rows.1[c] recordC say rows.1[d] recordD Using a normal variable as output: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows records say rows.0 ROWS.0 say rows.1 ROWS.1 say rows[1] record say rows[0] 2 say rows[1][1] record1 say rows[1][a] recordan ooSQLiteConnection say rows[1][b] B1 say rows[1][c] recordC None of the above makes sense to me. The table TBL was created like this: CREATE TABLE TBL (A,B); INSERT INTO "TBL" VALUES('A1','B1'); INSERT INTO "TBL" VALUES('A2','B2'); I can feel the answer is obvious, I just can't see it. Staffan |
From: hakan <he...@us...> - 2012-10-30 18:25:52
|
Staffan rows.=a~exec("SELECT * FROM TBL;",.TRUE) do x = 1 to rows.0 arow. = rows.x say arow.A arow.B end should do it,If I recall it correct Look at Marks sample execTestS.rex in oosqlite directory testing /hex ----- Ursprungligt Meddelande ----- Från: Staffan Tylen <sta...@gm...> Till: Open Object Rexx Users <oor...@li...> Kopia: Datum: tisdag, 30 oktober 2012 18:47 Ämne: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS I'm trying for the first time to use the OO_STEM_OF_STEMS option but can't figure out how to use or access the result. Here are two different attempts: Using a stem variable as output: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows.0 2 say rows.1 record say rows.2 record say rows.1.0 records1.0 say rows.1.1 records1.1 say rows.1[1] record1 say rows.1[2] record2 say rows.1[2][1] +++ Interactive trace. Error 97: Object method not found +++ Interactive trace. Error 97.1: Object "record2" does not understand message "[]" say rows.1[2][a] +++ Interactive trace. Error 97: Object method not found +++ Interactive trace. Error 97.1: Object "record2" does not understand message "[]" say rows.1[a] recordan ooSQLiteConnection say rows.1[b] B1 say rows.1[c] recordC say rows.1[d] recordD Using a normal variable as output: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows records say rows.0 ROWS.0 say rows.1 ROWS.1 say rows[1] record say rows[0] 2 say rows[1][1] record1 say rows[1][a] recordan ooSQLiteConnection say rows[1][b] B1 say rows[1][c] recordC None of the above makes sense to me. The table TBL was created like this: CREATE TABLE TBL (A,B); INSERT INTO "TBL" VALUES('A1','B1'); INSERT INTO "TBL" VALUES('A2','B2'); I can feel the answer is obvious, I just can't see it. Staffan ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users |
From: Staffan T. <sta...@gm...> - 2012-10-30 18:37:30
|
> > rows.=a~exec("SELECT * FROM TBL;",.TRUE) > > do x = 1 to rows.0 > arow. = rows.x > say arow.A arow.B > end > should do it,If I recall it correct > Look at Marks sample execTestS.rex in oosqlite directory testing > /hex > > Thanks Håkan, but I get this: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows.0 2 say rows.1 record w.=rows.1 say w. record say w.0 record0 say w.A recordan ooSQLiteConnection say w.B B1 Column B looks OK but column A looks very odd, doesn't it? Staffan |
From: hakan <he...@us...> - 2012-10-30 19:00:15
|
Yeah Look strange a=.oosqliteconnection~new("mytest.db",,.ooSQLite~OO_STEM_OF_STEMS) rows.=a~exec("SELECT * FROM TBL;",.TRUE) do x = 1 to rows.0 arow. = rows.x say arow.A arow.B end ::requires 'ooSQLite.cls' I get this (trace output) ( didn't test before my first answer) 4 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" 5 *-* do x = 1 to rows.0 >>> "1" 6 *-* arow. = rows.x >>> "record" 7 *-* say arow.A arow.B >>> "recordan ooSQLiteConnection B1" recordan ooSQLiteConnection B1 8 *-* end 5 *-* do x = 1 to rows.0 >>> "1" >>> "2" 6 *-* arow. = rows.x >>> "record" 7 *-* say arow.A arow.B >>> "recordan ooSQLiteConnection B2" recordan ooSQLiteConnection B2 ----- Ursprungligt Meddelande ----- Från: Staffan Tylen <sta...@gm...> Till:<he...@us...> , Open Object Rexx Users <oor...@li...> Kopia: Datum: tisdag, 30 oktober 2012 19:37 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS rows.=a~exec("SELECT * FROM TBL;",.TRUE) do x = 1 to rows.0 arow. = rows.x say arow.A arow.B end should do it,If I recall it correct Look at Marks sample execTestS.rex in oosqlite directory testing /hex Thanks Håkan, but I get this: 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >>> "an ooSQLiteConnection" +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> "records" say rows.0 2 say rows.1 record w.=rows.1 say w. record say w.0 record0 say w.A recordan ooSQLiteConnection say w.B B1 Column B looks OK but column A looks very odd, doesn't it? Staffan |
From: Mark M. <mie...@gm...> - 2012-10-30 18:54:54
|
Hi Staffan On Tue, Oct 30, 2012 at 11:25 AM, hakan <he...@us...>wrote: > ** > > > rows.=a~exec("SELECT * FROM TBL;",.TRUE) > > do x = 1 to rows.0 > arow. = rows.x > say arow.A arow.B > end > should do it,If I recall it correct > Look at Marks sample execTestS.rex in oosqlite directory testing > This is pretty much the reply I would have given, thanks /hex. Just a few comments to maybe clarify a few things. The stem returned has the number of rows in stem.0. Say stem.0 == n. Then stem.1 ... stem.n contain a stem for each row. For that stem, there is an index for each column in the row. The index name is the upper case version of the column name and the value at that index is the value of the column in that row. I know I'm a little lagging on the documentation for ooSQLite, but this is explained in the doc, and there is an example as /hex pointed out. ;-) -- Mark Miesfeld |
From: Mark M. <mie...@gm...> - 2012-10-30 18:58:22
|
On Tue, Oct 30, 2012 at 11:37 AM, Staffan Tylen <sta...@gm...>wrote: > > Thanks Håkan, but I get this: > > > 2 *-* a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) > >>> "an ooSQLiteConnection" > +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ > > 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) > >>> "records" > say rows.0 > 2 > say rows.1 > record > w.=rows.1 > say w. > record > say w.0 > record0 > say w.A > recordan ooSQLiteConnection > say w.B > B1 > > Column B looks OK but column A looks very odd, doesn't it? You assigned a vale to a, so if your column name is a, w.a is now screwed up, right? That's the problem with using stems. -- Mark Miesfeld |
From: Staffan T. <sta...@gm...> - 2012-10-30 19:00:49
|
Ooooh!!!! Silly me, how many times have I fallen for this ???? Thanks! On Tue, Oct 30, 2012 at 7:58 PM, Mark Miesfeld <mie...@gm...> wrote: > > > On Tue, Oct 30, 2012 at 11:37 AM, Staffan Tylen <sta...@gm...>wrote: > >> >> Thanks Håkan, but I get this: >> >> >> 2 *-* >> a=.oosqliteconnection~new("test.db",,.ooSQLite~OO_STEM_OF_STEMS) >> >>> "an ooSQLiteConnection" >> +++ Interactive trace. "Trace Off" to end debug, ENTER to Continue. +++ >> >> 3 *-* rows.=a~exec("SELECT * FROM TBL;",.TRUE) >> >>> "records" >> say rows.0 >> 2 >> say rows.1 >> record >> w.=rows.1 >> say w. >> record >> say w.0 >> record0 >> say w.A >> recordan ooSQLiteConnection >> say w.B >> B1 >> >> Column B looks OK but column A looks very odd, doesn't it? > > > > You assigned a vale to a, so if your column name is a, w.a is now screwed > up, right? That's the problem with using stems. > > -- > Mark Miesfeld > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > Oorexx-users mailing list > Oor...@li... > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > |
From: Staffan T. <sta...@gm...> - 2012-10-30 18:59:51
|
Thanks Mark, yes /hex expalined this and it seems to work for column B in my test but not for the first column (A), there I get the strange recordan ooSQLiteConnection Staffan On Tue, Oct 30, 2012 at 7:54 PM, Mark Miesfeld <mie...@gm...> wrote: > Hi Staffan > > On Tue, Oct 30, 2012 at 11:25 AM, hakan <he...@us...>wrote: > >> ** >> >> >> rows.=a~exec("SELECT * FROM TBL;",.TRUE) >> >> do x = 1 to rows.0 >> arow. = rows.x >> say arow.A arow.B >> end >> should do it,If I recall it correct >> Look at Marks sample execTestS.rex in oosqlite directory testing >> > > > This is pretty much the reply I would have given, thanks /hex. > > Just a few comments to maybe clarify a few things. The stem returned has > the number of rows in stem.0. > > Say stem.0 == n. Then stem.1 ... stem.n contain a stem for each row. For > that stem, there is an index for each column in the row. The index name is > the upper case version of the column name and the value at that index is > the value of the column in that row. > > I know I'm a little lagging on the documentation for ooSQLite, but this is > explained in the doc, and there is an example as /hex pointed out. ;-) > > -- > Mark Miesfeld > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > Oorexx-users mailing list > Oor...@li... > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > |
From: Mark M. <mie...@gm...> - 2012-10-30 19:01:32
|
See my next post. The posts seem to be crossing in the ethernet. -- Mark Miesfeld On Tue, Oct 30, 2012 at 11:59 AM, Staffan Tylen <sta...@gm...>wrote: > Thanks Mark, yes /hex expalined this and it seems to work for column B in > my test but not for the first column (A), there I get the strange recordan > ooSQLiteConnection > > Staffan > > > On Tue, Oct 30, 2012 at 7:54 PM, Mark Miesfeld <mie...@gm...> wrote: > >> Hi Staffan >> >> On Tue, Oct 30, 2012 at 11:25 AM, hakan <he...@us...>wrote: >> >>> ** >>> >>> >>> rows.=a~exec("SELECT * FROM TBL;",.TRUE) >>> >>> do x = 1 to rows.0 >>> arow. = rows.x >>> say arow.A arow.B >>> end >>> should do it,If I recall it correct >>> Look at Marks sample execTestS.rex in oosqlite directory testing >>> >> >> >> This is pretty much the reply I would have given, thanks /hex. >> >> Just a few comments to maybe clarify a few things. The stem returned has >> the number of rows in stem.0. >> >> Say stem.0 == n. Then stem.1 ... stem.n contain a stem for each row. >> For that stem, there is an index for each column in the row. The index >> name is the upper case version of the column name and the value at that >> index is the value of the column in that row. >> >> I know I'm a little lagging on the documentation for ooSQLite, but this >> is explained in the doc, and there is an example as /hex pointed out. ;-) >> >> -- >> Mark Miesfeld >> >> >> >> ------------------------------------------------------------------------------ >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_sfd2d_oct >> _______________________________________________ >> Oorexx-users mailing list >> Oor...@li... >> https://lists.sourceforge.net/lists/listinfo/oorexx-users >> >> > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > Oorexx-users mailing list > Oor...@li... > https://lists.sourceforge.net/lists/listinfo/oorexx-users > > |
From: hakan <he...@us...> - 2012-10-30 19:12:46
|
Staffan next time I will reread your code ;-) and not just copy. Shame on me :-) /hex ----- Ursprungligt Meddelande ----- Från: Mark Miesfeld <mie...@gm...> Till: Open Object Rexx Users <oor...@li...> Kopia: Datum: tisdag, 30 oktober 2012 20:01 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS See my next post. The posts seem to be crossing in the ethernet. -- Mark Miesfeld On Tue, Oct 30, 2012 at 11:59 AM, Staffan Tylen <sta...@gm...> wrote: Thanks Mark, yes /hex expalined this and it seems to work for column B in my test but not for the first column (A), there I get the strange recordan ooSQLiteConnection Staffan On Tue, Oct 30, 2012 at 7:54 PM, Mark Miesfeld <mie...@gm...> wrote: Hi Staffan On Tue, Oct 30, 2012 at 11:25 AM, hakan <he...@us...> wrote: rows.=a~exec("SELECT * FROM TBL;",.TRUE) do x = 1 to rows.0 arow. = rows.x say arow.A arow.B end should do it,If I recall it correct Look at Marks sample execTestS.rex in oosqlite directory testing This is pretty much the reply I would have given, thanks /hex. Just a few comments to maybe clarify a few things. The stem returned has the number of rows in stem.0. Say stem.0 == n. Then stem.1 ... stem.n contain a stem for each row. For that stem, there is an index for each column in the row. The index name is the upper case version of the column name and the value at that index is the value of the column in that row. I know I'm a little lagging on the documentation for ooSQLite, but this is explained in the doc, and there is an example as /hex pointed out. ;-) -- Mark Miesfeld ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users |
From: Staffan T. <sta...@gm...> - 2012-10-30 19:11:30
|
It's a bit confusing for me because I've been using RexxSQL for some time and there the result, always in stem format, are returned as 'stem.column.row' but ooSQLite returns it as 'stem.row' -> 'stem.column'. Can the column value be accessed using a single statement? If I try 'row.1.B' I get 'records1.B' as result. Staffan |
From: hakan <he...@us...> - 2012-10-30 19:26:17
|
rows.x~at('A') /hex ----- Ursprungligt Meddelande ----- Från: Staffan Tylen <sta...@gm...> Till: Open Object Rexx Users <oor...@li...> Kopia: Datum: tisdag, 30 oktober 2012 20:11 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS It's a bit confusing for me because I've been using RexxSQL for some time and there the result, always in stem format, are returned as 'stem.column.row' but ooSQLite returns it as 'stem.row' -> 'stem.column'. Can the column value be accessed using a single statement? If I try 'row.1.B' I get 'records1.B' as result. Staffan ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users |
From: Staffan T. <sta...@gm...> - 2012-10-30 19:30:10
|
> ** > rows.x~at('A') > /hex > > OF COURSE! I must be tired... Thanks, Staffan |
From: hakan <he...@us...> - 2012-10-30 19:47:53
|
Staffan More oppertunities col= rows.x~todirectory say col[a] say col[b] ----- Ursprungligt Meddelande ----- Från: Staffan Tylen <sta...@gm...> Till:<he...@us...> , Open Object Rexx Users <oor...@li...> Kopia: Datum: tisdag, 30 oktober 2012 20:30 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS rows.x~at('A') /hex OF COURSE! I must be tired... Thanks, Staffan |
From: Staffan T. <sta...@gm...> - 2012-10-30 19:53:52
|
> More oppertunities > > col= rows.x~todirectory > say col[a] > say col[b] > > Hmm, I like that one. Makes nice and clean code. Thanks. Staffan |
From: Mark M. <mie...@gm...> - 2012-10-30 21:49:29
|
On Tue, Oct 30, 2012 at 12:10 PM, Staffan Tylen <sta...@gm...>wrote: > It's a bit confusing for me because I've been using RexxSQL for some time > and there the result, always in stem format, are returned as > 'stem.column.row' but ooSQLite returns it as 'stem.row' -> 'stem.column'. > Can the column value be accessed using a single statement? If I try > 'row.1.B' I get 'records1.B' as result. The way it is currently set up, if you use compound tails, I don't think so. I see /hex has some nice statements. I never used stems much, and I haven't used them at all since I started using ooRexx. It's too easy to do: stm.addr = '127.0.0.1' .... more code addr = "6121 San Francisco Blvd" ... more code socketConnect(stm.addr) and spend too much time trying to debug the socket server. So, it could be that I'm using the native API incorrectly, or thinking about stems incorrectly, and I might not be setting stuff up right. stem.column.row What does that look like? stm. = dbConn~exe(..) stm.A.1 stm.A.2 stm.A.3 stm.B.1 stm.B.2 stm.B.3 How do you know how many rows there are? -- Mark Miesfeld |
From: Staffan T. <sta...@gm...> - 2012-10-30 23:36:25
|
> > > What does that look like? > > stm. = dbConn~exe(..) > > stm.A.1 > stm.A.2 > stm.A.3 > stm.B.1 > stm.B.2 > stm.B.3 > > How do you know how many rows there are? > > This is how RexxSQL is creating its output, with stm.A.0, stm.B.0 etc all having the (same) number of rows. I don't want to judge if this is better than what's in place already in ooSQLite, but as you said, stems are there to give problems :) Staffan |
From: Mark M. <mie...@gm...> - 2012-10-31 00:00:23
|
On Tue, Oct 30, 2012 at 4:35 PM, Staffan Tylen <sta...@gm...>wrote: > >> What does that look like? >> >> stm. = dbConn~exe(..) >> >> stm.A.1 >> stm.A.2 >> stm.A.3 >> stm.B.1 >> stm.B.2 >> stm.B.3 >> >> How do you know how many rows there are? >> >> > This is how RexxSQL is creating its output, with stm.A.0, stm.B.0 etc all > having the (same) number of rows. Sorry, I still don't get it. Say you have a table with 6 rows, column 1 is named A and column 2 is named B. Then you do a select * from that table. I would view that as row A B ============= 1 x y 2 a b 3 e f 4 n m 5 t o 6 q d So that the value of row 4 column a was 'n' and the value of row 2 column b was 'b' How do you extract those values from the stem? Regardless of that discussion, I could change the way the returned stem is created so that this would would work: say 'id'~left(6) || 'type_id'~left(8) || 'name'~left(25) say '='~copies(40) do i = 1 to rs.0 say rs.i.id~left(6) || rs.i.type_id~left(8) || rs.i.name~left(25) end and you would get output something like this: id type_id name ======================================== 86 4 A1 Sauce 213 9 All Day Sucker 212 9 Almond Joy 189 8 Apple This: do i = 1 to rs.0 say rs.i.name end Is actually more of the construct I first pictured. But, my first implementation didn't work correctly and I gave up on that, thinking for some reason that it wasn't possible. This discussion got me thinking about it again. This change would mean any one already using the existing format would need to change their code. I would like to hear what people think? -- Mark Miesfeld |
From: hakan <he...@us...> - 2012-10-31 07:33:52
|
I like the rs.i.id style, I haven't used stems as output from oosqlite exec at all, so no code to change here either. for me it's more OO_STEM_OF_ROWS (rs.0) than OO_STEM_OF_COLUMNS Regarding the risk of using a local variable with the same name as a table column, I think that's the programmer's responsibility to keep track of. That problem is always present regardless oosqlite. So please no construct like, stem.0column or .!column Another thing to maybe (I am not sure) consider is if a table column name have embedded space, like 'my column'. Also if using stem.~allIndexes/makearray, you get an array of all stem tails/indexes, but it's in an unspecified order and in the case that this is table column names, it had been nice to have the same order as the sql select statement order. /hex ----- Ursprungligt Meddelande ----- Från: Mark Miesfeld <mie...@gm...> Till: Open Object Rexx Users <oor...@li...> Kopia: Datum: onsdag, 31 oktober 2012 01:00 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS On Tue, Oct 30, 2012 at 4:35 PM, Staffan Tylen <sta...@gm...> wrote: Regardless of that discussion, I could change the way the returned stem is created so that this would would work: say 'id'~left(6) || 'type_id'~left(8) || 'name'~left(25) say '='~copies(40) do i = 1 to rs.0 say rs.i.id~left(6) || rs.i.type_id~left(8) || rs.i.name~left(25) end and you would get output something like this: id type_id name ======================================== 86 4 A1 Sauce 213 9 All Day Sucker 212 9 Almond Joy 189 8 Apple This: do i = 1 to rs.0 say rs.i.name end Is actually more of the construct I first pictured. But, my first implementation didn't work correctly and I gave up on that, thinking for some reason that it wasn't possible. This discussion got me thinking about it again. This change would mean any one already using the existing format would need to change their code. I would like to hear what people think? -- Mark Miesfeld ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ Oorexx-users mailing list Oor...@li... https://lists.sourceforge.net/lists/listinfo/oorexx-users |
From: Mark M. <mie...@gm...> - 2012-10-31 21:48:24
|
On Wed, Oct 31, 2012 at 12:33 AM, hakan <he...@us...>wrote: > I like the rs.i.id style, I haven't used stems as output from oosqlite > exec at all, so no code to change here either. > for me it's more OO_STEM_OF_ROWS (rs.0) than OO_STEM_OF_COLUMNS > Yes, I like that style better. It is really what I first intended to implement, and what I prefer. Rather than change OO_STEM_OF_STEMS, I just kept it as is and added a fourth format. Right now it is OO_CLASSIC_STEM. I can easily change the name, but that seems adequate to me. Unless there are some vocal opponents to that, I'll just keep it. > > Regarding the risk of using a local variable with the same name as a table > column, > I think that's the programmer's responsibility to keep track of. That > problem is always present regardless oosqlite. > So please no construct like, stem.0column or .!column > Yes, I don't like those constructs myself, so I haven't implemented that change. Again, unless there are some vocal advocates for that construct, I'm not inclined to make a change here. > > Another thing to maybe (I am not sure) consider is if a table column name > have embedded space, like 'my column'. > Is that possible in SQL? I certainly don't know much about the details here, but I was assuming a column name could not include spaces. Also if using stem.~allIndexes/makearray, you get an array of all stem > tails/indexes, but it's in an unspecified order and in the case that > this is table column names, it had been nice to have the same order as the > sql select statement order. > Currently if you use: do i = 1 to n you get the same order as the SQL select produces the order. Not sure if this is just a statement of fact by you, or you have some meaning here I don't understand. ;-) -- Mark Miesfeld |
From: hakan <he...@us...> - 2012-11-01 16:30:59
|
It's possible to use column names with embeded space, I believe any char is allowed. the case with makearray I had in mind was like this. But that's how makearray works. /* rexx */ tbl = .oosqliteconnection~new("mytest2.db",,.ooSQLite~OO_STEM_OF_STEMS) sql = "CREATE TABLE TBL (A,B, 'My Column')" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A1','B1','My Col1');" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A2','B2','My Col2');" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A3','B3','My col3');" tbl~exec(sql) tblcols = .array~of('[My Column]','B','A') rows. =tbl~exec("SELECT "tblcols~makestring('L',',') "FROM TBL;",.TRUE) do x = 1 to rows.0 mycols = rows.x~makearray -- give me column names, order will not match select order above arow. = rows.x do col over mycols say arow.col end end ----- Ursprungligt Meddelande ----- Från: Mark Miesfeld <mie...@gm...> Till:<he...@us...> , Open Object Rexx Users <oor...@li...> Kopia: Datum: onsdag, 31 oktober 2012 23:32 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS On Wed, Oct 31, 2012 at 12:33 AM, hakan <he...@us...> wrote: I like the rs.i.id style, I haven't used stems as output from oosqlite exec at all, so no code to change here either. for me it's more OO_STEM_OF_ROWS (rs.0) than OO_STEM_OF_COLUMNS Yes, I like that style better. It is really what I first intended to implement, and what I prefer. Rather than change OO_STEM_OF_STEMS, I just kept it as is and added a fourth format. Right now it is OO_CLASSIC_STEM. I can easily change the name, but that seems adequate to me. Unless there are some vocal opponents to that, I'll just keep it. Regarding the risk of using a local variable with the same name as a table column, I think that's the programmer's responsibility to keep track of. That problem is always present regardless oosqlite. So please no construct like, stem.0column or .!column Yes, I don't like those constructs myself, so I haven't implemented that change. Again, unless there are some vocal advocates for that construct, I'm not inclined to make a change here. Another thing to maybe (I am not sure) consider is if a table column name have embedded space, like 'my column'. Is that possible in SQL? I certainly don't know much about the details here, but I was assuming a column name could not include spaces. Also if using stem.~allIndexes/makearray, you get an array of all stem tails/indexes, but it's in an unspecified order and in the case that this is table column names, it had been nice to have the same order as the sql select statement order. Currently if you use: do i = 1 to n you get the same order as the SQL select produces the order. Not sure if this is just a statement of fact by you, or you have some meaning here I don't understand. ;-) -- Mark Miesfeld |
From: Mark M. <mie...@gm...> - 2012-11-01 17:25:32
|
On Thu, Nov 1, 2012 at 9:30 AM, hakan <he...@us...> wrote: > ** > It's possible to use column names with embeded space, I believe any char > is allowed. > the case with makearray I had in mind was like this. But that's how > makearray works. > Hi, I'm too dense to understand these more complicated things. In the below you use: [My Column] is that SQL syntax for a column name with spaces in it? Or, I suppose, it is to use [] indexing for the stem? > > /* rexx */ > > tbl = .oosqliteconnection~new("mytest2.db",,.ooSQLite~OO_STEM_OF_STEMS) > > sql = "CREATE TABLE TBL (A,B, 'My Column')" > tbl~exec(sql) > sql = "INSERT INTO TBL VALUES('A1','B1','My Col1');" > tbl~exec(sql) > sql = "INSERT INTO TBL VALUES('A2','B2','My Col2');" > tbl~exec(sql) > sql = "INSERT INTO TBL VALUES('A3','B3','My col3');" > tbl~exec(sql) > > tblcols = .array~of('[My Column]','B','A') > rows. =tbl~exec("SELECT "tblcols~makestring('L',',') "FROM TBL;",.TRUE) > do x = 1 to rows.0 > mycols = rows.x~makearray -- give me column names, order will not match > select order above > But, isn't true that any time you use a directory or a stem, you would have to know the order in your select statement to know what order the columns should be in? This is why I originally implemented the format now called OO_ARRAY_OF_ARRAYS. Because the array at [1] gives the column names in the order of the select statement, (and the column names are in the case that the SELECT statement returns them in.) With the OO_CLASSIC_STEM format, I could code this: tblcols = .array~of('[My Column]','B','A') say 'SQL is:' "SELECT "tblcols~makestring('L',',') "FROM TBL;" rows. =tbl~exec("SELECT "tblcols~makestring('L',',') "FROM TBL;",.TRUE) say 'count:' rows.0 colName = "MY COLUMN" do x = 1 to rows.0 say rows.x.colName rows.x.B rows.x.A end and get this: SQL is: SELECT [My Column],B,A FROM TBL; count: 3 My Col1 B1 A1 My Col2 B2 A2 My col3 B3 A3 So it seems to me that [My Column] is SQL syntax for using a column name with a space in it? Plus, as I said, the only reason the columns are in order is that I know the order the select statement uses. Maybe there is some other point you are bringing up here that I don't see. -- Mark Miesfeld |
From: hakan <he...@us...> - 2012-11-01 18:03:16
|
Hi Well being a SQL beginner, I think the syntax [ ] or single quotes make it possible to ask for a column with spaces, as you suppose. Can't remeber where I saw this ( [] ). This, with makearray is really not a problem, more of academic, I agree with your conclusion that the column names and order is normally known. You don't have to think about this anymore :-) /hex ----- Ursprungligt Meddelande ----- Från: Mark Miesfeld <mie...@gm...> Till:<he...@us...> , Open Object Rexx Users <oor...@li...> Kopia: Datum: torsdag, 01 november 2012 18:25 Ämne: Re: [Oorexx-users] ooSQLite and OO_STEM_OF_STEMS On Thu, Nov 1, 2012 at 9:30 AM, hakan <he...@us...> wrote: It's possible to use column names with embeded space, I believe any char is allowed. the case with makearray I had in mind was like this. But that's how makearray works. Hi, I'm too dense to understand these more complicated things. In the below you use: [My Column] is that SQL syntax for a column name with spaces in it? Or, I suppose, it is to use [] indexing for the stem? /* rexx */ tbl = .oosqliteconnection~new("mytest2.db",,.ooSQLite~OO_STEM_OF_STEMS) sql = "CREATE TABLE TBL (A,B, 'My Column')" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A1','B1','My Col1');" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A2','B2','My Col2');" tbl~exec(sql) sql = "INSERT INTO TBL VALUES('A3','B3','My col3');" tbl~exec(sql) tblcols = .array~of('[My Column]','B','A') rows. =tbl~exec("SELECT "tblcols~makestring('L',',') "FROM TBL;",.TRUE) do x = 1 to rows.0 mycols = rows.x~makearray -- give me column names, order will not match select order above But, isn't true that any time you use a directory or a stem, you would have to know the order in your select statement to know what order the columns should be in? This is why I originally implemented the format now called OO_ARRAY_OF_ARRAYS. Because the array at [1] gives the column names in the order of the select statement, (and the column names are in the case that the SELECT statement returns them in.) With the OO_CLASSIC_STEM format, I could code this: tblcols = .array~of('[My Column]','B','A') say 'SQL is:' "SELECT "tblcols~makestring('L',',') "FROM TBL;" rows. =tbl~exec("SELECT "tblcols~makestring('L',',') "FROM TBL;",.TRUE) say 'count:' rows.0 colName = "MY COLUMN" do x = 1 to rows.0 say rows.x.colName rows.x.B rows.x.A end and get this: SQL is: SELECT [My Column],B,A FROM TBL; count: 3 My Col1 B1 A1 My Col2 B2 A2 My col3 B3 A3 So it seems to me that [My Column] is SQL syntax for using a column name with a space in it? Plus, as I said, the only reason the columns are in order is that I know the order the select statement uses. Maybe there is some other point you are bringing up here that I don't see. -- Mark Miesfeld |
From: Mark M. <mie...@gm...> - 2012-11-01 20:06:44
|
On Thu, Nov 1, 2012 at 11:03 AM, hakan <he...@us...>wrote: > You don't have to think about this anymore :-) > Thanks, it was giving me a headache. ;-) -- Mark Miesfeld |
From: Staffan T. <sta...@gm...> - 2012-10-31 00:25:25
|
> > > Sorry, I still don't get it. Say you have a table with 6 rows, column 1 > is named A and column 2 is named B. Then you do a select * from that > table. I would view that as > > row A B > ============= > 1 x y > 2 a b > 3 e f > 4 n m > 5 t o > 6 q d > > So that the value of row 4 column a was 'n' and the value of row 2 column > b was 'b' > > How do you extract those values from the stem? > > do i = 1 to stem.a.0 say stem.a.i say stem.b.i end > This: > > do i = 1 to rs.0 > say rs.i.name > end > > Is actually more of the construct I first pictured. But, my first > implementation didn't work correctly and I gave up on that, thinking for > some reason that it wasn't possible. > > This discussion got me thinking about it again. > > This change would mean any one already using the existing format would > need to change their code. > > I would like to hear what people think? > > Sounds fine to me as I have no code to change :) In general terms the above looks more straight forward, but with /hex trick the existing solution is still acceptable. If you were to change it, would it be OO_STEM_OF_COLUMNS then? Maybe you can have both ;) Staffan |