<commit_before><svg viewBox="0 0 600 300" xmlns="http://www.w3.org/2000/svg">
 <style>
  .background
  {
   fill:#f8f8f8;
   stroke-width:1;
   stroke:#a0a0a0;
  }
  .code-block
  {
   fill:#eeffcc;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .code
  {
   font-family: monospace;
   font-size: 10px;
   line-height: 1.2em;
   dominant-baseline: central;
  }
  tspan
  {
   white-space: pre;
  }
  .keyword
  {
   font-weight: bold;
   fill: #007020;
  }
  .table
  {
   font-weight: bold;
   fill: #0e84b5;
  }
  .field
  {
   font-weight: normal;
   fill: #bb60d5;
  }
  .type
  {
   font-weight: normal;
   fill: #902000;
  }
  .literal
  {
   font-weight: normal;
   fill: #4070a0;
  }
  .header
  {
   font-weight: bold;
   font-size: 14px;
   font-family: sans-serif;
   text-anchor: middle;
   dominant-baseline: central;
  }
  .header-block
  {
   fill:#cceeaa;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data-header-block
  {
   fill:#eeddaa;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data-block
  {
   fill:#fff8dd;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data
  {
   font-family: serif;
   font-size: 10px;
   line-height: 1.2em;
   white-space: pre;
   dominant-baseline: central;
  }
  .joedb-arrow
  {
   stroke:#68b;
   stroke-width:2;
  }
  .execute-arrow
  {
   stroke:#888;
   stroke-width:2;
  }
 </style>

 <defs>
  <marker id="joedb-arrowhead" markerWidth="5" markerHeight="4" refX="0" refY="2" orient="auto">
   <polygon fill="#68b" points="0 0, 5 2, 0 4"/>
  </marker>
 </defs>

 <defs>
  <marker id="execute-arrowhead" markerWidth="5" markerHeight="4" refX="0" refY="2" orient="auto">
   <polygon fill="#888" points="0 0, 5 2, 0 4"/>
  </marker>
 </defs>

 <rect x="0" y="0" width="600" height="300" class="background"/>

 <line class="joedb-arrow" x1="141.5" y1="170" x2="273" y2="170" marker-end="url(#joedb-arrowhead)"/>
 <line class="joedb-arrow" x1="141.5" y1="100" x2="141.5" y2="140" marker-end="url(#joedb-arrowhead)"/>
 <line class="execute-arrow" x1="433.5" y1="100" x2="433.5" y2="147" marker-end="url(#execute-arrowhead)"/>
 <line class="execute-arrow" x1="354.25" y1="183" x2="354.25" y2="202" marker-end="url(#execute-arrowhead)"/>
 <line class="execute-arrow" x1="513.75" y1="183" x2="513.75" y2="202" marker-end="url(#execute-arrowhead)"/>

<g transform="translate(16,42)">
  <rect class="header-block header" x="0" y="-26" width="251" height="26"/>
  <text x="125" y="-13" class="header">Database Schema</text>
  <rect class="code-block code" x="0" y="0" width="251" height="8.4em"/>
  <text x="0.6em" y="0" class="code">
   <tspan x="0.6em" dy="1.2em" class="keyword">create_table</tspan><tspan class="table"> city</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> city</tspan><tspan class="field"> name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">create_table</tspan><tspan class="table"> person</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> first_name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> last_name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> home</tspan><tspan class="type"> references city</tspan>
  </text>
 </g>

 <g transform="translate(283,42)">
  <rect class="header-block header" x="0" y="-26" width="301" height="26"/>
  <text x="155" y="-13" class="header">Application Code</text>
  <rect class="code-block code" x="0" y="0" width="301" height="8.4em"/>
  <text x="0.6em" y="0" class="code">
   <tspan x="0.6em" dy="1.2em">tutorial::File_Database db(</tspan><tspan class="literal">"tutorial.joedb"</tspan><tspan>);</tspan> 
   <tspan x="0.6em" dy="2.4em">db.new_city(</tspan><tspan class="literal">"Tokyo"</tspan><tspan>);</tspan>
   <tspan x="0.6em" dy="2.4em" class="keyword">for</tspan> (<tspan class="keyword">auto</tspan> person: db.get_person_table())
   <tspan x="0.6em" dy="1.2em"> std::cout &lt;&lt; db.get_first_name(person) &lt;&lt; </tspan><tspan class="literal">'\n'</tspan>;</text>
 </g>

 <g transform="translate(16,170)">
  <ellipse cx="125.5" cy="0" rx="50" ry="20" style="fill:#99bbee;stroke:#a0a0a0;stroke-width:0.5" />
  <text x="125.5" y="0" class="header">joedbc</text>
 </g>

 <g transform="translate(283,170)">
  <rect class="header-block header" x="0" y="-13" width="301" height="26"/>
  <text x="155" y="0" class="header">Generated Code</text>
 </g>

 <g transform="translate(283,238)">
  <rect class="data-header-block header" x="0" y="-26" width="142.5" height="26"/>
  <text x="71.25" y="-13" class="header">Tabular Data</text>
  <rect class="data-block" x="0" y="0" width="142.5" height="46"/>
  <text x="0.6em" y="1.1em" class="data">• For easy direct access
• Not permanent
• Can be in RAM</text>
 </g>

 <g transform="translate(441.5,238)">
  <rect class="data-header-block header" x="0" y="-26" width="142.5" height="26"/>
  <text x="71.25" y="-13" class="header">Journal</text>
  <rect class="data-block" x="0" y="0" width="142.5" height="46"/>
  <text x="0.6em" y="1.1em" class="data">• Whole data history
• Stored on disk
• Crash safe</text>
 </g>

</svg><commit_msg>svg works better in Chrome<commit_after><svg viewBox="0 0 600 300" xmlns="http://www.w3.org/2000/svg">
 <style>
  .background
  {
   fill:#f8f8f8;
   stroke-width:1;
   stroke:#a0a0a0;
  }
  .code-block
  {
   fill:#eeffcc;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .code
  {
   font-family: monospace;
   font-size: 10px;
   line-height: 1.2em;
   dominant-baseline: central;
  }
  tspan
  {
   white-space: pre;
  }
  .keyword
  {
   font-weight: bold;
   fill: #007020;
  }
  .table
  {
   font-weight: bold;
   fill: #0e84b5;
  }
  .field
  {
   font-weight: normal;
   fill: #bb60d5;
  }
  .type
  {
   font-weight: normal;
   fill: #902000;
  }
  .literal
  {
   font-weight: normal;
   fill: #4070a0;
  }
  .header
  {
   font-weight: bold;
   font-size: 14px;
   font-family: sans-serif;
   text-anchor: middle;
   dominant-baseline: central;
  }
  .header-block
  {
   fill:#cceeaa;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data-header-block
  {
   fill:#eeddaa;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data-block
  {
   fill:#fff8dd;
   stroke-width:0.5;
   stroke:#a0a0a0;
  }
  .data
  {
   font-family: serif;
   font-size: 10px;
   line-height: 1.2em;
   dominant-baseline: central;
  }
  .joedb-arrow
  {
   stroke:#68b;
   stroke-width:2;
  }
  .execute-arrow
  {
   stroke:#888;
   stroke-width:2;
  }
 </style>

 <defs>
  <marker id="joedb-arrowhead" markerWidth="5" markerHeight="4" refX="0" refY="2" orient="auto">
   <polygon fill="#68b" points="0 0, 5 2, 0 4"/>
  </marker>
 </defs>

 <defs>
  <marker id="execute-arrowhead" markerWidth="5" markerHeight="4" refX="0" refY="2" orient="auto">
   <polygon fill="#888" points="0 0, 5 2, 0 4"/>
  </marker>
 </defs>

 <rect x="0" y="0" width="600" height="300" class="background"/>

 <line class="joedb-arrow" x1="141.5" y1="170" x2="273" y2="170" marker-end="url(#joedb-arrowhead)"/>
 <line class="joedb-arrow" x1="141.5" y1="100" x2="141.5" y2="140" marker-end="url(#joedb-arrowhead)"/>
 <line class="execute-arrow" x1="433.5" y1="100" x2="433.5" y2="147" marker-end="url(#execute-arrowhead)"/>
 <line class="execute-arrow" x1="354.25" y1="183" x2="354.25" y2="202" marker-end="url(#execute-arrowhead)"/>
 <line class="execute-arrow" x1="513.75" y1="183" x2="513.75" y2="202" marker-end="url(#execute-arrowhead)"/>

<g transform="translate(16,42)">
  <rect class="header-block header" x="0" y="-26" width="251" height="26"/>
  <text x="125" y="-13" class="header">Database Schema</text>
  <rect class="code-block code" x="0" y="0" width="251" height="8.4em"/>
  <text x="0.6em" y="0" class="code">
   <tspan x="0.6em" dy="1.2em" class="keyword">create_table</tspan><tspan class="table"> city</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> city</tspan><tspan class="field"> name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">create_table</tspan><tspan class="table"> person</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> first_name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> last_name</tspan><tspan class="type"> string</tspan>
   <tspan x="0.6em" dy="1.2em" class="keyword">add_field</tspan><tspan class="table"> person</tspan><tspan class="field"> home</tspan><tspan class="type"> references city</tspan>
  </text>
 </g>

 <g transform="translate(283,42)">
  <rect class="header-block header" x="0" y="-26" width="301" height="26"/>
  <text x="155" y="-13" class="header">Application Code</text>
  <rect class="code-block code" x="0" y="0" width="301" height="8.4em"/>
  <text x="0.6em" y="0" class="code">
   <tspan x="0.6em" dy="1.2em">tutorial::File_Database db(</tspan><tspan class="literal">"tutorial.joedb"</tspan><tspan>);</tspan> 
   <tspan x="0.6em" dy="2.4em">db.new_city(</tspan><tspan class="literal">"Tokyo"</tspan><tspan>);</tspan>
   <tspan x="0.6em" dy="2.4em" class="keyword">for</tspan> (<tspan class="keyword">auto</tspan> person: db.get_person_table())
   <tspan x="0.6em" dy="1.2em"> std::cout &lt;&lt; db.get_first_name(person) &lt;&lt; </tspan><tspan class="literal">'\n'</tspan>;</text>
 </g>

 <g transform="translate(16,170)">
  <ellipse cx="125.5" cy="0" rx="50" ry="20" style="fill:#99bbee;stroke:#a0a0a0;stroke-width:0.5" />
  <text x="125.5" y="0" class="header">joedbc</text>
 </g>

 <g transform="translate(283,170)">
  <rect class="header-block header" x="0" y="-13" width="301" height="26"/>
  <text x="155" y="0" class="header">Generated Code</text>
 </g>

 <g transform="translate(283,238)">
  <rect class="data-header-block header" x="0" y="-26" width="142.5" height="26"/>
  <text x="71.25" y="-13" class="header">Tabular Data</text>
  <rect class="data-block" x="0" y="0" width="142.5" height="46"/>
  <text x="0.6em" y="0" class="data">
   <tspan x="0.6em" dy="1.2em">• For easy direct access</tspan>
   <tspan x="0.6em" dy="1.2em">• Not permanent</tspan> 
   <tspan x="0.6em" dy="1.2em">• Can be in RAM</tspan>
  </text>
 </g>

 <g transform="translate(441.5,238)">
  <rect class="data-header-block header" x="0" y="-26" width="142.5" height="26"/>
  <text x="71.25" y="-13" class="header">Journal</text>
  <rect class="data-block" x="0" y="0" width="142.5" height="46"/>
  <text x="0.6em" y="0" class="data">
   <tspan x="0.6em" dy="1.2em">• Whole data history</tspan>
   <tspan x="0.6em" dy="1.2em">• Stored on disk</tspan> 
   <tspan x="0.6em" dy="1.2em">• Crash-safe transactions</tspan>
  </text>
 </g>

</svg>
{'fraction_non_alphanumeric': 0.23194708707076198, 'fraction_numerical': 0.07701368125396393, 'mean_word_length': 4.342691190706679, 'pattern_counts': {'":': 0, '<': 259, '<?xml version=': 0, '>': 259, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '786092', 'n_tokens_mistral': 5014, 'n_tokens_neox': 4589, 'n_words': 821}