nx_analyze_seeddemo.nx source
↩ module page · 49 lines · 1891 B
1// nx_analyze_seeddemo.nx -- one-shot: write a DURABLE demo dataset (price = 5*size - 2*age + noise) to
2// knowledge/store/azdemo- , sharded row:0/row:1 across the 256 version window, so the nx_analyze `report`
3// verb can be exercised LIVE over MCP against a real persisted seg_store. license_tier: ORIGINAL
4import "nx_syscalls.nx"
5import "_hdl_build/nx_analyst_store.nx"
6const SD_MAGIC_1103515245: i64 = 1103515245
7const SD_MAGIC_12345: i64 = 12345
8const SD_N: i64 = 300
9const SD_SHARD: i64 = 150
10func sd_lcg(s: i64) -> i64 { return (s * SD_MAGIC_1103515245 + SD_MAGIC_12345) & 0x7fffffff }
11func sd_catn(buf: *u8, o: i64, v: i64) -> i64 {
12 var oo: i64 = o
13 var m: i64 = v
14 if m < 0 { buf[oo] = 45 as u8; oo = oo + 1; m = 0 - m }
15 let t: *u8 = sys_mmap(24)
16 var k: i64 = 0
17 if m == 0 { t[0] = 48 as u8; k = 1 }
18 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
19 var i: i64 = k - 1
20 while i >= 0 { buf[oo] = t[i]; oo = oo + 1; i = i - 1 }
21 return oo
22}
23func main() -> i64 {
24 let prefix: *u8 = "knowledge/store/azdemo-" as *u8
25 let w: *i64 = ss_begin()
26 let row: *u8 = sys_mmap(96)
27 let skey: *u8 = sys_mmap(64)
28 var i: i64 = 0
29 while i < SD_N {
30 asr_shard_key("row" as *u8, i / SD_SHARD, skey)
31 var s: i64 = sd_lcg(11 + i * 7)
32 let size: i64 = 50 + (s % 150)
33 s = sd_lcg(s)
34 let age: i64 = s % 40
35 s = sd_lcg(s)
36 let price: i64 = 5 * size - 2 * age + (s % 20)
37 var ro: i64 = 0
38 ro = sd_catn(row, ro, size)
39 row[ro] = 9 as u8; ro = ro + 1
40 ro = sd_catn(row, ro, age)
41 row[ro] = 9 as u8; ro = ro + 1
42 ro = sd_catn(row, ro, price)
43 ss_add(w, 1, skey, row, ro)
44 i = i + 1
45 }
46 ss_commit(prefix, w, sys_now_us())
47 sys_write(1, "SEEDED knowledge/store/azdemo- rows=300 shards=row:0,row:1\n" as *u8, 58)
48 return 0
49}