From cad78aac03752f00a09f6caef1ac3235a84a2bcf Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 18:38:40 -0400 Subject: [PATCH 01/10] Automatically upload binary dataset to s3 --- .github/workflows/ci-workflow.yml | 7 +++++++ benchmark/serializer.py | 3 ++- scripts/generate_binary_tinysnb.sh | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100755 scripts/generate_binary_tinysnb.sh diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index c3bf61d8a40..cf5ae40e71a 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -76,6 +76,13 @@ jobs: - name: Generate datasets run: bash scripts/generate_binary_demo.sh + + - name: Generate and upload tinysnb + run: | + bash scripts/generate_binary_tinysnb.sh + s3cmd del -r s3://kuzu-test/tinysnb/ + s3cmd sync ./tinysnb s3://kuzu-test/tinysnb/ + rm -rf tinysnb - name: Upload binary-demo uses: actions/upload-artifact@v4 diff --git a/benchmark/serializer.py b/benchmark/serializer.py index 5975aa7ccb1..da8de62ff16 100644 --- a/benchmark/serializer.py +++ b/benchmark/serializer.py @@ -54,6 +54,7 @@ def serialize(kuzu_exec_path, dataset_name, dataset_path, serialized_graph_path, serialize_queries += f.readlines() serialize_queries = [q.strip().replace('{}', dataset_path) for q in serialize_queries] + serialize_queries = [q for q in serialize_queries if q] table_types = {} @@ -66,7 +67,7 @@ def serialize(kuzu_exec_path, dataset_name, dataset_path, serialized_graph_path, stdout = sys.stdout if create_match or not benchmark_copy_log_dir else subprocess.PIPE process = subprocess.Popen([kuzu_exec_path, serialized_graph_path], stdin=subprocess.PIPE, stdout=stdout, encoding="utf-8") - process.stdin.write(s + ";\n") + process.stdin.write(s) process.stdin.close() if create_match: table_types[create_match.group(2)] = create_match.group(1).lower() diff --git a/scripts/generate_binary_tinysnb.sh b/scripts/generate_binary_tinysnb.sh new file mode 100755 index 00000000000..49b6d8b7cf3 --- /dev/null +++ b/scripts/generate_binary_tinysnb.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +CD=`dirname "$0"` +DATASET_DIR=$CD/../dataset +python3 $CD/../benchmark/serializer.py TinySNB $DATASET_DIR/tinysnb $CD/../tinysnb From e90d8a06794dd368d155c94345509a1c25cbabc6 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:01:08 -0400 Subject: [PATCH 02/10] X --- benchmark/serializer.py | 1 + tinysnb/.lock | 0 tinysnb/.shadow | 0 tinysnb/.wal | 0 tinysnb/catalog.kz | Bin 0 -> 6698 bytes tinysnb/data.kz | Bin 0 -> 3559424 bytes tinysnb/metadata.kz | Bin 0 -> 82826 bytes tinysnb/n-0.hindex | Bin 0 -> 86016 bytes tinysnb/n-1.hindex | Bin 0 -> 45056 bytes tinysnb/n-2.hindex | Bin 0 -> 45056 bytes tinysnb/n-2.hindex.ovf | Bin 0 -> 12288 bytes tinysnb/version.txt | 1 + 12 files changed, 2 insertions(+) create mode 100644 tinysnb/.lock create mode 100644 tinysnb/.shadow create mode 100644 tinysnb/.wal create mode 100644 tinysnb/catalog.kz create mode 100644 tinysnb/data.kz create mode 100644 tinysnb/metadata.kz create mode 100644 tinysnb/n-0.hindex create mode 100644 tinysnb/n-1.hindex create mode 100644 tinysnb/n-2.hindex create mode 100644 tinysnb/n-2.hindex.ovf create mode 100644 tinysnb/version.txt diff --git a/benchmark/serializer.py b/benchmark/serializer.py index da8de62ff16..b2ab8afceb8 100644 --- a/benchmark/serializer.py +++ b/benchmark/serializer.py @@ -55,6 +55,7 @@ def serialize(kuzu_exec_path, dataset_name, dataset_path, serialized_graph_path, serialize_queries = [q.strip().replace('{}', dataset_path) for q in serialize_queries] serialize_queries = [q for q in serialize_queries if q] + serialize_queries = [q + ';' if not q.endswith(';') else q for q in serialize_queries] table_types = {} diff --git a/tinysnb/.lock b/tinysnb/.lock new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tinysnb/.shadow b/tinysnb/.shadow new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tinysnb/.wal b/tinysnb/.wal new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tinysnb/catalog.kz b/tinysnb/catalog.kz new file mode 100644 index 0000000000000000000000000000000000000000..848e49b2d059f4848a3d68c13fb5fd4e84744424 GIT binary patch literal 6698 zcmd^E*>2lL6tyMqOIo0YC9koaE#7iZmU21`D0e$57~9n-Cn-(BC)$v2(`P^ zgMgdc56HM7;y}pZXu%!21V*#?V@jybbQ*|QFOL^eTOQAtRLwgu7Rnl`ZxVSWWJwqZ zNihLMNUtG=^9%A)VgQkk=!mnh(bQY>g>G%lXKuO9gTho9XjJKKD0MUNwAiT@!tGRZ zxM}k`jAg-9q-can3;A^ziATke^{6+p;2PZn*n1AKMi2=Q!=E$y3sU1Vtq!NPzcB(6wzOnJE;iEMar zsBAdp8HgRqEK)i#e&3rINssczBj-gTahMs}pC>`t1mb8hF%pclB2QkGOdbx2sgX!b zOA0|cVCZlXaZn%uBNRPsn$(fV&Va$wH;phw5^Tu;qqIU_#7eyJT48V!o0N3zwMr%r zNAvaXf1CjoF%IJwP)9*RiW|eJ$h=9cTt#it?_r%21r?FvTEwYXnP6sYCBBVYWRUK= ziGOuiXXNs6TN(wB5XkpBX{FJiuKJHSSpS*wDF%Zxj4zX?b>2}E?KM^>dz{-|pleZb zEy8%G%6H;K4_b}f#|JEN&MovJ3yy4xU{=ZVuOS)=m9JIU&pGd*vjxA#-lrlh5jS+R zUOb`K-GpvHz#c}NoY7z<`vxRa4v{#&nR&;TVH=b9VIBD&g>*TV*uP49QgyrAh<2lD z70M+=OL)pGFsQG4a1pDI?>vjtM-_5lJ0<)N?=;jueUi_LmtiZ~snUh?>EG|^kvsYOV>mC9aMn(*1yYPBP&fy^Nr3gZ^ zRpGsT=gHQ5&;9NIw)gZ6>kK{&qcf&z3;K-xHqMGNJFU)<&Nn_Bo7DZ{h@lTyZ8q_${1Sqr zgfR3J)8KGv9ooQ%WU96R(V|jg_uSBDQ|#zX5~2&_FtXbHK%*xiB5`aWyPN&PL2YZk zWVdx2TK}mxfhj?@mMXs&r`p7!sCU(-?0INk#mSAzkGB|+Ba6)!*=s|bNg2{$2O|pU zVEhen9_8Gpxj|wud`ESTzOHF#(Ll>R2SubKWc*yF$yC=#w<2`>K#iTx_KE& zr6Zxc+eF=Io4qwfbMg;3ez>oXSa%>TjP8(%N+R)<*Dkm696-1%h$RF9FcLCVTc9Cz zbdTI6U;mkali1tR2M%IF4ZZ#&5LYHRUp)!}b0j*%2!U5Hg7NBQKnJyziIUm3+t4b- e{6IjuTjJ=UZ^I0MU_>%iTR6Dg|0ei&gzG=KLoN&e literal 0 HcmV?d00001 diff --git a/tinysnb/data.kz b/tinysnb/data.kz new file mode 100644 index 0000000000000000000000000000000000000000..48d2f7ab92cba7a22b9f4a93a5344c861be3837c GIT binary patch literal 3559424 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 V5FkK+009C72oNAZfItue{{XH85Fh{m literal 0 HcmV?d00001 diff --git a/tinysnb/metadata.kz b/tinysnb/metadata.kz new file mode 100644 index 0000000000000000000000000000000000000000..dfd48a9637e90db44dcc0c796cd0fac84a7a8431 GIT binary patch literal 82826 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 literal 0 HcmV?d00001 diff --git a/tinysnb/n-0.hindex b/tinysnb/n-0.hindex new file mode 100644 index 0000000000000000000000000000000000000000..5b3c9fe86875cd38a6ee58371a2218da553ab86a GIT binary patch literal 86016 zcmeI*VR95V5XEsPfMW;*LUJGOk(=cpxki_t30`zh1jD9@R zM|fpk|2gu*=il`cTG3B^45s>*r<9zFw~9mz?-NUr#RM z?DbpU3E)-Z{g^FrXrYbtKo9hAA;1s(a8ZN)$PfI$4;KRbzz-KScz@uB$MHkEufxy({KjvOn{`;Nc}s3bF`lCs?UQ<-{1d{-wkSiH)N#;{jZ__nWoiW{TqRqKB~v*pZ@8e|Eu@8 zS$?bZzn16g83b_z5I_I{1Q0*~0R#|0009ILC{19M{f}7@<=+X+_*9Rpzxp=<)ph>Q zAi@3pAGz-%-vcsOUNXf0{J(<#XXd4U`ltW;@BjQiCa_BXYkB@WMj(m+0tg_000Iag zfB*srAbDw)uPxFj!tPv`YPF#gl(0Fym7_uKw!Z2vpbkEI<0EfBNVDS%0V=*ZOU)<{5yde zpXzb-SN}$!y3S|$(LepuKmX7AL-n}+r~j?c|5}c}RyVW!5I_I{1Q0*~0R#|0009IL zKwwCq@BY-^|NLW+{r>a+*W3K7V~+ o{h@kX|I`0g=zlH8->REgeh46d00IagfB*srAbs-|J1$?MCj;=eK)LC;JNld_F6q%;|$Z zf&hQ;M~}cLA5t&5|7h2zqn}^0PJVg5xt^o_g#bROh<2n8`UnF2(fT51{J|gmAs^&p zCSp6vNBJlp<)eITb1`Rsm5*`U{24Kt<3SIVz$$)tI+uJ~OaItfrT#2iz49-$5aUnv zkbb(~AM6*7_xMZ4%ftM%KCdqX@RJwmg&6699_XPG;D=-Q;VQDJwq@JWpJVhV8=@cj zky?n69_WD{Dgl1rhpGno$PfI$50wBv@IzID>qGh>J{RHle|ktgq({urW`#ggBLWB@fB*sr zAbi&NwbzU;vlKhi@@^Ak9 l8wD5tui^iw@?j(b>j)r#00IagfB*srAb>z#j`+OgsF+AN(O7~C-R5OvM9Y#$GLs08?dAF3M4b%^~+ zfIs-7s)0ZFVIM!dxr*w=TwIrJeD~p-Sn)iDXX^W9HsboMAIJ0~+i(>B)Whps$j*AW zy_|1xp}+I_bJ<7n^ZtbZ{$u6`{nLLC;D7$lET9K|kO%TW9#jJSzzR&-_~b*Z&}JW({vyJN?uD2>Op2pKmdW*CK!b0tg_000IagfB*srAb`MW36#4( z?*E;(fg2aD|AoLtjQ{=1f2^!<{`cRvm-+kOKfmVhpROF<(?9?Bo^!4GM#;aZ^R5NKI06VDfB*srAbb<@GHxRP literal 0 HcmV?d00001 diff --git a/tinysnb/n-2.hindex.ovf b/tinysnb/n-2.hindex.ovf new file mode 100644 index 0000000000000000000000000000000000000000..4f950819de01dc6b0e1c0af25dae6c6c88f9c9e3 GIT binary patch literal 12288 zcmeIzyA1*{41nPPL(pal7J&^=BtX1`fEpbw(Usg$U_k)`q(P$0Cbt0D0K$zxNA9;| zB~1!{vg3|Y>RksX4qpNKfIgrPn1lcM2U>B5b=hO89SwRvIK(Fe0tg_000Ia!NTBcC z)H^-&Zm!oGz4VurnfPmi1Sk~&1Q0*~0R#|0009ILKmdXC1qLIdgA`fJeUN(*B!5;r vTb0@Ckq0^0n78_B&p}Q{JzH$YCVdwwL;wK<5I_I{1Q0*~0R#|0ASHnhYnB`( literal 0 HcmV?d00001 diff --git a/tinysnb/version.txt b/tinysnb/version.txt new file mode 100644 index 00000000000..a918a2aa18d --- /dev/null +++ b/tinysnb/version.txt @@ -0,0 +1 @@ +0.6.0 From 45be928e32c03d42a64510d8dcef471f5cd6fd94 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:01:27 -0400 Subject: [PATCH 03/10] X --- tinysnb/.lock | 0 tinysnb/.shadow | 0 tinysnb/.wal | 0 tinysnb/catalog.kz | Bin 6698 -> 0 bytes tinysnb/data.kz | Bin 3559424 -> 0 bytes tinysnb/metadata.kz | Bin 82826 -> 0 bytes tinysnb/n-0.hindex | Bin 86016 -> 0 bytes tinysnb/n-1.hindex | Bin 45056 -> 0 bytes tinysnb/n-2.hindex | Bin 45056 -> 0 bytes tinysnb/n-2.hindex.ovf | Bin 12288 -> 0 bytes tinysnb/version.txt | 1 - 11 files changed, 1 deletion(-) delete mode 100644 tinysnb/.lock delete mode 100644 tinysnb/.shadow delete mode 100644 tinysnb/.wal delete mode 100644 tinysnb/catalog.kz delete mode 100644 tinysnb/data.kz delete mode 100644 tinysnb/metadata.kz delete mode 100644 tinysnb/n-0.hindex delete mode 100644 tinysnb/n-1.hindex delete mode 100644 tinysnb/n-2.hindex delete mode 100644 tinysnb/n-2.hindex.ovf delete mode 100644 tinysnb/version.txt diff --git a/tinysnb/.lock b/tinysnb/.lock deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tinysnb/.shadow b/tinysnb/.shadow deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tinysnb/.wal b/tinysnb/.wal deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/tinysnb/catalog.kz b/tinysnb/catalog.kz deleted file mode 100644 index 848e49b2d059f4848a3d68c13fb5fd4e84744424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6698 zcmd^E*>2lL6tyMqOIo0YC9koaE#7iZmU21`D0e$57~9n-Cn-(BC)$v2(`P^ zgMgdc56HM7;y}pZXu%!21V*#?V@jybbQ*|QFOL^eTOQAtRLwgu7Rnl`ZxVSWWJwqZ zNihLMNUtG=^9%A)VgQkk=!mnh(bQY>g>G%lXKuO9gTho9XjJKKD0MUNwAiT@!tGRZ zxM}k`jAg-9q-can3;A^ziATke^{6+p;2PZn*n1AKMi2=Q!=E$y3sU1Vtq!NPzcB(6wzOnJE;iEMar zsBAdp8HgRqEK)i#e&3rINssczBj-gTahMs}pC>`t1mb8hF%pclB2QkGOdbx2sgX!b zOA0|cVCZlXaZn%uBNRPsn$(fV&Va$wH;phw5^Tu;qqIU_#7eyJT48V!o0N3zwMr%r zNAvaXf1CjoF%IJwP)9*RiW|eJ$h=9cTt#it?_r%21r?FvTEwYXnP6sYCBBVYWRUK= ziGOuiXXNs6TN(wB5XkpBX{FJiuKJHSSpS*wDF%Zxj4zX?b>2}E?KM^>dz{-|pleZb zEy8%G%6H;K4_b}f#|JEN&MovJ3yy4xU{=ZVuOS)=m9JIU&pGd*vjxA#-lrlh5jS+R zUOb`K-GpvHz#c}NoY7z<`vxRa4v{#&nR&;TVH=b9VIBD&g>*TV*uP49QgyrAh<2lD z70M+=OL)pGFsQG4a1pDI?>vjtM-_5lJ0<)N?=;jueUi_LmtiZ~snUh?>EG|^kvsYOV>mC9aMn(*1yYPBP&fy^Nr3gZ^ zRpGsT=gHQ5&;9NIw)gZ6>kK{&qcf&z3;K-xHqMGNJFU)<&Nn_Bo7DZ{h@lTyZ8q_${1Sqr zgfR3J)8KGv9ooQ%WU96R(V|jg_uSBDQ|#zX5~2&_FtXbHK%*xiB5`aWyPN&PL2YZk zWVdx2TK}mxfhj?@mMXs&r`p7!sCU(-?0INk#mSAzkGB|+Ba6)!*=s|bNg2{$2O|pU zVEhen9_8Gpxj|wud`ESTzOHF#(Ll>R2SubKWc*yF$yC=#w<2`>K#iTx_KE& zr6Zxc+eF=Io4qwfbMg;3ez>oXSa%>TjP8(%N+R)<*Dkm696-1%h$RF9FcLCVTc9Cz zbdTI6U;mkali1tR2M%IF4ZZ#&5LYHRUp)!}b0j*%2!U5Hg7NBQKnJyziIUm3+t4b- e{6IjuTjJ=UZ^I0MU_>%iTR6Dg|0ei&gzG=KLoN&e diff --git a/tinysnb/data.kz b/tinysnb/data.kz deleted file mode 100644 index 48d2f7ab92cba7a22b9f4a93a5344c861be3837c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3559424 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 V5FkK+009C72oNAZfItue{{XH85Fh{m diff --git a/tinysnb/metadata.kz b/tinysnb/metadata.kz deleted file mode 100644 index dfd48a9637e90db44dcc0c796cd0fac84a7a8431..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82826 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 diff --git a/tinysnb/n-0.hindex b/tinysnb/n-0.hindex deleted file mode 100644 index 5b3c9fe86875cd38a6ee58371a2218da553ab86a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86016 zcmeI*VR95V5XEsPfMW;*LUJGOk(=cpxki_t30`zh1jD9@R zM|fpk|2gu*=il`cTG3B^45s>*r<9zFw~9mz?-NUr#RM z?DbpU3E)-Z{g^FrXrYbtKo9hAA;1s(a8ZN)$PfI$4;KRbzz-KScz@uB$MHkEufxy({KjvOn{`;Nc}s3bF`lCs?UQ<-{1d{-wkSiH)N#;{jZ__nWoiW{TqRqKB~v*pZ@8e|Eu@8 zS$?bZzn16g83b_z5I_I{1Q0*~0R#|0009ILC{19M{f}7@<=+X+_*9Rpzxp=<)ph>Q zAi@3pAGz-%-vcsOUNXf0{J(<#XXd4U`ltW;@BjQiCa_BXYkB@WMj(m+0tg_000Iag zfB*srAbDw)uPxFj!tPv`YPF#gl(0Fym7_uKw!Z2vpbkEI<0EfBNVDS%0V=*ZOU)<{5yde zpXzb-SN}$!y3S|$(LepuKmX7AL-n}+r~j?c|5}c}RyVW!5I_I{1Q0*~0R#|0009IL zKwwCq@BY-^|NLW+{r>a+*W3K7V~+ o{h@kX|I`0g=zlH8->REgeh46d00IagfB*srAbs-|J1$?MCj;=eK)LC;JNld_F6q%;|$Z zf&hQ;M~}cLA5t&5|7h2zqn}^0PJVg5xt^o_g#bROh<2n8`UnF2(fT51{J|gmAs^&p zCSp6vNBJlp<)eITb1`Rsm5*`U{24Kt<3SIVz$$)tI+uJ~OaItfrT#2iz49-$5aUnv zkbb(~AM6*7_xMZ4%ftM%KCdqX@RJwmg&6699_XPG;D=-Q;VQDJwq@JWpJVhV8=@cj zky?n69_WD{Dgl1rhpGno$PfI$50wBv@IzID>qGh>J{RHle|ktgq({urW`#ggBLWB@fB*sr zAbi&NwbzU;vlKhi@@^Ak9 l8wD5tui^iw@?j(b>j)r#00IagfB*srAb>z#j`+OgsF+AN(O7~C-R5OvM9Y#$GLs08?dAF3M4b%^~+ zfIs-7s)0ZFVIM!dxr*w=TwIrJeD~p-Sn)iDXX^W9HsboMAIJ0~+i(>B)Whps$j*AW zy_|1xp}+I_bJ<7n^ZtbZ{$u6`{nLLC;D7$lET9K|kO%TW9#jJSzzR&-_~b*Z&}JW({vyJN?uD2>Op2pKmdW*CK!b0tg_000IagfB*srAb`MW36#4( z?*E;(fg2aD|AoLtjQ{=1f2^!<{`cRvm-+kOKfmVhpROF<(?9?Bo^!4GM#;aZ^R5NKI06VDfB*srAbb<@GHxRP diff --git a/tinysnb/n-2.hindex.ovf b/tinysnb/n-2.hindex.ovf deleted file mode 100644 index 4f950819de01dc6b0e1c0af25dae6c6c88f9c9e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeIzyA1*{41nPPL(pal7J&^=BtX1`fEpbw(Usg$U_k)`q(P$0Cbt0D0K$zxNA9;| zB~1!{vg3|Y>RksX4qpNKfIgrPn1lcM2U>B5b=hO89SwRvIK(Fe0tg_000Ia!NTBcC z)H^-&Zm!oGz4VurnfPmi1Sk~&1Q0*~0R#|0009ILKmdXC1qLIdgA`fJeUN(*B!5;r vTb0@Ckq0^0n78_B&p}Q{JzH$YCVdwwL;wK<5I_I{1Q0*~0R#|0ASHnhYnB`( diff --git a/tinysnb/version.txt b/tinysnb/version.txt deleted file mode 100644 index a918a2aa18d..00000000000 --- a/tinysnb/version.txt +++ /dev/null @@ -1 +0,0 @@ -0.6.0 From cdfe18ec0a54fbbf67e1795c7ff83bcd9730cb31 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:07:23 -0400 Subject: [PATCH 04/10] X --- .github/workflows/ci-workflow.yml | 5 +++++ benchmark/serializer.py | 1 - dataset/demo-db/parquet/copy.cypher | 8 ++++---- dataset/demo-db/parquet/schema.cypher | 8 ++++---- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index cf5ae40e71a..fb20a454291 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -80,6 +80,11 @@ jobs: - name: Generate and upload tinysnb run: | bash scripts/generate_binary_tinysnb.sh + s3cmd get s3://kuzu-test/tinysnb/tinysnb/version.txt + if [ "$(cat tinysnb/version.txt)" == "$(cat version.txt)" ]; then + echo "TinySNB dataset is up to date, skipping upload" + exit 0 + fi s3cmd del -r s3://kuzu-test/tinysnb/ s3cmd sync ./tinysnb s3://kuzu-test/tinysnb/ rm -rf tinysnb diff --git a/benchmark/serializer.py b/benchmark/serializer.py index b2ab8afceb8..da8de62ff16 100644 --- a/benchmark/serializer.py +++ b/benchmark/serializer.py @@ -55,7 +55,6 @@ def serialize(kuzu_exec_path, dataset_name, dataset_path, serialized_graph_path, serialize_queries = [q.strip().replace('{}', dataset_path) for q in serialize_queries] serialize_queries = [q for q in serialize_queries if q] - serialize_queries = [q + ';' if not q.endswith(';') else q for q in serialize_queries] table_types = {} diff --git a/dataset/demo-db/parquet/copy.cypher b/dataset/demo-db/parquet/copy.cypher index e05bb79c4d3..c6df01c16fd 100644 --- a/dataset/demo-db/parquet/copy.cypher +++ b/dataset/demo-db/parquet/copy.cypher @@ -1,4 +1,4 @@ -COPY User From "dataset/demo-db/parquet/user.parquet" -COPY City FROM "dataset/demo-db/parquet/city.parquet" -COPY Follows FROM "dataset/demo-db/parquet/follows.parquet" -COPY LivesIn FROM "dataset/demo-db/parquet/lives-in.parquet" \ No newline at end of file +COPY User From "dataset/demo-db/parquet/user.parquet"; +COPY City FROM "dataset/demo-db/parquet/city.parquet"; +COPY Follows FROM "dataset/demo-db/parquet/follows.parquet"; +COPY LivesIn FROM "dataset/demo-db/parquet/lives-in.parquet"; \ No newline at end of file diff --git a/dataset/demo-db/parquet/schema.cypher b/dataset/demo-db/parquet/schema.cypher index 5d523454e5a..fa991d1e4fc 100644 --- a/dataset/demo-db/parquet/schema.cypher +++ b/dataset/demo-db/parquet/schema.cypher @@ -1,4 +1,4 @@ -CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name)) -CREATE NODE TABLE City(name STRING, population INT64, PRIMARY KEY (name)) -CREATE REL TABLE Follows(FROM User TO User, since INT64) -CREATE REL TABLE LivesIn(FROM User TO City) \ No newline at end of file +CREATE NODE TABLE User(name STRING, age INT64, PRIMARY KEY (name)); +CREATE NODE TABLE City(name STRING, population INT64, PRIMARY KEY (name)); +CREATE REL TABLE Follows(FROM User TO User, since INT64); +CREATE REL TABLE LivesIn(FROM User TO City); \ No newline at end of file From d1dfb1eeec240694122aee4c0c5f5ab754d672e2 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:10:30 -0400 Subject: [PATCH 05/10] X --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1da5ec31b17..f70abc673a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.15) -project(Kuzu VERSION 0.6.0 LANGUAGES CXX C) +project(Kuzu VERSION 0.6.0.1 LANGUAGES CXX C) find_package(Threads REQUIRED) From b039b6b581a2ad3fe4e15d68db3acae3f0555d1a Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:13:40 -0400 Subject: [PATCH 06/10] X --- .github/workflows/ci-workflow.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml index fb20a454291..ad19b100109 100644 --- a/.github/workflows/ci-workflow.yml +++ b/.github/workflows/ci-workflow.yml @@ -83,11 +83,13 @@ jobs: s3cmd get s3://kuzu-test/tinysnb/tinysnb/version.txt if [ "$(cat tinysnb/version.txt)" == "$(cat version.txt)" ]; then echo "TinySNB dataset is up to date, skipping upload" + rm -rf tinysnb version.txt exit 0 fi + echo "TinySNB dataset is outdated, uploading..." s3cmd del -r s3://kuzu-test/tinysnb/ s3cmd sync ./tinysnb s3://kuzu-test/tinysnb/ - rm -rf tinysnb + rm -rf tinysnb version.txt - name: Upload binary-demo uses: actions/upload-artifact@v4 From 3f49a46968fa3ce362f272f04731fa10f5b7d7f6 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:13:53 -0400 Subject: [PATCH 07/10] X --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f70abc673a0..1da5ec31b17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.15) -project(Kuzu VERSION 0.6.0.1 LANGUAGES CXX C) +project(Kuzu VERSION 0.6.0 LANGUAGES CXX C) find_package(Threads REQUIRED) From e581044d4f382623a43b39aed50b8747199dd82f Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:15:36 -0400 Subject: [PATCH 08/10] X --- benchmark/serialize.cypher | 124 ++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/benchmark/serialize.cypher b/benchmark/serialize.cypher index 0f00dbbf802..af4442e6e60 100644 --- a/benchmark/serialize.cypher +++ b/benchmark/serialize.cypher @@ -1,62 +1,62 @@ -create node table Person (ID INT64,firstName STRING,lastName STRING,gender STRING,birthday DATE,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING, PRIMARY KEY(ID)) -copy Person from "{}/person_0_0.csv" (HEADER=true, DELIM="|") -create node table Forum (ID INT64,title STRING,creationDate TIMESTAMP, PRIMARY KEY(ID)) -copy Forum from "{}/forum_0_0.csv" (HEADER=true, DELIM="|") -create node table Post (ID INT64,imageFile STRING,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING,language STRING,content STRING,length INT64, PRIMARY KEY(ID)) -copy Post from "{}/post_0_0.csv" (HEADER=true, DELIM="|") -create node table Comment (ID INT64,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING,content STRING,length INT64, PRIMARY KEY(ID)) -copy Comment from "{}/comment_0_0.csv" (HEADER=true, DELIM="|") -create node table Tag (ID INT64,name STRING,url STRING, PRIMARY KEY(ID)) -copy Tag from "{}/tag_0_0.csv" (HEADER=true, DELIM="|") -create node table Tagclass (ID INT64,name STRING,url STRING, PRIMARY KEY(ID)) -copy Tagclass from "{}/tagclass_0_0.csv" (HEADER=true, DELIM="|") -create node table Place (ID INT64,name STRING,url STRING,type STRING, PRIMARY KEY(ID)) -copy Place from "{}/place_0_0.csv" (HEADER=true, DELIM="|") -create node table Organisation (ID INT64,type STRING,name STRING,url STRING, PRIMARY KEY(ID)) -copy Organisation from "{}/organisation_0_0.csv" (HEADER=true, DELIM="|") -create rel table containerOf (FROM Forum TO Post,ONE_MANY) -copy containerOf from "{}/forum_containerOf_post_0_0.csv" (HEADER=true, DELIM="|") -create rel table comment_hasCreator (FROM Comment TO Person, MANY_ONE) -copy comment_hasCreator from "{}/comment_hasCreator_person_0_0.csv" (HEADER=true, DELIM="|") -create rel table post_hasCreator (FROM Post TO Person,MANY_ONE) -copy post_hasCreator from "{}/post_hasCreator_person_0_0.csv" (HEADER=true, DELIM="|") -create rel table hasInterest (FROM Person TO Tag, MANY_MANY) -copy hasInterest from "{}/person_hasInterest_tag_0_0.csv" (HEADER=true, DELIM="|") -create rel table hasMember (FROM Forum TO Person,joinDate TIMESTAMP,MANY_MANY) -copy hasMember from "{}/forum_hasMember_person_0_0.csv" (HEADER=true, DELIM="|") -create rel table hasModerator (FROM Forum TO Person,MANY_ONE) -copy hasModerator from "{}/forum_hasModerator_person_0_0.csv" (HEADER=true, DELIM="|") -create rel table comment_hasTag (FROM Comment TO Tag,MANY_MANY) -copy comment_hasTag from "{}/comment_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|") -create rel table forum_hasTag (FROM Forum TO Tag,MANY_MANY) -copy forum_hasTag from "{}/forum_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|") -create rel table post_hasTag (FROM Post TO Tag,MANY_MANY) -copy post_hasTag from "{}/post_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|") -create rel table hasType (FROM Tag TO Tagclass,MANY_ONE) -copy hasType from "{}/tag_hasType_tagclass_0_0.csv" (HEADER=true, DELIM="|") -create rel table comment_isLocatedIn (FROM Comment TO Place,MANY_ONE) -copy comment_isLocatedIn from "{}/comment_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|") -create rel table organisation_isLocatedIn (FROM Organisation TO Place,MANY_ONE) -copy organisation_isLocatedIn from "{}/organisation_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|") -create rel table person_isLocatedIn (FROM Person TO Place,MANY_ONE) -copy person_isLocatedIn from "{}/person_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|") -create rel table post_isLocatedIn (FROM Post TO Place,MANY_ONE) -copy post_isLocatedIn from "{}/post_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|") -create rel table isPartOf (FROM Place TO Place,MANY_ONE) -copy isPartOf from "{}/place_isPartOf_place_0_0.csv" (HEADER=true, DELIM="|") -create rel table isSubclassOf (FROM Tagclass TO Tagclass,MANY_ONE) -copy isSubclassOf from "{}/tagclass_isSubclassOf_tagclass_0_0.csv" (HEADER=true, DELIM="|") -create rel table knows (FROM Person TO Person,creationDate TIMESTAMP,MANY_MANY) -copy knows from "{}/person_knows_person_0_0.csv" (HEADER=true, DELIM="|") -create rel table likes_comment (FROM Person TO Comment,creationDate TIMESTAMP,MANY_MANY) -copy likes_comment from "{}/person_likes_comment_0_0.csv" (HEADER=true, DELIM="|") -create rel table likes_post (FROM Person TO Post,creationDate TIMESTAMP,MANY_MANY) -copy likes_post from "{}/person_likes_post_0_0.csv" (HEADER=true, DELIM="|") -create rel table replyOf_comment (FROM Comment TO Comment,MANY_ONE) -copy replyOf_comment from "{}/comment_replyOf_comment_0_0.csv" (HEADER=true, DELIM="|") -create rel table replyOf_post (FROM Comment TO Post,MANY_ONE) -copy replyOf_post from "{}/comment_replyOf_post_0_0.csv" (HEADER=true, DELIM="|") -create rel table studyAt (FROM Person TO Organisation,classYear INT64,MANY_MANY) -copy studyAt from "{}/person_studyAt_organisation_0_0.csv" (HEADER=true, DELIM="|") -create rel table workAt (FROM Person TO Organisation,workFrom INT64,MANY_MANY) -copy workAt from "{}/person_workAt_organisation_0_0.csv" (HEADER=true, DELIM="|") +create node table Person (ID INT64,firstName STRING,lastName STRING,gender STRING,birthday DATE,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING, PRIMARY KEY(ID)); +copy Person from "{}/person_0_0.csv" (HEADER=true, DELIM="|"); +create node table Forum (ID INT64,title STRING,creationDate TIMESTAMP, PRIMARY KEY(ID)); +copy Forum from "{}/forum_0_0.csv" (HEADER=true, DELIM="|"); +create node table Post (ID INT64,imageFile STRING,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING,language STRING,content STRING,length INT64, PRIMARY KEY(ID)); +copy Post from "{}/post_0_0.csv" (HEADER=true, DELIM="|"); +create node table Comment (ID INT64,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING,content STRING,length INT64, PRIMARY KEY(ID)); +copy Comment from "{}/comment_0_0.csv" (HEADER=true, DELIM="|"); +create node table Tag (ID INT64,name STRING,url STRING, PRIMARY KEY(ID)); +copy Tag from "{}/tag_0_0.csv" (HEADER=true, DELIM="|"); +create node table Tagclass (ID INT64,name STRING,url STRING, PRIMARY KEY(ID)); +copy Tagclass from "{}/tagclass_0_0.csv" (HEADER=true, DELIM="|"); +create node table Place (ID INT64,name STRING,url STRING,type STRING, PRIMARY KEY(ID)); +copy Place from "{}/place_0_0.csv" (HEADER=true, DELIM="|"); +create node table Organisation (ID INT64,type STRING,name STRING,url STRING, PRIMARY KEY(ID)); +copy Organisation from "{}/organisation_0_0.csv" (HEADER=true, DELIM="|"); +create rel table containerOf (FROM Forum TO Post,ONE_MANY); +copy containerOf from "{}/forum_containerOf_post_0_0.csv" (HEADER=true, DELIM="|"); +create rel table comment_hasCreator (FROM Comment TO Person, MANY_ONE); +copy comment_hasCreator from "{}/comment_hasCreator_person_0_0.csv" (HEADER=true, DELIM="|"); +create rel table post_hasCreator (FROM Post TO Person,MANY_ONE); +copy post_hasCreator from "{}/post_hasCreator_person_0_0.csv" (HEADER=true, DELIM="|"); +create rel table hasInterest (FROM Person TO Tag, MANY_MANY); +copy hasInterest from "{}/person_hasInterest_tag_0_0.csv" (HEADER=true, DELIM="|"); +create rel table hasMember (FROM Forum TO Person,joinDate TIMESTAMP,MANY_MANY); +copy hasMember from "{}/forum_hasMember_person_0_0.csv" (HEADER=true, DELIM="|"); +create rel table hasModerator (FROM Forum TO Person,MANY_ONE); +copy hasModerator from "{}/forum_hasModerator_person_0_0.csv" (HEADER=true, DELIM="|"); +create rel table comment_hasTag (FROM Comment TO Tag,MANY_MANY); +copy comment_hasTag from "{}/comment_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|"); +create rel table forum_hasTag (FROM Forum TO Tag,MANY_MANY); +copy forum_hasTag from "{}/forum_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|"); +create rel table post_hasTag (FROM Post TO Tag,MANY_MANY); +copy post_hasTag from "{}/post_hasTag_tag_0_0.csv" (HEADER=true, DELIM="|"); +create rel table hasType (FROM Tag TO Tagclass,MANY_ONE); +copy hasType from "{}/tag_hasType_tagclass_0_0.csv" (HEADER=true, DELIM="|"); +create rel table comment_isLocatedIn (FROM Comment TO Place,MANY_ONE); +copy comment_isLocatedIn from "{}/comment_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|"); +create rel table organisation_isLocatedIn (FROM Organisation TO Place,MANY_ONE); +copy organisation_isLocatedIn from "{}/organisation_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|"); +create rel table person_isLocatedIn (FROM Person TO Place,MANY_ONE); +copy person_isLocatedIn from "{}/person_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|"); +create rel table post_isLocatedIn (FROM Post TO Place,MANY_ONE); +copy post_isLocatedIn from "{}/post_isLocatedIn_place_0_0.csv" (HEADER=true, DELIM="|"); +create rel table isPartOf (FROM Place TO Place,MANY_ONE); +copy isPartOf from "{}/place_isPartOf_place_0_0.csv" (HEADER=true, DELIM="|"); +create rel table isSubclassOf (FROM Tagclass TO Tagclass,MANY_ONE); +copy isSubclassOf from "{}/tagclass_isSubclassOf_tagclass_0_0.csv" (HEADER=true, DELIM="|"); +create rel table knows (FROM Person TO Person,creationDate TIMESTAMP,MANY_MANY); +copy knows from "{}/person_knows_person_0_0.csv" (HEADER=true, DELIM="|"); +create rel table likes_comment (FROM Person TO Comment,creationDate TIMESTAMP,MANY_MANY); +copy likes_comment from "{}/person_likes_comment_0_0.csv" (HEADER=true, DELIM="|"); +create rel table likes_post (FROM Person TO Post,creationDate TIMESTAMP,MANY_MANY); +copy likes_post from "{}/person_likes_post_0_0.csv" (HEADER=true, DELIM="|"); +create rel table replyOf_comment (FROM Comment TO Comment,MANY_ONE); +copy replyOf_comment from "{}/comment_replyOf_comment_0_0.csv" (HEADER=true, DELIM="|"); +create rel table replyOf_post (FROM Comment TO Post,MANY_ONE); +copy replyOf_post from "{}/comment_replyOf_post_0_0.csv" (HEADER=true, DELIM="|"); +create rel table studyAt (FROM Person TO Organisation,classYear INT64,MANY_MANY); +copy studyAt from "{}/person_studyAt_organisation_0_0.csv" (HEADER=true, DELIM="|"); +create rel table workAt (FROM Person TO Organisation,workFrom INT64,MANY_MANY); +copy workAt from "{}/person_workAt_organisation_0_0.csv" (HEADER=true, DELIM="|"); \ No newline at end of file From 24fd88ed5f8f598b0747c60390f35bde0f1006ee Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 19:18:17 -0400 Subject: [PATCH 09/10] X --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1da5ec31b17..f70abc673a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.15) -project(Kuzu VERSION 0.6.0 LANGUAGES CXX C) +project(Kuzu VERSION 0.6.0.1 LANGUAGES CXX C) find_package(Threads REQUIRED) From 5ea5276748319301d4452a98b224a29a35dcedf4 Mon Sep 17 00:00:00 2001 From: Chang Liu Date: Tue, 20 Aug 2024 20:05:19 -0400 Subject: [PATCH 10/10] X --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f70abc673a0..1da5ec31b17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.15) -project(Kuzu VERSION 0.6.0.1 LANGUAGES CXX C) +project(Kuzu VERSION 0.6.0 LANGUAGES CXX C) find_package(Threads REQUIRED)