diff --git a/README.md b/README.md index 691f10d9..71d7ec1e 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,25 @@ Raise a [GH issue](https://github.com/questdb/documentation/issues/new/choose) o ## Syntax +### Railroad diagrams + +Our SQL syntax diagrams are created using Railroad. + +To create a diagram, use the [Railroad online editor](https://www.bottlecaps.de/rr/ui) to see it rendered. + +Once you're happy with it, copy the Railroad syntax and add it to the `static/images/docs/diagrams/.railroad` file. + +Next, run the `scripts/railroad.py` script to generate the SVG image. + +During its final output, a markdown image with the appropriate syntax is printed. + +Copy this syntax and paste it into the markdown file where you want the diagram to appear. + +The script requires: + +* Java (to run the `rr.war` file) +* Python (to execute the `railroad.py` script) + ### Math Expressions Use LaTeX-style math between `$` for inline or `$$` for block equations: diff --git a/rr.war b/rr.war new file mode 100644 index 00000000..f8ea760a Binary files /dev/null and b/rr.war differ diff --git a/scripts/railroad.py b/scripts/railroad.py new file mode 100644 index 00000000..b4733ec0 --- /dev/null +++ b/scripts/railroad.py @@ -0,0 +1,217 @@ +import os +import subprocess +import re +from pathlib import Path + +PROJECT_ROOT = Path(os.getcwd()) +RR_WAR_PATH = PROJECT_ROOT / "rr.war" +INPUT_FILE = PROJECT_ROOT / "static/images/docs/diagrams/.railroad" +OUTPUT_DIR = PROJECT_ROOT / "static/images/docs/diagrams" + +print(f"Current working directory: {PROJECT_ROOT}") +print(f"RR.war path: {RR_WAR_PATH}") +print(f"Checking if input file exists: {INPUT_FILE.exists()}") +print(f"Checking if output dir exists: {OUTPUT_DIR.exists()}") +print(f"Checking if rr.war exists: {RR_WAR_PATH.exists()}") + +# Custom CSS style to inject +CUSTOM_STYLE = ''' + +''' + +def extract_diagrams(file_path): + """Extract diagram definitions from the input file.""" + diagrams = {} + current_name = None + current_definition = [] + + print(f"Reading from file: {file_path}") + with open(file_path, 'r') as f: + previous_line = "" + for line in f: + line = line.rstrip() + + if not line or line.startswith('#'): + previous_line = "" + continue + + if '::=' in line: + if previous_line and not previous_line.startswith('-'): + if current_name and current_definition: + diagrams[current_name] = '\n'.join(current_definition) + + current_name = previous_line.strip() + current_definition = [f"{current_name} {line.strip()}"] + print(f"Found diagram: {current_name}") + + elif current_name and line: + current_definition.append(line) + + previous_line = line + + if current_name and current_definition: + diagrams[current_name] = '\n'.join(current_definition) + + print(f"\nFound {len(diagrams)} diagrams: {sorted(diagrams.keys())}") + + if diagrams: + first_key = sorted(diagrams.keys())[0] + print(f"\nFirst diagram '{first_key}' content:") + print(diagrams[first_key]) + + return diagrams + +def generate_svg(name, definition, temp_dir): + """Generate SVG for a single diagram definition.""" + temp_grammar = temp_dir / f"{name}.grammar" + temp_grammar.write_text(definition) + print(f"Created temporary grammar file: {temp_grammar}") + + output_path = OUTPUT_DIR / f"{name}.svg" + command = [ + "java", "-jar", str(RR_WAR_PATH), + "-suppressebnf", + f"-out:{output_path}", + str(temp_grammar) + ] + print(f"Executing command: {' '.join(command)}") + + result = subprocess.run(command, capture_output=True, text=True) + if result.returncode != 0: + print(f"Error output: {result.stderr}") + raise Exception(f"Failed to generate SVG: {result.stderr}") + + print(f"Generated SVG at: {output_path}") + return output_path + +def inject_custom_style(svg_path): + """Extract SVG content, normalize it, and inject custom CSS style.""" + with open(svg_path, 'r') as f: + content = f.read() + + svg_match = re.search(r']*width="[^"]*"[^>]*height="[^"]*"[^>]*>(.*?)', content, re.DOTALL) + if not svg_match: + print(f"Warning: No diagram SVG found in {svg_path}") + return + + width_match = re.search(r'width="([^"]*)"', svg_match.group(0)) + height_match = re.search(r'height="([^"]*)"', svg_match.group(0)) + + if not width_match or not height_match: + print(f"Warning: Missing width or height in {svg_path}") + return + + # Create the new SVG with proper opening tag and our style + new_svg = f''' + + + ''' + + inner_content = svg_match.group(1) + + inner_content = re.sub(r'\s+xmlns="[^"]*"', '', inner_content) + inner_content = re.sub(r'\s+style="[^"]*"', '', inner_content) + inner_content = inner_content.strip() + + final_svg = f"{new_svg}\n {inner_content}\n" + + with open(svg_path, 'w') as f: + f.write(final_svg) + +def main(): + temp_dir = PROJECT_ROOT / "temp_grammar" + temp_dir.mkdir(exist_ok=True) + print(f"Created temp directory: {temp_dir}") + + markdown_syntax_list = [] + + try: + diagrams = extract_diagrams(INPUT_FILE) + + for name, definition in diagrams.items(): + print(f"\nProcessing diagram: {name}") + + output_path = OUTPUT_DIR / f"{name}.svg" + if output_path.exists(): + print(f"Skipping existing diagram: {name}") + continue + + try: + svg_path = generate_svg(name, definition, temp_dir) + + inject_custom_style(svg_path) + + print(f"Successfully generated: {name}.svg") + + markdown_syntax_list.append(f"![Diagram for {name}](/images/docs/diagrams/{name}.svg)") + + except Exception as e: + print(f"Error processing {name}: {str(e)}") + + finally: + print("\nCleaning up...") + for file in temp_dir.glob("*.grammar"): + print(f"Removing temporary file: {file}") + file.unlink() + temp_dir.rmdir() + print("Cleanup complete") + + if markdown_syntax_list: + print("\nCopy the image syntax below and paste it into your markdown file:") + for syntax in markdown_syntax_list: + print(syntax) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/internals/ssr.template.js b/src/internals/ssr.template.js index c0d04d37..8bc83fa9 100644 --- a/src/internals/ssr.template.js +++ b/src/internals/ssr.template.js @@ -10,11 +10,11 @@ module.exports = ({ customFields, favicon, organizationName, url }) => ` - - - - - + + + + + <%~ it.headTags %> <% it.metaAttributes.forEach((metaAttribute) => { %> <%~ metaAttribute %> diff --git a/static/images/docs/diagrams/.railroad b/static/images/docs/diagrams/.railroad index bd7d32f0..8bb2c781 100644 --- a/static/images/docs/diagrams/.railroad +++ b/static/images/docs/diagrams/.railroad @@ -1,7 +1,8 @@ -# this file contains the grammar used to generate railroad diagrams. -# they are used to visualize QuestDB syntax in documentation. -# to learn how to create or edit these diagrams, please see this (private!) document: -# https://questdb.slab.com/posts/how-to-do-railroad-diagrams-he6wsuc0 +# Add new syntax to this file to generate railroad diagrams +# Run `scripts/railroad.py`. +# Link using `![Diagram](/images/docs/diagrams/.railroad/diagramName.svg)` +# Will take file name from first line +# Then syntax from following lines alterUser ::= 'ALTER' 'USER' userName ( 'ENABLE' | 'DISABLE' | 'WITH' ('NO' 'PASSWORD' | 'PASSWORD' password ) @@ -255,7 +256,7 @@ addIndex dropIndex ::= 'ALTER' 'TABLE' tableName 'ALTER' 'COLUMN' columnName 'DROP' 'INDEX' -(no)cachColumn +noCacheColumn ::= 'ALTER' 'TABLE' tableName 'ALTER' 'COLUMN' columnName ( 'NOCACHE' | 'CACHE' ) dropColumn diff --git a/static/images/docs/diagrams/InnerLeftJoin.svg b/static/images/docs/diagrams/InnerLeftJoin.svg index 7318e4bf..75cf443c 100644 --- a/static/images/docs/diagrams/InnerLeftJoin.svg +++ b/static/images/docs/diagrams/InnerLeftJoin.svg @@ -1,79 +1,82 @@ - - - - - - - - + + + + + + + + INNER - - + + LEFT - - + + JOIN - - - table - + + + table + ( - - - sub-query - + + + sub-query + ) - - - ON - - - column - - - operator - - - anotherColumn - - AND - - - ( - - - column - - , - - - ) - - - \ No newline at end of file + + + ON + + + column + + + operator + + + anotherColumn + + AND + + + ( + + + column + + , + + + ) + + + aAsofLtSpliceJoin + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/aAsofLtSpliceJoin.svg b/static/images/docs/diagrams/aAsofLtSpliceJoin.svg new file mode 100644 index 00000000..e2da6f38 --- /dev/null +++ b/static/images/docs/diagrams/aAsofLtSpliceJoin.svg @@ -0,0 +1,84 @@ + + + + + + + + + ASOF + + + LT + + + SPLICE + + + JOIN + + + table + + ( + + + sub-query + + ) + + + ON + + + column + + = + + + anotherColumn + + AND + + + ( + + + column + + , + + + ) + + + crossJoin + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/addColumn.svg b/static/images/docs/diagrams/addColumn.svg new file mode 100644 index 00000000..d8ecbd0d --- /dev/null +++ b/static/images/docs/diagrams/addColumn.svg @@ -0,0 +1,61 @@ + + + + + + + + + ADD + + + COLUMN + + + columnName + + + typeDef + + , + + + OWNED + + + BY + + + ownerName + + + alterColumnType + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/addIndex.svg b/static/images/docs/diagrams/addIndex.svg new file mode 100644 index 00000000..229c7998 --- /dev/null +++ b/static/images/docs/diagrams/addIndex.svg @@ -0,0 +1,52 @@ + + + + + + + + + ALTER + + + COLUMN + + + columnName + + ADD + + + INDEX + + + dropIndex + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/assignServiceAccount.svg b/static/images/docs/diagrams/assignServiceAccount.svg new file mode 100644 index 00000000..708011d3 --- /dev/null +++ b/static/images/docs/diagrams/assignServiceAccount.svg @@ -0,0 +1,57 @@ + + + + + + + + + ASSIGN + + + SERVICE + + + ACCOUNT + + + serviceAccount + + TO + + + userOrGroup + + , + + + unassignServiceAccount + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/attachPartition.svg b/static/images/docs/diagrams/attachPartition.svg new file mode 100644 index 00000000..7f461f4c --- /dev/null +++ b/static/images/docs/diagrams/attachPartition.svg @@ -0,0 +1,60 @@ + + + + + + + + + ALTER + + + TABLE + + + tableName + + ATTACH + + + PARTITION + + + LIST + + + partitionName + + , + + + detachPartition + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/booleanWhere.svg b/static/images/docs/diagrams/booleanWhere.svg new file mode 100644 index 00000000..57b4f9cb --- /dev/null +++ b/static/images/docs/diagrams/booleanWhere.svg @@ -0,0 +1,47 @@ + + + + + + + + + WHERE + + + NOT + + + columnName + + + timestampExact + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/complexWhere.svg b/static/images/docs/diagrams/complexWhere.svg new file mode 100644 index 00000000..c1eafc0a --- /dev/null +++ b/static/images/docs/diagrams/complexWhere.svg @@ -0,0 +1,58 @@ + + + + + + + + + WHERE + + + ( + + + AND + + + OR + + + NOT + + + boolean + + ) + + + booleanWhere + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/createTableDef.svg b/static/images/docs/diagrams/createTableDef.svg new file mode 100644 index 00000000..c8c009ff --- /dev/null +++ b/static/images/docs/diagrams/createTableDef.svg @@ -0,0 +1,151 @@ + + + + + + + + + CREATE + + + TABLE + + + IF + + + NOT + + + EXISTS + + + tableName + + ( + + + columnName + + + typeDef + + , + + + ) + + + AS + + + ( + + + selectSql + + ) + + + , + + + castDef + + , + + + indexDef + + timestamp + + + ( + + + columnRef + + ) + + + PARTITION + + + BY + + + NONE + + + BYPASS + + + WAL + + + YEAR + + + MONTH + + + DAY + + + HOUR + + + BYPASS + + + WAL + + + WITH + + + tableParameter + + + tableTargetVolumeDef + + OWNED + + + BY + + + ownerName + + + createTableLike + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/createTableTimestamp.svg b/static/images/docs/diagrams/createTableTimestamp.svg new file mode 100644 index 00000000..930f3b35 --- /dev/null +++ b/static/images/docs/diagrams/createTableTimestamp.svg @@ -0,0 +1,54 @@ + + + + + + + + + CREATE + + + someCreateTableStatement + + timestamp + + + ( + + + columnName + + ) + + + createTableWithCommitParams + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/createTableWithCommitParams.svg b/static/images/docs/diagrams/createTableWithCommitParams.svg new file mode 100644 index 00000000..a002591a --- /dev/null +++ b/static/images/docs/diagrams/createTableWithCommitParams.svg @@ -0,0 +1,75 @@ + + + + + + + + + WITH + + + maxUncommittedRows + + + = + + + rowCount + + , + + + commitLag + + + = + + + n + + us + + + s + + + m + + + h + + + d + + + createTableWithMaxRowParams + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/createTableWithMaxRowParams.svg b/static/images/docs/diagrams/createTableWithMaxRowParams.svg new file mode 100644 index 00000000..4fece1e5 --- /dev/null +++ b/static/images/docs/diagrams/createTableWithMaxRowParams.svg @@ -0,0 +1,50 @@ + + + + + + + + + WITH + + + maxUncommittedRows + + + = + + + rowCount + + + dynamicTimestamp + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/detachPartition.svg b/static/images/docs/diagrams/detachPartition.svg new file mode 100644 index 00000000..435c3192 --- /dev/null +++ b/static/images/docs/diagrams/detachPartition.svg @@ -0,0 +1,102 @@ + + + + + + + + + ALTER + + + TABLE + + + tableName + + DETACH + + + PARTITION + + + LIST + + + partitionName + + , + + + WHERE + + + timestampColumn + + = + + + > + + + < + + + >= + + + <= + + + ' + + + timestamp + + ' + + + IN + + + ( + + + timestamp + + , + + + ) + + + squashPartitions + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/dropColumn.svg b/static/images/docs/diagrams/dropColumn.svg new file mode 100644 index 00000000..f4c124b8 --- /dev/null +++ b/static/images/docs/diagrams/dropColumn.svg @@ -0,0 +1,52 @@ + + + + + + + + + DROP + + + COLUMN + + + columnName + + , + + + : + + + addColumn + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/dropIndex.svg b/static/images/docs/diagrams/dropIndex.svg new file mode 100644 index 00000000..4729b196 --- /dev/null +++ b/static/images/docs/diagrams/dropIndex.svg @@ -0,0 +1,63 @@ + + + + + + + + + ALTER + + + TABLE + + + tableName + + ALTER + + + COLUMN + + + columnName + + DROP + + + INDEX + + + no + + + cachColumn + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/dropPartition.svg b/static/images/docs/diagrams/dropPartition.svg new file mode 100644 index 00000000..e5eb0e8b --- /dev/null +++ b/static/images/docs/diagrams/dropPartition.svg @@ -0,0 +1,52 @@ + + + + + + + + + DROP + + + PARTITION + + + LIST + + + partitionName + + , + + + removeUser + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/exactStringOrSymbolSearch.svg b/static/images/docs/diagrams/exactStringOrSymbolSearch.svg new file mode 100644 index 00000000..95b60cdb --- /dev/null +++ b/static/images/docs/diagrams/exactStringOrSymbolSearch.svg @@ -0,0 +1,54 @@ + + + + + + + + + WHERE + + + column + + = + + + ' + + + string + + ' + + + regexMatch + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/fromTo.svg b/static/images/docs/diagrams/fromTo.svg new file mode 100644 index 00000000..d456a661 --- /dev/null +++ b/static/images/docs/diagrams/fromTo.svg @@ -0,0 +1,56 @@ + + + + + + + + + someSampleBySelectQuery... + + FROM + + + lowerBound + + TO + + + upperBound + + TO + + + upperBound + + + alignToCalTimeZone + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/grantAssume.svg b/static/images/docs/diagrams/grantAssume.svg new file mode 100644 index 00000000..b6a97b06 --- /dev/null +++ b/static/images/docs/diagrams/grantAssume.svg @@ -0,0 +1,66 @@ + + + + + + + + + GRANT + + + ASSUME + + + SERVICE + + + ACCOUNT + + + serviceAccount + + TO + + + entityName + + WITH + + + GRANT + + + OPTION + + + revokeAssume + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/influxLineProtocolOverTCP.svg b/static/images/docs/diagrams/influxLineProtocolOverTCP.svg new file mode 100644 index 00000000..3e0eab89 --- /dev/null +++ b/static/images/docs/diagrams/influxLineProtocolOverTCP.svg @@ -0,0 +1,80 @@ + + + + + + + + + user_1 + + + user_2 + + ... + + + TCP requests + + + network_IO_thread + + write_queue + + + worker_1 + + write + + + table_1 + + + table_2 + + ... + + + worker_2 + + write + + + table_3 + + + table_4 + + ... + + + influxLineProtocolOverTCPLoadRebalance + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/influxLineProtocolOverTCPLoadRebalance.svg b/static/images/docs/diagrams/influxLineProtocolOverTCPLoadRebalance.svg new file mode 100644 index 00000000..3e160448 --- /dev/null +++ b/static/images/docs/diagrams/influxLineProtocolOverTCPLoadRebalance.svg @@ -0,0 +1,72 @@ + + + + + + + + + Launch_Load_Balancing_Job + + IF + + + load_ratio + + > + + + max.load.ratio + + + Rebalance_Load + + n.updates.per.load.balance + + + < + + + updates_since_last_rebalance + + maintenance.job.interval + + + < + + + time_since_last_rebalance + + IF + + + joinOverview + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/insertCommitLagInto.svg b/static/images/docs/diagrams/insertCommitLagInto.svg new file mode 100644 index 00000000..e5df00ba --- /dev/null +++ b/static/images/docs/diagrams/insertCommitLagInto.svg @@ -0,0 +1,110 @@ + + + + + + + + + INSERT + + + batch + + + batchCount + + commitLag + + + n + + us + + + s + + + m + + + h + + + d + + + INTO + + + tableName + + ( + + + columnName + + , + + + ) + + + VALUES + + + ( + + + value + + , + + + ) + + + , + + + SELECT + + + queryDef + + + mainQuery + + ; + + + withAsInsertCommitLag + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/insertInto.svg b/static/images/docs/diagrams/insertInto.svg new file mode 100644 index 00000000..a97e2764 --- /dev/null +++ b/static/images/docs/diagrams/insertInto.svg @@ -0,0 +1,90 @@ + + + + + + + + + INSERT + + + batch + + + batchCount + + INTO + + + tableName + + ( + + + columnName + + , + + + ) + + + VALUES + + + ( + + + value + + , + + + ) + + + , + + + SELECT + + + queryDef + + + mainQuery + + ; + + + withAsInsert + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/latestBy.svg b/static/images/docs/diagrams/latestBy.svg new file mode 100644 index 00000000..44b13f72 --- /dev/null +++ b/static/images/docs/diagrams/latestBy.svg @@ -0,0 +1,76 @@ + + + + + + + + + SELECT + + + columnName + + , + + + FROM + + + tableName + + LATEST + + + ON + + + ( + + + columnName + + ) + + + PARTITION + + + BY + + + columnName + + , + + + latestByDeprecated + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/listMatch.svg b/static/images/docs/diagrams/listMatch.svg new file mode 100644 index 00000000..32c94050 --- /dev/null +++ b/static/images/docs/diagrams/listMatch.svg @@ -0,0 +1,60 @@ + + + + + + + + + WHERE + + + NOT + + + columnName + + in + + + ( + + + string + + , + + + ) + + + whereNumericValue + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/noCacheColumn.svg b/static/images/docs/diagrams/noCacheColumn.svg new file mode 100644 index 00000000..05145f27 --- /dev/null +++ b/static/images/docs/diagrams/noCacheColumn.svg @@ -0,0 +1,60 @@ + + + + + + + + + ALTER + + + TABLE + + + tableName + + ALTER + + + COLUMN + + + columnName + + NOCACHE + + + CACHE + + + dropColumn + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/regexMatch.svg b/static/images/docs/diagrams/regexMatch.svg new file mode 100644 index 00000000..50534d65 --- /dev/null +++ b/static/images/docs/diagrams/regexMatch.svg @@ -0,0 +1,57 @@ + + + + + + + + + WHERE + + + ~= + + + ( + + + column + + ; + + + regex + + ) + + + listMatch + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/reindexTable.svg b/static/images/docs/diagrams/reindexTable.svg new file mode 100644 index 00000000..fed55116 --- /dev/null +++ b/static/images/docs/diagrams/reindexTable.svg @@ -0,0 +1,62 @@ + + + + + + + + + REINDEX + + + TABLE + + + tableName + + COLUMN + + + columnName + + PARTITION + + + partitionName + + LOCK + + + EXCLUSIVE + + + renameColumn + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/renameColumn.svg b/static/images/docs/diagrams/renameColumn.svg new file mode 100644 index 00000000..602ff26b --- /dev/null +++ b/static/images/docs/diagrams/renameColumn.svg @@ -0,0 +1,52 @@ + + + + + + + + + RENAME + + + COLUMN + + + columnName + + TO + + + newColumnName + + + attachPartition + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/resumeWal.svg b/static/images/docs/diagrams/resumeWal.svg new file mode 100644 index 00000000..0e2fa5c2 --- /dev/null +++ b/static/images/docs/diagrams/resumeWal.svg @@ -0,0 +1,56 @@ + + + + + + + + + RESUME + + + WAL + + + FROM + + + TRANSACTION + + + TXN + + + sequencerTxn + + + setType + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/revokeAssume.svg b/static/images/docs/diagrams/revokeAssume.svg new file mode 100644 index 00000000..460390e7 --- /dev/null +++ b/static/images/docs/diagrams/revokeAssume.svg @@ -0,0 +1,58 @@ + + + + + + + + + REVOKE + + + ASSUME + + + SERVICE + + + ACCOUNT + + + serviceAccount + + FROM + + + entityName + + + groupBy + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/setParam.svg b/static/images/docs/diagrams/setParam.svg new file mode 100644 index 00000000..e12e7a60 --- /dev/null +++ b/static/images/docs/diagrams/setParam.svg @@ -0,0 +1,53 @@ + + + + + + + + + SET + + + PARAM + + + maxUncommittedRows + + + = + + + n + + + setParamCommitLag + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/setParamCommitLag.svg b/static/images/docs/diagrams/setParamCommitLag.svg new file mode 100644 index 00000000..a1d9358f --- /dev/null +++ b/static/images/docs/diagrams/setParamCommitLag.svg @@ -0,0 +1,75 @@ + + + + + + + + + SET + + + PARAM + + + maxUncommittedRows + + + = + + + n + + commitLag + + + = + + + n + + us + + + s + + + m + + + h + + + d + + + vacuumTable + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/squashPartitions.svg b/static/images/docs/diagrams/squashPartitions.svg new file mode 100644 index 00000000..966f8b8f --- /dev/null +++ b/static/images/docs/diagrams/squashPartitions.svg @@ -0,0 +1,49 @@ + + + + + + + + + SQUASH + + + PARTITIONS + + + tableName + + ; + + + setParam + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampExact.svg b/static/images/docs/diagrams/timestampExact.svg new file mode 100644 index 00000000..4d0155ac --- /dev/null +++ b/static/images/docs/diagrams/timestampExact.svg @@ -0,0 +1,49 @@ + + + + + + + + + WHERE + + + column + + = + + + timestamp + + + timestampPartial + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampExplicitRange.svg b/static/images/docs/diagrams/timestampExplicitRange.svg new file mode 100644 index 00000000..174f9090 --- /dev/null +++ b/static/images/docs/diagrams/timestampExplicitRange.svg @@ -0,0 +1,59 @@ + + + + + + + + + WHERE + + + timestamp + + IN + + + ( + + + lower_bound + + , + + + upper_bound + + ) + + + unionExceptIntersect + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampInSearch.svg b/static/images/docs/diagrams/timestampInSearch.svg new file mode 100644 index 00000000..0d6eb84a --- /dev/null +++ b/static/images/docs/diagrams/timestampInSearch.svg @@ -0,0 +1,61 @@ + + + + + + + + + WHERE + + + timestampColumn + + IN + + + ( + + + 'timestamp1' + + + ; + + + 'timestamp2' + + + ) + + + exactStringOrSymbolSearch + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampIntervalSearch.svg b/static/images/docs/diagrams/timestampIntervalSearch.svg new file mode 100644 index 00000000..9d0d3287 --- /dev/null +++ b/static/images/docs/diagrams/timestampIntervalSearch.svg @@ -0,0 +1,105 @@ + + + + + + + + + WHERE + + + timestampColumn + + IN + + + ' + + + timestamp + + ; + + + multiplier + + + s + + + m + + + h + + + d + + + M + + + y + + ; + + + occurrence + + + s + + + m + + + h + + + d + + + M + + + y + + ; + + + repetition + + ' + + + timestampInSearch + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampPartial.svg b/static/images/docs/diagrams/timestampPartial.svg new file mode 100644 index 00000000..668d3f55 --- /dev/null +++ b/static/images/docs/diagrams/timestampPartial.svg @@ -0,0 +1,64 @@ + + + + + + + + + WHERE + + + timestampColumn + + IN + + + yyyy + + + yyyy-MM + + + YYYY-MM-dd + + + yyyy-MM-ddThh + + + yyyy-MM-ddThh:mm + + + yyyy-MM-ddThh:mm:ss + + + timestampExplicitRange + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/timestampSearch.svg b/static/images/docs/diagrams/timestampSearch.svg new file mode 100644 index 00000000..89537ba0 --- /dev/null +++ b/static/images/docs/diagrams/timestampSearch.svg @@ -0,0 +1,66 @@ + + + + + + + + + WHERE + + + timestampColumn + + = + + + > + + + < + + + >= + + + <= + + + ' + + + timestamp + + ' + + + timestampIntervalSearch + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/typeDef.svg b/static/images/docs/diagrams/typeDef.svg new file mode 100644 index 00000000..08baa030 --- /dev/null +++ b/static/images/docs/diagrams/typeDef.svg @@ -0,0 +1,99 @@ + + + + + + + + + boolean + + + byte + + + short + + + char + + + int + + + float + + + symbol + + + CAPACITY + + + distinctValueEstimate + + CACHE + + + NOCACHE + + + inlineIndexDef + + varchar + + + string + + + long + + + date + + + timestamp + + + double + + + binary + + + long256 + + + geohash(<size>) + + + indexDef + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/unassignServiceAccount.svg b/static/images/docs/diagrams/unassignServiceAccount.svg new file mode 100644 index 00000000..b14805d2 --- /dev/null +++ b/static/images/docs/diagrams/unassignServiceAccount.svg @@ -0,0 +1,57 @@ + + + + + + + + + UNASSIGN + + + SERVICE + + + ACCOUNT + + + serviceAccount + + FROM + + + userOrGroup + + , + + + assumeServiceAccount + + + \ No newline at end of file diff --git a/static/images/docs/diagrams/whereEqDoubleProximityPrecision.svg b/static/images/docs/diagrams/whereEqDoubleProximityPrecision.svg new file mode 100644 index 00000000..3875b1e8 --- /dev/null +++ b/static/images/docs/diagrams/whereEqDoubleProximityPrecision.svg @@ -0,0 +1,62 @@ + + + + + + + + + WHERE + + + eq + + + ( + + + column + + , + + + value + + , + + + precision + + ) + + + complexWhere + + + \ No newline at end of file