Dan Sugalski wrote:
At 4:50 PM +0000 1/12/04, Harry Jackson wrote:

done similar to



80 getnext: 81 82 .pcc_begin prototyped 83 .pcc_call fetchrow_hash 84 nextrow: 85 .result rowhash 86 .result answer 87 .pcc_end

where each call to the function will return the hash containg the next rows data.


Yep, that's it. "Here's the result handle, gimme a row of data as a hash". If you want to keep state such that it's a real iterator, that's fine. If you want to leave it so that the user of the library has to be explicit with which row they want, that's fine too.

Ok. I have the following working after a fashion


After connecting and various other contortions we get to the extraction of the data part which involves the following.

    133 getnext:
    134     onfield = 0
    135     .pcc_begin prototyped
    136             .pcc_call fetchrow_hash
    137             retfetchhash:
    138         .result record_hash
    139         .result answer
    140     .pcc_end

We have returned a Hash where (key,value) = (field_name, data)

The following shows roughly what I had to do to display it. I am using a global HASH called MetaData that stores various bits about the current statement being executed.

    141 nextfieldhash:
    142
    143     FieldData = TupleData[onfield]
    144     field_name = FieldData[0]
    145
    146     value = record_hash[field_name]
    147     .PRINT("", value, "#")
    148     if onfield == fnum goto nextrowhash
    149     inc onfield
    150     branch nextfieldhash
    151 nextrowhash:
    152     print "\n"
    153     ne 0, answer, getnext

For the speed freaks displaying 10000 rows to screen takes. This can be improved as much as my code which could be quite a bit.

Rows 9999

real    0m5.436s
user    0m1.590s
sys     0m0.320s


Do you have any requests for anything else on, around or near this before I start. I should be able to ruffle something up pretty quickly.


Nope, can't think of anything yet.

Phew.


Harry Jackson



Reply via email to