Skip to content

Commit 1a34f7b

Browse files
committed
60029: Processing Models lecture complete
1 parent a13266e commit 1a34f7b

12 files changed

+368
-1
lines changed
Binary file not shown.
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
// We create a basic NAry table type with type V (some std::variant<types>)
7+
template <typename V> using Row = vector<V>;
8+
9+
template <typename V> using Table = vector<Row<V>>;
10+
11+
template <typename V>
12+
size_t select_eq(Table<V> &outputBuffer, const Table<V> &inputBuffer,
13+
V eq_value, size_t attribOffset) {
14+
15+
for (const Row<V> &r : inputBuffer) {
16+
if (r[attribOffset] == eq_value) {
17+
outputBuffer.push_back(r);
18+
}
19+
}
20+
return outputBuffer.size();
21+
}
22+
23+
void example_bulk() {
24+
// we can make a basic example with int only values as
25+
// CREATE TABLE Orders (orderId int, status int, urgency int);
26+
// C-style enums used for brevity
27+
enum Urgency { URGENT, NOT_URGENT, IGNORE };
28+
29+
enum Status { COMPLETE, IN_PROCESS, PENDING };
30+
31+
Table<int> Orders{
32+
{1, COMPLETE, IGNORE},
33+
{2, PENDING, IN_PROCESS},
34+
{3, PENDING, URGENT},
35+
{4, PENDING, URGENT},
36+
};
37+
38+
Table<int> PendingOrders, UrgentAndPendingOrders;
39+
40+
select_eq<int>(PendingOrders, Orders, PENDING, 1);
41+
select_eq<int>(UrgentAndPendingOrders, PendingOrders, URGENT, 2);
42+
43+
for (auto &r : UrgentAndPendingOrders) {
44+
cout << "id: " << r[0] << endl;
45+
}
46+
}
47+
48+
using Candidates = vector<uint32_t>;
49+
50+
template<typename V>
51+
size_t add_candidates(const Table<V>& underlyingBuffer, Candidates& outputRows) {
52+
for (uint32_t i = 0; i < underlyingBuffer.size(); i++) {
53+
outputRows.push_back(i);
54+
}
55+
return outputRows.size();
56+
}
57+
58+
template<typename V>
59+
size_t select_eq(const Table<V>& underlyingBuffer, Candidates& outputRows, const Candidates& inputRows, V eq_value, size_t attribOffset) {
60+
for (const uint32_t index : inputRows) {
61+
if (underlyingBuffer[index][attribOffset] == eq_value) {
62+
outputRows.push_back(index);
63+
}
64+
}
65+
return outputRows.size();
66+
}
67+
68+
void example_reference_bulk() {
69+
// we can make a basic example with int only values as
70+
// CREATE TABLE Orders (orderId int, status int, urgency int);
71+
// C-style enums used for brevity
72+
enum Urgency { URGENT, NOT_URGENT, IGNORE };
73+
74+
enum Status { COMPLETE, IN_PROCESS, PENDING };
75+
76+
Table<int> Orders{
77+
{1, COMPLETE, IGNORE},
78+
{2, PENDING, IN_PROCESS},
79+
{3, PENDING, URGENT},
80+
{4, PENDING, URGENT},
81+
};
82+
83+
84+
Candidates OrdersCandidates, PendingOrders, UrgentAndPendingOrders;
85+
add_candidates(Orders, OrdersCandidates);
86+
select_eq<int>(Orders, PendingOrders, OrdersCandidates, PENDING, 1);
87+
select_eq<int>(Orders, UrgentAndPendingOrders, PendingOrders, URGENT, 2);
88+
89+
for (auto &r : UrgentAndPendingOrders) {
90+
cout << "id: " << Orders[r][0] << endl;
91+
}
92+
}
93+
94+
int main() {
95+
example_reference_bulk();
96+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2023-03-08T13:48:21.846Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="hakt3BRgTnU1ce5HQ_aD" version="20.3.0" type="device"><diagram id="pneJFRrgqOqUh_DeVfs0" name="Page-1">7VZtj5NAEP41JL0PNryUUj9eaXuaeMbkTGw/XVbYg/UWhizTA/z1DrAcIGnVaNUYE0KYZ2ZnZ+eZZ4Ph+El5o1gW30LIpWGbYWk4G8O2Xduldw1ULbBYOS0QKRG2kNUDd+Iz16Cp0aMIeT4KRACJIhuDAaQpD3CEMaWgGIc9gBzvmrGIT4C7gMkp+kGEGLfoyvZ6/BUXUdztbC1ftp6EdcE6RR6zEIoWag7nbA3HVwDYfiWlz2Xdu64vbQd2J7zPhSme4vcsuN6/lznsvfvX4u3tofQL/7B4YXXFYdWdmIfUAG2CwhgiSJnc9uhawTENeZ3WJKuPeQOQEWgR+IkjVppNdkQgKMZEai8vBe7r5XNXW4eBZ1PqzI1RDYx3XImEI1cdlqKqBolq8zD09akaqxpaXyfLUcEj90GCahrh7HYr0+w9Hf1OkyC8roeLzBRS3iI7IaXO1Ta17uRJsrrGw1EF/AxDKz30TEUczzHZzxRpkQMdTVW0UHHJUDyNC2FaFdFzXD849KFn5wfmSFf5xORR72TYC3pISenMcH3kJRre2j/mSDsqw9tctQGT8Zs2ezA4pKGsjkvKqL5t5g8SiiBmCufEYyJShjV56yIWyO8y1jS2oMiz9OrSuaIiz9M17W63QN9W1dgs+hvD0uo048FtsTAvRIfl/Jf1z8n6o4TgcaRr69fqupuRbwvb/pPC7sqcKJtEnYsoYfcka8pQj/eSJbXSImw6ZdquSTr/l2RuL+fuSOjeVOgr73fq3D7Nzg1LWnZmIqTL1p8FpG+8+gso2RAjnnMhSqzFxTghs/9da3yDf15n+wU=</diagram></mxfile>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2023-03-08T17:18:12.179Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="55VknwyJiDV6zTakpI5-" version="20.3.0" type="device"><diagram id="WNS7VEBsD4Hzk5GzQLo6" name="Page-1">3Vdtb9owEP41+bjJSXj9yHsndawqZVs/VSZ2E69OLjIOhP362dhJCAhEO2i1SZGSe+7OPt89jwWOP4jzicBp9BUI5Y6HSO74Q8fz3EazpV4a2RikgSwQCkZsUAXM2G9qQWTRjBG6rAVKAC5ZWgcDSBIayBqGhYB1PewZeH3XFIf0AJgFmB+iPxiRkUE7XrvCbygLo2Jnt9U1nhgXwXaJZYQJrA20PZw/cvyBAJDmK84HlOvmFX0xHRgf8ZaFCZrIcxJW7lP4jOIFT3vf5vfzm773nXxq2NrkpjgwJer81gQhIwghwXxUoX0BWUKoXhUpq4q5BUgV6CrwF5VyY4eJMwkKimTMrZfmTP7U6Z+b1nrc8Qxzu/LW2BRGIsVmJ0mbj7u+Km1rVXmkp2mgzAWH4MVAY8aLYpZSwEs5W79EBsBBbFviDzsItbXHNEt36OgMimFDJgJ6ovEFl7EIqTwR55VMURKjEFN1OJUnKMeSrep1YMv1sIyr6KA+LCNewQ677grzzO7keA39NAeS5tJp928BExXxgBeKGu2hde9zqs6YdcQknaV425+1ujbq7Hj9QFZUqHJOj+SwhUWCvWjK+8mY60rsrhUWinaE7qMr9bz5vyvycL5nanSHAK0eQuPxZRXpnalI/yMV6R1X5JKFMX5SmlxKLDO98d1oOvwynbyfLvfGcklduu5HC7P1rwjzYCwIdbvojdK7oMD+Vjg29Q6Y2rnkSbvOE6+5N3+jZ5u0R4Gyirezwj9DkJmqIAl0gfP7yWj68H6CLCd/BUF2ridIZVa/i82kqn8X/ugP</diagram></mxfile>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2023-03-08T15:05:49.961Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="wl075AxH1_Sz35Apjpqw" version="20.3.0" type="device"><diagram id="SfVLHhZsSjInA-VINEFv" name="Page-1">5Vpbb5swFP41PDbiEkLy2NxWTatWLZPaPXrYAbeOzYxJwn79bDC3QC+b0hQ0KYp8Pnz9voOPD2A4i93xEwdReMsgIoZtwqPhLA3bns6m8l8BaQ643iwHAo5hDlkVsMG/kQZNjSYYorhRUTBGBI6aoM8oRb5oYIBzdmhW2zLSHDUCAWoBGx+QNnqPoQj1smyvwm8QDsJiZGui17cDRWXdRRwCyA45lC3OWRnOgjMm8tLuuEBEcVfwkjOwfuZqOTGOqHhLA5Z+9Sb4EW0fV2APb/b2r2B8ZTl5N3tAEr1iwx6rn7sQ6CgMb75efV/cGN5S4/laRFoQxFlCIVJjmIYzP4RYoE0EfHX1ID1CYqHYEWlZshgLzp5KIhWyZVRo1afS1LNBXA7+7Dqtkj3pdYjtkOCprKIbjLXnaIebavNQqVfUCGvCFRjQ/hKU/VaUyoJm9W8YHncw/G4cWuZ5SJz2jER3iCRads9YnAySxUnPWPSGyKJt9ozF6SBZ7FtwmQ2SxZ5Fl2KbHhaLTs+iS7GCgbHYs+hSkDYsFsc9iy52V1rTfxZ7Fl3srtSlmRzezy+RGcoc6jwE9y3wDDKtcfsWeAaZ1rh9CzyDTGsmfQs8g0xrJn0LPO20ZouEH0qIqrgjm1NJTOILzGiL3yw0dZC4YIRxiVBGkeIRE3ICAYIDKk1f8oYkPlesYh+Qa31hhyFUw3Sq1tT1MqfXpm7lA6eacJMO4Zz3Eq7ouCbc59s7CXxzBimTe66HLw2Z3I9WqZ2pKX3MrGiORqP/WavTM+KHi9VOCDeCcaQEkkOoISHkKI6zXVH+iVCBHAU4VowPUcpz5VPu69ujZV5UzHZeGkfITwgQSjTJttIKqI4GKNuZ7kDLcxuyOW3VytfDl1HtDa/w4hBEqugnnKRzDvwnJF4/3VXsZlwSHN286dznZm0FyM4/zvJqdq4ns17zjrmyHHvktunvYn/mvhf9bottBAO00SbjImQBo4CsKvTEb6s6XxiLNKGPSIhUMwoSwZrSoCMWD7q5Kv9Q5ZGrreWxdmmZFgaV632oG7VWyqyaZVbR7lRaROG1+nZB2j8J859yaI1JOTkK63slBHFYelFOlmLoZSdQ8SPhPnqB+eKhjgA8QOKFivlL7rZbcSR3NrxvzqTLQbKmcs0grVWIGKYirvV8p4Da6fckVBd7+frf6stCPoPKVculdHmvNKuvN/Lq1ScwzuoP</diagram></mxfile>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<mxfile host="Electron" modified="2023-03-08T13:23:23.578Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="CE5bKnDG_dKxrQzYtUWx" version="20.3.0" type="device"><diagram id="i25-bYJo0dqZ-6gXZW2F" name="Page-1">5Ztfc6I6FMA/jY/XIeH/Y9Xafdid6YwP9+7TnVQipA2EjbHq/fQ3SAABZWlFcG2nreaQkOSc80sOJzrSp+HuiaM4+ME8TEdQ83YjfTaC0LY0+T8R7FOB5bqpwOfES0WgECzIf1gJVTt/Qzy8LlUUjFFB4rJwyaIIL0VJhjhn23K1FaPlXmPk45pgsUS0Lv2beCJIpQ60C/k3TPwg6xlYan4hyiqrW6wD5LFtKjpMTn8c6VPOmEjfhbspponuMr2kGpifuZoPjONItGngv/KZeHz6d0MXi4k5W74ZvyZ/AV0NTuyzGXO2iTycNNJG+oRxETCfRYh+ZyyWQiCFr1iIvbIV2ggmRYEIqbq6Fpy95drSpQRH3kNiC1mMWIRTyZxQqjpJW0wZZfwwBn3maJqdtExHh72akYpZZ+plG77EDVOFynsQ97FoUklhHOnUmIVY8L1syDFFgryXB4KUe/l5vcIC8o0ywgcMokb5juhG9VQzkLyL9P5Ei9uACLyI0WHeW8lf2RBoHadIrMguMajS5jvmAu+a9VmfvmoAHQWm4hmaqrwt6DCUKDgCI5N1rjDg1BUk3WWhisrfLnZqvCPin6T52FSln0dXZjt150NhnxUiOcGjRknx5/G1otmhlLWrA1QDxHrQtPm8BVodAqS3BMgakh/9BD9G8mtOpdOLkT2Ri3s0smdK3B1cH7FaByDqbhlEoA8NIqgr8wjEgrnHQvqnc3lE3wtly7cSfuCUC2jyR4ZAnYJptATTHBJM45bBrFjlMjDBrYFZDyHuNsZriwLUh2TBvPEgr+rCUBvahc1egrxPBl6nl/4O3dpq6dXukE5tnV/gn8ndRVvO0ERYvRCRh0p5oX2gVNpfp/LncyFUhxzZfwJH9nmO1sQP0ZVQametDlAybg4lux+Uen9S+TCA184gOC35s4fkzznPXy8PKsOBOPiDygllXi3KO1LzfC4fRT75gN8hHW5LOoZNULsN2xMWIYk26+uD0WCxLsAwbizHDZtTa3exQ+XpgEF3qOzB9/cQDhojZsM8ReEL2wqCr89gg8E6YFC3ygzqcGgGT+RoviaDV98IL2ZLNX1mRHZduFTl6NKo+koKvWpVcZd8GBdA27B1Xi1DMhyw9tDANhwFLjfxEBmpSsr7vg7iYcMJzxMKr5a46E3jN5cVhwOlivrzcfPWNF7/sMndHqW1TZZefJR2Zreu0mZWjJrOoLZb//5GVr/bPmzY9oc/+b4mrmDoLSlLaH0FXNtmj+ClydXTlEFXG+vQcnVgm9BxXdMsQ2fYYwBt0zUAtGxLzv9zMEPXHdtA0xzDcYFhuLpVYRuOHVMDBjAc05Z1rF5R10EN9WcSY06JdAuovXCM3jBfy7crjvwQH2YmguRaLOul1SoOe1giGvKXyuVW0t8qIkSJH8niUvaDpXySwE2WiD6oCyHxPHpuXSmDUvZ60M16YbQIYUG/C0Y9hsVjP+lJ/n1D60C+vErvkS8Rxl5iSbk+SMtuCPVUNYFeaGJRtsqNKzYxxXnlVMYP04HTpDVeMY4PZpceEpLIz2tRvBLjr+QToLJbn8r75H7Sj0/UP9iQmTuQHqHM/XUsZGTfGcgsdCIot8xODCSLxfcj0kW6+JKJ/vg/</diagram></mxfile>
Loading
Loading
Loading
Loading

0 commit comments

Comments
 (0)