diff options
| -rw-r--r-- | src/main/java/com/amazon/carbonado/gen/MasterFeature.java | 3 | ||||
| -rw-r--r-- | src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java | 20 | 
2 files changed, 15 insertions, 8 deletions
diff --git a/src/main/java/com/amazon/carbonado/gen/MasterFeature.java b/src/main/java/com/amazon/carbonado/gen/MasterFeature.java index 8d7211e..90e7751 100644 --- a/src/main/java/com/amazon/carbonado/gen/MasterFeature.java +++ b/src/main/java/com/amazon/carbonado/gen/MasterFeature.java @@ -49,6 +49,9 @@ public enum MasterFeature {       */
      INSERT_CHECK_REQUIRED,
 +    /** Insert operation never checks if primary key is filled in. */
 +    INSERT_NO_CHECK_PRIMARY_PK,
 +
      /** Ensure insert operation always is in a transaction. */
      INSERT_TXN,
 diff --git a/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java b/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java index ef73a2c..791a754 100644 --- a/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java +++ b/src/main/java/com/amazon/carbonado/gen/MasterStorableGenerator.java @@ -344,8 +344,9 @@ public final class MasterStorableGenerator<S extends Storable> {          // Add required protected doTryInsert method.
          {
              if (mFeatures.contains(MasterFeature.PARTITIONING) ||
 -                mFeatures.contains(MasterFeature.INSERT_SEQUENCES)) {
 -
 +                mFeatures.contains(MasterFeature.INSERT_SEQUENCES) ||
 +                mFeatures.contains(MasterFeature.INSERT_NO_CHECK_PRIMARY_PK))
 +            {
                  MethodInfo mi = mClassFile.addMethod
                      (Modifiers.PROTECTED,
                       StorableGenerator.CHECK_PK_FOR_INSERT_METHOD_NAME,
 @@ -441,14 +442,17 @@ public final class MasterStorableGenerator<S extends Storable> {                          ordinal++;
                      }
 -                    // We've tried our best to fill in missing values, now run the
 -                    // original check method.
 +                    // We've tried our best to fill in missing values, so now
 +                    // run the original check method, if required to.
 +                }
 +
 +                if (!mFeatures.contains(MasterFeature.INSERT_NO_CHECK_PRIMARY_PK)) {
 +                    b.loadThis();
 +                    b.invokeSuper(mClassFile.getSuperClassName(),
 +                                  StorableGenerator.CHECK_PK_FOR_INSERT_METHOD_NAME,
 +                                  null, null);
                  }
 -                b.loadThis();
 -                b.invokeSuper(mClassFile.getSuperClassName(),
 -                              StorableGenerator.CHECK_PK_FOR_INSERT_METHOD_NAME,
 -                              null, null);
                  b.returnVoid();
              }
  | 
