"insert into table default values" is invalid MySQL syntax (#1978)

* ADD: failing testcase for "insert into table default values;" is invalid MySql syntax

* FIX: "insert into table default values;" is invalid MySql syntax
This commit is contained in:
Jonas Pöhler
2020-03-23 22:09:28 +13:00
committed by GitHub
parent 896aed0b38
commit c2fb23a25c
4 changed files with 137 additions and 1 deletions
@@ -0,0 +1,48 @@
package org.tests.defaultvalues;
import io.ebean.annotation.Draft;
import io.ebean.annotation.Draftable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.List;
@Entity
@Draftable
public class DefaultsModel {
@Id
Integer id;
@Draft
boolean draft;
@OneToMany(cascade = CascadeType.ALL)
List<ReferencedDefaultsModel> relatedModels;
public Integer getId() {
return id;
}
public void setId(final Integer id) {
this.id = id;
}
public List<ReferencedDefaultsModel> getRelatedModels() {
return relatedModels;
}
public void setRelatedModels(final List<ReferencedDefaultsModel> relatedModels) {
this.relatedModels = relatedModels;
}
public boolean isDraft() {
return draft;
}
public void setDraft(final boolean draft) {
this.draft = draft;
}
}
@@ -0,0 +1,44 @@
package org.tests.defaultvalues;
import io.ebean.annotation.Draft;
import io.ebean.annotation.Draftable;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
@Draftable
public class ReferencedDefaultsModel {
@Id
Integer id;
String name;
@Draft
boolean draft;
public Integer getId() {
return id;
}
public void setId(final Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public boolean isDraft() {
return draft;
}
public void setDraft(final boolean draft) {
this.draft = draft;
}
}
@@ -0,0 +1,36 @@
package org.tests.defaultvalues;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import org.ebeantest.LoggedSqlCollector;
import org.junit.Test;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
public class TestDefaults extends BaseTestCase {
@Test
public void testInsertDefaultValues() {
final DefaultsModel main = new DefaultsModel();
for (int i = 0; i < 5; i++) {
final ReferencedDefaultsModel ref = new ReferencedDefaultsModel();
ref.setName("r" + i);
main.getRelatedModels().add(ref);
}
LoggedSqlCollector.start();
Ebean.save(main);
final List<String> current = LoggedSqlCollector.current();
assertThat(current).isNotEmpty();
if (isMySql()) {
assertThat(current.get(0)).contains("insert into defaults_model_draft values (default);");
} else {
assertThat(current.get(0)).contains("insert into defaults_model_draft default values;");
}
}
}