Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
31be654
Adding run scripts and BookState schema
mkraice1 Jan 13, 2025
069738c
Almost done with code, have a few questions.
mkraice1 Jan 14, 2025
fdde5f7
Mostly works, but need to figure out add, remove, add, remove all in …
mkraice1 Jan 17, 2025
4af0f81
Works!
mkraice1 Jan 21, 2025
8a363d7
Some cleanup and comments
mkraice1 Jan 21, 2025
dfd4fa5
Take out prints
mkraice1 Jan 27, 2025
cb5d2a2
Take out prints
mkraice1 Jan 27, 2025
daa656d
Fixed bad rowsets. Added basic test.
mkraice1 Feb 3, 2025
b720f79
Working on new rowset error
mkraice1 Feb 6, 2025
8418f93
Aggs work and rowsets look good. Also remove order if size==0
mkraice1 Feb 10, 2025
f70b31c
version bump
mkraice1 Feb 10, 2025
7a7b59a
Faster!
mkraice1 Feb 19, 2025
fa1fac0
Update CRAK logic
mkraice1 Feb 21, 2025
79f5067
Update CRAK logic again
mkraice1 Feb 24, 2025
0d5f464
First go at passthrough cols
mkraice1 Feb 26, 2025
c6326ac
Performance improvements
mkraice1 Feb 27, 2025
7f41d35
Passthrough and snapshotting
mkraice1 Mar 3, 2025
53f5eea
Complying with checkstyle
mkraice1 Mar 6, 2025
82bfc74
Merge pull request #3 from mkraice1/pass_through
mkraice1 Mar 6, 2025
b82a0aa
Adding style.xml, runner.py, and example schema
mkraice1 Mar 6, 2025
a3817b6
Merge pull request #4 from mkraice1/pass_through
mkraice1 Mar 6, 2025
6395eda
Support chars and fixing style in test
mkraice1 Mar 11, 2025
c1d65da
Adding groovy runner
mkraice1 Mar 17, 2025
e9bd351
Using thread for snap in python
mkraice1 Mar 21, 2025
277e2e1
Merge pull request #5 from mkraice1/pass_through
mkraice1 Mar 21, 2025
3aa32cd
io in place of p
mkraice1 Nov 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions ExBook.FlatBookStates.schema
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<Table name="FlatBook" namespace="BookStates" defaultMergeFormat="DeephavenV1" storageType="NestedPartitionedOnDisk">
<Partitions keyFormula="${autobalance_by_first_grouping_column}" />

<Column name="Date" dataType="String" columnType="Partitioning" />
<Column name="SnapTime" dataType="DateTime"/>
<Column name="LastTickTime" dataType="DateTime"/>

<Column name="UpdateTimestamp" dataType="DateTime"/>
<Column name="OrderId" dataType="long"/>
<Column name="Size" dataType="int"/>


<Column name="SYMB" dataType="String"/>
<Column name="PRC" dataType="double"/>
<Column name="SIDE" dataType="int"/>
<Column name="EPOCH_TS" dataType="DateTime"/>


<Listener logFormat="1" listenerPackage="io.deephaven.crashcourse.dynamic.gen" listenerClass="LoggingDateFormat1Listener"
rethrowLoggerExceptionsAsIOExceptions="false">

<Column name="Date" intradayType="none" />
<Column name="SnapTime" dbSetter="DBTimeUtils.nanosToTime(SnapTime)"/>
<Column name="LastTickTime" dbSetter="DBTimeUtils.nanosToTime(LastTickTime)"/>

<Column name="UpdateTimestamp" dbSetter="DBTimeUtils.nanosToTime(UpdateTimestamp)"/>
<Column name="OrderId" />
<Column name="Size" />

<Column name="SYMB"/>
<Column name="PRC"/>
<Column name="SIDE"/>
<Column name="EPOCH_TS" dbSetter="DBTimeUtils.nanosToTime(EPOCH_TS)"/>

</Listener>

</Table>
17 changes: 15 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@ plugins {
id 'groovy'
id 'java-library'
id 'idea'
id 'checkstyle'
}

checkstyle {
toolVersion = '10.12.0' // Use latest stable version
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml") // Path to your custom XML
ignoreFailures = false // Set to true if you don't want the build to fail on warnings
showViolations = true // Show errors in the console
}

