[DBFLUTE-308] [replace-schema]コメントアウトしたSQLが実行されてしまう Created: 2008-08-14  Updated: 2008-08-22  Resolved: 2008-08-20

Status: Closed
Project: DBFlute
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Minor
Reporter: taktos Assignee: jflute
Resolution: Fixed Votes: 0
Labels: None
Environment:

Java
Windows XP SP3 and CentOS 5.2



 Description   

replace-schemaで実行されるSQLファイルにてコメントアウトしたSQL文が実行されてしまいます。
ただ、コメントアウトされたままのSQL文が実行されているため、例外が発生するので、スキーマに影響はありません。
例外が出た後もそのまま処理が続行されるので、ログにエラーが記録されるだけで実質的な問題は出ません。

replace-schema.sql
--ALTER TABLE EMP ADD CONSTRAINT PK_EMP
--  PRIMARY KEY (EMP_ID)
--;
dbflute.log
2008-08-13 11:34:04,078 [main] INFO  (DfSqlFileRunnerBase#traceSql():145) - --ALTER TABLE EMP ADD CONSTRAINT PK_EMP
--	PRIMARY KEY (EMP_ID)
--
2008-08-13 11:34:04,094 [main] WARN  (DfSqlFileRunnerExecute#execSQL():44) - Failed to execute: --ALTER TABLE EMP ADD CONSTRAINT PK_EMP
--	PRIMARY KEY (EMP_ID)
--
java.sql.SQLException: SQLの型が無効です。
	at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
	at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:227)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:439)
	at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:65)
	at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:936)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
	at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1770)
	at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1739)
	at oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:298)
	at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileRunnerExecute.execSQL(DfSqlFileRunnerExecute.java:37)
	at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileRunnerBase.runTransaction(DfSqlFileRunnerBase.java:90)
	at org.seasar.dbflute.helper.jdbc.sqlfile.DfSqlFileFireMan.execute(DfSqlFileFireMan.java:34)
	at org.seasar.dbflute.task.DfReplaceSchemaTask.createSchema(DfReplaceSchemaTask.java:171)
	at org.seasar.dbflute.task.DfReplaceSchemaTask.doExecute(DfReplaceSchemaTask.java:82)
	at org.seasar.dbflute.task.bs.DfAbstractTask.execute(DfAbstractTask.java:72)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
	at org.apache.tools.ant.Main.runBuild(Main.java:698)
	at org.apache.tools.ant.Main.startAnt(Main.java:199)
	at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
	at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
2008-08-13 11:34:04,110 [main] WARN  (DfSqlFileRunnerExecute#execSQL():45) - 


 Comments   
Comment by jflute [ 2008-08-20 ]

Skipした場合はログを出力するようにした。

Comment by jflute [ 2008-08-20 ]

全てのLineが--で始まってる、もしくは、(trimして)空文字であれば、
それはLineコメントのみのSQLと判定することでできた(確認済)。

Comment by jflute [ 2008-08-20 ]

丁寧なフィードバックありがとうございます。

「コメントだけの場合は実行しない」という判定を入れられればと思います。
が、「コメントだけ」の判定がうまくいくか!?!?

Generated at Mon Dec 15 11:17:50 JST 2025 using Jira 10.6.1#10060001-sha1:a6461e220f274b29ced7ac9295492f2465fe5ef5.