group 'io.deephaven'
version "1.0-${dhcVersion}"
version "1.5-${dhcVersion}"

allprojects {
repositories {
Expand All @@ -25,11 +33,16 @@ java {
}

dependencies {

implementation platform("io.deephaven:deephaven-bom:${dhcVersion}"),
"io.deephaven:deephaven-engine-table",
"it.unimi.dsi:fastutil:8.5.13"
runtimeOnly "io.deephaven:deephaven-log-to-slf4j",
'ch.qos.logback:logback-classic:1.4.5'
'ch.qos.logback:logback-classic:1.4.12'
// testImplementation("io.deephaven:deephaven-engine:0.36.1")
testImplementation("io.deephaven:deephaven-engine-table:0.36.1")
testImplementation("io.deephaven:deephaven-engine-test-utils:0.36.1")

}

jar {
Expand Down
286 changes: 286 additions & 0 deletions config/checkstyle/checkstyle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name = "Checker">
<property name="charset" value="UTF-8"/>

<property name="severity" value="warning"/>

<property name="fileExtensions" value="java, properties, xml, drl"/>
<!-- Excludes all 'module-info.java' files -->
<!-- See https://checkstyle.org/config_filefilters.html -->
<module name="BeforeExecutionExclusionFileFilter">
<property name="fileNamePattern" value="module\-info\.java$"/>
</module>
<!-- Checks for whitespace -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
<module name="FileTabCharacter">
<property name="eachLine" value="true"/>
<property name="fileExtensions" value="java"/>
</module>

<module name="LineLength">
<property name="fileExtensions" value="java"/>
<property name="max" value="150"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>
<module name="RegexpMultiline">
<property name="message" value="Multiple empty lines after this line."/>
<property name="format" value="[\r]?\n\s*[\r]?\n\s*[\r]?\n"/>
</module>
<module name="FileLength">
<property name="max" value="1000"/>
</module>
<module name="TreeWalker">
<module name="SuppressionCommentFilter"/>
<module name="OuterTypeFilename"/>
<module name="IllegalTokenText">
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
<property name="format"
value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
<property name="message"
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
</module>
<module name="AvoidEscapedUnicodeCharacters">
<property name="allowEscapesForControlCharacters" value="true"/>
<property name="allowByTailComment" value="true"/>
<property name="allowNonPrintableEscapes" value="true"/>
</module>
<module name="AvoidStarImport"/>
<module name="OneTopLevelClass"/>
<module name="NoLineWrap"/>
<module name="EmptyBlock">
<property name="option" value="TEXT"/>
<property name="tokens"
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
</module>
<module name="NeedBraces"/>
<module name="LeftCurly"/>
<module name="RightCurly">
<property name="id" value="RightCurlySame"/>
<property name="tokens"
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
LITERAL_DO"/>
</module>
<module name="RightCurly">
<property name="id" value="RightCurlyAlone"/>
<property name="option" value="alone"/>
<property name="tokens"
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
INSTANCE_INIT"/>
</module>
<module name="WhitespaceAround">
<property name="allowEmptyConstructors" value="true"/>
<property name="allowEmptyLambdas" value="true"/>
<property name="allowEmptyMethods" value="true"/>
<property name="allowEmptyTypes" value="true"/>
<property name="allowEmptyLoops" value="true"/>
<message key="ws.notFollowed"
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
<message key="ws.notPreceded"
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
</module>
<module name="OneStatementPerLine"/>
<module name="MultipleVariableDeclarations"/>
<module name="ArrayTypeStyle"/>
<module name="MissingSwitchDefault"/>
<module name="FallThrough"/>
<module name="UpperEll"/>
<module name="ModifierOrder"/>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
<module name="SeparatorWrap">
<property name="id" value="SeparatorWrapDot"/>
<property name="tokens" value="DOT"/>
<property name="option" value="nl"/>
</module>
<module name="SeparatorWrap">
<property name="id" value="SeparatorWrapComma"/>
<property name="tokens" value="COMMA"/>
<property name="option" value="EOL"/>
</module>
<module name="SeparatorWrap">
<!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/258 -->
<property name="id" value="SeparatorWrapEllipsis"/>
<property name="tokens" value="ELLIPSIS"/>
<property name="option" value="EOL"/>
</module>
<module name="SeparatorWrap">
<!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/259 -->
<property name="id" value="SeparatorWrapArrayDeclarator"/>
<property name="tokens" value="ARRAY_DECLARATOR"/>
<property name="option" value="EOL"/>
</module>
<module name="SeparatorWrap">
<property name="id" value="SeparatorWrapMethodRef"/>
<property name="tokens" value="METHOD_REF"/>
<property name="option" value="nl"/>
</module>
<module name="PackageName">
<property name="format" value="^[a-z](\.[a-z][a-z0-9]*)*$"/>
<message key="name.invalidPattern"
value="Package name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="TypeName">
<message key="name.invalidPattern"
value="Type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="MemberName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="Member name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="LambdaParameterName">
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Lambda parameter name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="CatchParameterName">
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="LocalVariableName">
<property name="tokens" value="VARIABLE_DEF"/>
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="ClassTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Class type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="MethodTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Method type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="InterfaceTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Interface type name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="NoFinalizer"/>
<module name="GenericWhitespace">
<message key="ws.followed"
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
<message key="ws.preceded"
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
<message key="ws.illegalFollow"
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
<message key="ws.notPreceded"
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
<property name="caseIndent" value="4"/>
<property name="throwsIndent" value="8"/>
<property name="lineWrappingIndentation" value="8"/>
<property name="arrayInitIndent" value="4"/>
</module>

<!--<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="false"/>
<property name="allowedAbbreviationLength" value="1"/>
</module> -->
<module name="OverloadMethodsDeclarationOrder"/>
<!--
<module name="CustomImportOrder">
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="separateLineBetweenGroups" value="true"/>
<property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
</module>-->

<module name="UnusedImports"/>
<module name="RedundantImport"/>
<module name="ImportOrder">
<property name="groups" value="*,javax,java"/>
<property name="ordered" value="true"/>
<property name="separated" value="true"/>
<property name="option" value="bottom"/>
<property name="sortStaticImportsAlphabetically" value="true"/>
</module>
<module name="SuppressionXpathSingleFilter">
<property name="checks" value="ImportOrder"/>
<property name="message" value="^'java\..*'.*"/>
</module>

<module name="MethodParamPad"/>
<module name="NoWhitespaceBefore">
<property name="tokens"
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
<property name="allowLineBreaks" value="true"/>
</module>
<module name="WhitespaceAfter"/>
<module name="ParenPad"/>
<module name="OperatorWrap">
<property name="option" value="NL"/>
<property name="tokens"
value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR,
LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
</module>
<module name="AnnotationLocation">
<property name="id" value="AnnotationLocationMostCases"/>
<property name="tokens"
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF"/>
</module>
<module name="AnnotationLocation">
<property name="id" value="AnnotationLocationVariables"/>
<property name="tokens" value="VARIABLE_DEF"/>
<property name="allowSamelineMultipleAnnotations" value="true"/>
</module>
<module name="NonEmptyAtclauseDescription"/>

<!--<module name="JavadocTagContinuationIndentation"/>
<module name="SummaryJavadoc">
<property name="forbiddenSummaryFragments"
value="^@return the *|^This method returns |^A [{]@code [a-zA-Z0-9][}]( is a )"/>
</module>
<module name="JavadocParagraph"/> -->
<module name="AtclauseOrder">
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
<property name="target"
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
</module>

<!--<module name="JavadocMethod">
<property name="scope" value="public"/>
<property name="allowMissingParamTags" value="true"/>
<property name="allowMissingThrowsTags" value="true"/>
<property name="allowMissingReturnTag" value="true"/>
<property name="minLineCount" value="2"/>
<property name="allowedAnnotations" value="Override, Test"/>
<property name="allowThrowsTagsForSubclasses" value="true"/>
</module>-->

<module name="MethodName">
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
<message key="name.invalidPattern"
value="Method name ''{0}'' must match pattern ''{1}''."/>
</module>
<module name="SingleLineJavadoc">
<property name="ignoreInlineTags" value="false"/>
</module>
<module name="EmptyCatchBlock">
<property name="exceptionVariableName" value="expected"/>
</module>
<module name="CommentsIndentation"/>
<module name="EmptyStatement"/>
<module name="EqualsAvoidNull"/>
<module name="ExplicitInitialization"/>
<module name="SimplifyBooleanExpression"/>
<module name="SimplifyBooleanReturn"/>
<module name="UnusedLocalVariable"/>
<module name="MissingOverride"/>
</module>
</module>
Loading