diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index c57d157308a..2f5755f9fec 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -89,7 +89,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc ../sql/sql_trigger.cc ../sql/sql_udf.cc ../sql/sql_union.cc ../sql/sql_update.cc ../sql/sql_view.cc ../sql/sql_profile.cc ../sql/gcalc_tools.cc ../sql/gcalc_slicescan.cc - ../sql/strfunc.cc ../sql/table.cc ../sql/thr_malloc.cc + ../sql/strfunc.cc ../sql/table.cc ../sql/thr_malloc.cc ../sql/sql_rownum.cc ../sql/sql_time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc ../sql/partition_info.cc ../sql/sql_connect.cc ../sql/scheduler.cc ../sql/sql_audit.cc diff --git a/mysql-test/main/qdb_oracle.result b/mysql-test/main/qdb_oracle.result index 3f7a2723eb7..f9faab21639 100644 --- a/mysql-test/main/qdb_oracle.result +++ b/mysql-test/main/qdb_oracle.result @@ -38,6 +38,6 @@ date_format(sysdate, '%y-%m-%d') xx-xx-xx SELECT date_format(sysdate(), '%y-%m-%d') as current from DUAL; current -20-08-24 +xx-xx-xx DROP TABLE t_not_null; DROP TABLE t_null; diff --git a/mysql-test/main/qdb_oracle.test b/mysql-test/main/qdb_oracle.test index 2ff31c53ec1..8816f4b61c2 100644 --- a/mysql-test/main/qdb_oracle.test +++ b/mysql-test/main/qdb_oracle.test @@ -41,6 +41,7 @@ SELECT sysdate() as current FROM DUAL; SELECT sysdate(), c1 FROM t_null; --replace_regex /[0-9]/x/ SELECT date_format(sysdate, '%y-%m-%d'); +--replace_regex /[0-9]/x/ SELECT date_format(sysdate(), '%y-%m-%d') as current from DUAL; DROP TABLE t_not_null; diff --git a/mysql-test/main/subselect.result b/mysql-test/main/subselect.result index 1ee4718ef10..992e85e43bc 100644 --- a/mysql-test/main/subselect.result +++ b/mysql-test/main/subselect.result @@ -5194,7 +5194,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5314,9 +5316,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/subselect.test b/mysql-test/main/subselect.test index f6333c22684..2697408c0f1 100644 --- a/mysql-test/main/subselect.test +++ b/mysql-test/main/subselect.test @@ -4311,7 +4311,7 @@ SELECT * FROM (SELECT 1 a UNION SELECT 1 a ORDER BY a LIMIT 1) t1a; # aliases after. # SELECT * FROM t1 JOIN (SELECT 1 UNION SELECT 1) alias ON 1; ---error ER_PARSE_ERROR +# --error ER_PARSE_ERROR SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; --error ER_PARSE_ERROR SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; @@ -4398,9 +4398,9 @@ SELECT ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1; SELECT ( SELECT 1 UNION SELECT 1 UNION SELECT 1 ); SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ---error ER_PARSE_ERROR +#--error ER_PARSE_ERROR SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); ---error ER_PARSE_ERROR +#--error ER_PARSE_ERROR SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; SELECT * FROM ( SELECT 1 UNION SELECT 1 UNION SELECT 1 ) a; diff --git a/mysql-test/main/subselect_no_exists_to_in.result b/mysql-test/main/subselect_no_exists_to_in.result index 1436f98d9f8..684d4b39555 100644 --- a/mysql-test/main/subselect_no_exists_to_in.result +++ b/mysql-test/main/subselect_no_exists_to_in.result @@ -5196,7 +5196,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5316,9 +5318,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/subselect_no_mat.result b/mysql-test/main/subselect_no_mat.result index 8100c1da7e5..f73b26e0977 100644 --- a/mysql-test/main/subselect_no_mat.result +++ b/mysql-test/main/subselect_no_mat.result @@ -5194,7 +5194,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5314,9 +5316,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/subselect_no_opts.result b/mysql-test/main/subselect_no_opts.result index 86c89f9bd5f..28edb4ceb08 100644 --- a/mysql-test/main/subselect_no_opts.result +++ b/mysql-test/main/subselect_no_opts.result @@ -5190,7 +5190,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5310,9 +5312,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/subselect_no_scache.result b/mysql-test/main/subselect_no_scache.result index 5dc8040698f..61be4e7230d 100644 --- a/mysql-test/main/subselect_no_scache.result +++ b/mysql-test/main/subselect_no_scache.result @@ -5200,7 +5200,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5320,9 +5322,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/subselect_no_semijoin.result b/mysql-test/main/subselect_no_semijoin.result index f9bbf2e00c4..034ad537333 100644 --- a/mysql-test/main/subselect_no_semijoin.result +++ b/mysql-test/main/subselect_no_semijoin.result @@ -5190,7 +5190,9 @@ a 1 1 1 2 1 SELECT * FROM t1 JOIN ((SELECT 1 UNION SELECT 1)) ON 1; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ON 1' at line 1 +a 1 +1 1 +2 1 SELECT * FROM t1 JOIN (t1 t1a UNION SELECT 1) ON 1; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNION SELECT 1) ON 1' at line 1 SELECT * FROM t1 JOIN ((t1 t1a UNION SELECT 1)) ON 1; @@ -5310,9 +5312,11 @@ SELECT ((SELECT 1 UNION SELECT 1 UNION SELECT 1)); ((SELECT 1 UNION SELECT 1 UNION SELECT 1)) 1 SELECT * FROM ( SELECT 1 UNION ( SELECT 1 UNION SELECT 1 ) ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ); -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 +1 +1 SELECT * FROM ( ( SELECT 1 UNION SELECT 1 ) UNION SELECT 1 ) a; 1 1 diff --git a/mysql-test/main/wuzicangku.result b/mysql-test/main/wuzicangku.result new file mode 100644 index 00000000000..5482410e92b --- /dev/null +++ b/mysql-test/main/wuzicangku.result @@ -0,0 +1,1134 @@ +set sql_mode='oracle'; +set optimizer_switch='derived_merge=off'; +set optimizer_switch='condition_pushdown_for_derived=off'; +CREATE TABLE "CASE1"( +"ID" VARCHAR2(64), +"ORG_NAME" VARCHAR2(255), +"ORG_CODE" VARCHAR2(25), +"DEP_NAME" VARCHAR2(255), +"DEP_CODE" VARCHAR2(100), +"OPT_NAME" VARCHAR2(100), +"OPT_ID_NUM" VARCHAR2(100), +"OPT_PHONE" VARCHAR2(100), +"CREATE_TIME" VARCHAR2(100), +"MODIFY_TIME" VARCHAR2(100), +"VISIABLE" VARCHAR2(2), +"MODIFYE" VARCHAR2(100), +"MODIE" VARCHAR2(100), +"MOTIME" VARCHAR2(100) +); +CREATE TABLE "DEPARTMENT"( +"ID" VARCHAR2(64) NOT NULL ENABLE, +"ORG_NAME" VARCHAR2(255), +"ORG_CODE" VARCHAR2(25), +"DEP_NAME" VARCHAR2(255), +"DEP_CODE" VARCHAR2(25), +"OPT_NAME" VARCHAR2(30), +"OPT_ID_NUM" VARCHAR2(18), +"OPT_PHONE" VARCHAR2(11), +"CREATE_TIME" TIMESTAMP(6), +"MODIFY_TIME" TIMESTAMP(6), +"VISIABLE" VARCHAR2(2) +); +ALTER TABLE "DEPARTMENT" ADD CONSTRAINT "PK_DEPARTMENT" PRIMARY KEY("ID") ; +Warnings: +Warning 1280 Name 'PK_DEPARTMENT' ignored for PRIMARY key. +CREATE TABLE "DEPT"( +"ID" VARCHAR2(32), +"DEPT_NAME" VARCHAR2(64), +"DEPT_TEL" VARCHAR2(64) +); +CREATE TABLE "PERSON"( +"ID" VARCHAR2(32) NOT NULL ENABLE, +"NAME" VARCHAR2(12), +"PERSON_ID" VARCHAR2(50), +"SEX" VARCHAR2(2), +"IDENTITY_NUM" VARCHAR2(18), +"PHONE" VARCHAR2(11), +"PHOTO" CLOB, +"ORG_NAME" VARCHAR2(50), +"ORG_CODE" VARCHAR2(25), +"DEP_NAME" VARCHAR2(50), +"DEP_CODE" VARCHAR2(25), +"CREATE_TIME" TIMESTAMP(6), +"MODIFY_TIME" TIMESTAMP(6), +"VISIABLE" VARCHAR2(2) +); +ALTER TABLE "PERSON" ADD CONSTRAINT "PK_PERSON" PRIMARY KEY("ID") ; +Warnings: +Warning 1280 Name 'PK_PERSON' ignored for PRIMARY key. +CREATE TABLE "PERSON_DIC"( +"PERSON_ID" VARCHAR2(40), +"IDENTITY" VARCHAR2(20), +"IDENTITY_CODE" VARCHAR2(10), +"NAME" VARCHAR2(20), +"IDENTITY_NUM" VARCHAR2(18), +"SIGN_LOGO" VARCHAR2(10) +); +CREATE TABLE "SIGN_OPER"( +"ID" VARCHAR2(32) NOT NULL ENABLE, +"RECORD_ID" VARCHAR2(32), +"SIGN_PHOTO" CLOB, +"SIGNATURE" VARCHAR2(5), +"STATUS" VARCHAR2(5), +"CREATE_TIME" TIMESTAMP(6), +"MODIFY_TIME" TIMESTAMP(6), +"VISIABLE" VARCHAR2(2) +); +ALTER TABLE "SIGN_OPER" ADD CONSTRAINT "PK_SIGN_OPER" PRIMARY KEY("ID") ; +Warnings: +Warning 1280 Name 'PK_SIGN_OPER' ignored for PRIMARY key. +CREATE TABLE "TBL_ALLOT_DETAIL"( +"ALLOT_NUM" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"SIZE_TYPE" VARCHAR2(16), +"UNIT" VARCHAR2(16), +"ALLOT_AMOUNT" VARCHAR2(16), +"PRICE" VARCHAR2(16), +"TOTAL_PRICE" VARCHAR2(32), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_ALLOT_MASTER"( +"TUNEOUT_DEPT_NAME" VARCHAR2(64), +"TUNEIN_DEPT_NAME" VARCHAR2(64), +"TUNEOUT_DEPOT_NAME" VARCHAR2(64), +"TUNEIN_DELIVERY_LOC" VARCHAR2(64), +"ALLOT_NUM" VARCHAR2(32) NOT NULL ENABLE, +"PERSON_TEL1" VARCHAR2(64), +"PERSON_TEL2" VARCHAR2(64), +"AGENT" VARCHAR2(16), +"AGENT_ID" VARCHAR2(16), +"APPROVER" VARCHAR2(16), +"APPROVER_ID" VARCHAR2(16), +"PRINT_DATE" VARCHAR2(32), +"DEPT_NAME" VARCHAR2(64), +"DEPT_SIGN_NAME" VARCHAR2(128), +"PDF_URL" VARCHAR2(128), +"IS_PDF" VARCHAR2(16), +"INSERT_DATE" VARCHAR2(32) +); +ALTER TABLE "TBL_ALLOT_MASTER" ADD CONSTRAINT "PK_TBL_ALLOT_MASTER" PRIMARY KEY("ALLOT_NUM") ; +Warnings: +Warning 1280 Name 'PK_TBL_ALLOT_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_BORROWING_MASTER"( +"BORROW_DEPT" VARCHAR2(32), +"BORROW_CODE" VARCHAR2(64) NOT NULL ENABLE, +"BORROW_EXPLAIN" VARCHAR2(64), +"PLAN_RET_DATE" VARCHAR2(32), +"BORROWER" VARCHAR2(16), +"BORROWER_ID" VARCHAR2(16), +"AGENCY_DEPT" VARCHAR2(32), +"AGENCY_DEPT_CODE" VARCHAR2(16), +"MANAGE_DEPT" VARCHAR2(32), +"MANAGE_DEPT_CODE" VARCHAR2(16), +"PRINTING_DATE" VARCHAR2(32), +"BRANCHED_LEADER" VARCHAR2(16), +"BRANCHED_LEADER_ID" VARCHAR2(16), +"SEND_RECORD" VARCHAR2(128), +"STOREKEEPER" VARCHAR2(16), +"STOREKEEPER_ID" VARCHAR2(16), +"RET_RECORD" VARCHAR2(128), +"OUT_AGENT" VARCHAR2(16), +"OUT_AGENT_ID" VARCHAR2(16), +"DEPT_NAME" VARCHAR2(32), +"BORROWER1" VARCHAR2(16), +"TEL1" VARCHAR2(32), +"ID_CODE1" VARCHAR2(64), +"BORROWER2" VARCHAR2(16), +"TEL2" VARCHAR2(32), +"ID_CODE2" VARCHAR2(64), +"BORROWER3" VARCHAR2(16), +"TEL3" VARCHAR2(32), +"ID_CODE3" VARCHAR2(64), +"DEPT_SIGN_NAME" VARCHAR2(16), +"IS_PDF" VARCHAR2(6) NOT NULL ENABLE, +"PDF_URL" VARCHAR2(128), +"INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE, +"MAT_DEPT" VARCHAR2(32), +"MAT_DEPT_CODE" VARCHAR2(32), +"BUTXT" VARCHAR2(128) +); +ALTER TABLE "TBL_BORROWING_MASTER" ADD CONSTRAINT "PK_TBL_BORROWING_MASTER" PRIMARY KEY("BORROW_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_BORROWING_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_BORROW_DETAIL"( +"BORROW_CODE" VARCHAR2(64) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(64), +"MAT_DESC" VARCHAR2(256), +"UNIT" VARCHAR2(64), +"AMOUNT" VARCHAR2(64), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_OLD_KEEP_IN_DETAIL"( +"CODE" VARCHAR2(60), +"MAT_CODE" VARCHAR2(128), +"MAT_DESC" VARCHAR2(60), +"MEASURE_UNIT" VARCHAR2(4), +"AMOUNT" VARCHAR2(100), +"NO_TAX_PRICE" VARCHAR2(100), +"NO_TAX_TOTAL_PRICE" VARCHAR2(100), +"PLAN_USER_TIME" VARCHAR2(64), +"REMARKS" VARCHAR2(128), +"PLANT" VARCHAR2(8), +"ENTITY_ID" VARCHAR2(100), +"TYPE" VARCHAR2(100), +"CAPITAL_CODE" VARCHAR2(24), +"VOC_ROW_CODE" VARCHAR2(8), +"COMPLETION_CASE" VARCHAR2(100) +); +CREATE TABLE "TBL_OLD_KEEP_IN_MASTER"( +"CODE" VARCHAR2(60) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(60), +"MAT_FACT_SHEET" VARCHAR2(128), +"AGENT" VARCHAR2(16), +"AGENT_ID" VARCHAR2(16), +"APPROVER" VARCHAR2(16), +"APPROVER_ID" VARCHAR2(16), +"MAT_DEPT" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(16), +"IS_PDF" VARCHAR2(6), +"PDF_URL" VARCHAR2(120), +"INSERT_DATE" DATE, +"VOU_YEAR" VARCHAR2(16), +"PRO_NAME" VARCHAR2(100), +"HAND_OVER_DEPT" VARCHAR2(100), +"REPORTING_DATE" VARCHAR2(16), +"HAND_OVER1" VARCHAR2(20), +"HAND_OVER2" VARCHAR2(20), +"HAND_OVER3" VARCHAR2(20), +"TEL1" VARCHAR2(30), +"TEL2" VARCHAR2(30), +"TEL3" VARCHAR2(30), +"CONNECT_SITE" VARCHAR2(100), +"CONNECT_DATE" VARCHAR2(16), +"AGENT_PIC" CLOB, +"APPROVER_PIC" CLOB, +"DEPT_PIC" CLOB, +"MAT_DEPT_ID" VARCHAR2(16), +"HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_OLD_KEEP_IN_MASTER" ADD PRIMARY KEY("CODE") ; +CREATE TABLE "TBL_OLD_KEEP_OUT_APPLY_DETAIL"( +"OID_MAT_OUT_CODE" VARCHAR2(60), +"MAT_CODE" VARCHAR2(18), +"MAT_DESC" VARCHAR2(60), +"MEASURE_UNIT" VARCHAR2(4), +"NO_TAX_PRICE" VARCHAR2(100), +"NO_TAX_TOTAL_PRICE" VARCHAR2(100), +"AMOUNT" VARCHAR2(16), +"PLAN_USER_TIME" VARCHAR2(64), +"REMARKS" VARCHAR2(128), +"OID_MAT_ROW_CODE" VARCHAR2(60) +); +CREATE TABLE "TBL_OLD_KEEP_OUT_APPLY_MASTER"( +"OID_MAT_OUT_CODE" VARCHAR2(60) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(60), +"MAT_FACT_SHEET" VARCHAR2(128), +"AGENT" VARCHAR2(16), +"AGENT_ID" VARCHAR2(16), +"APPROVER" VARCHAR2(16), +"APPROVER_ID" VARCHAR2(16), +"MAT_DEPT" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(16), +"IS_PDF" VARCHAR2(6), +"PDF_URL" VARCHAR2(120), +"INSERT_DATE" DATE, +"HANDOVER_DEPT" VARCHAR2(100), +"RECYCLER" VARCHAR2(100), +"HANDOVER1_PSON" VARCHAR2(100), +"TEL1" VARCHAR2(30), +"HANDOVER2_PSON" VARCHAR2(100), +"TEL2" VARCHAR2(30), +"HANDOVER3_PSON" VARCHAR2(100), +"TEL3" VARCHAR2(30), +"REPORT_DATE" VARCHAR2(64), +"CREATE_DATE" VARCHAR2(64), +"APPROVAL_DEPT" VARCHAR2(16), +"AGENT_PIC" CLOB, +"APPROVER_PIC" CLOB, +"DEPT_PIC" CLOB, +"MAT_DEPT_ID" VARCHAR2(16), +"HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_OLD_KEEP_OUT_APPLY_MASTER" ADD PRIMARY KEY("OID_MAT_OUT_CODE") ; +CREATE TABLE "TBL_OLD_KEEP_OUT_DETAIL"( +"MBLNR" VARCHAR2(20), +"SELL_CODE" VARCHAR2(60), +"OLD_MAT_ROW_CODE" VARCHAR2(40), +"MAT_CODE" VARCHAR2(18), +"MAT_DESC" VARCHAR2(60), +"MEASURE_UNIT" VARCHAR2(4), +"BATCH_NUM" VARCHAR2(16), +"AMOUNT" VARCHAR2(100), +"STOCK_SITE" VARCHAR2(60), +"REMARKS" VARCHAR2(60), +"OLD_MAT_CODE" VARCHAR2(60), +"COMPLETION_CASE" VARCHAR2(60) +); +CREATE TABLE "TBL_OLD_STO_IN_MASTER"( +"OLD_MAT_IN_CODE" VARCHAR2(64) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(64), +"IN_STORAGE_TYPE" VARCHAR2(64), +"COMPANY_CODE" VARCHAR2(128), +"PLANT_CODE" VARCHAR2(128), +"CREATE_DATE" VARCHAR2(16), +"MBLNR_PIC" CLOB, +"HEAD_TEXT" VARCHAR2(128), +"MOVE_TYPE" VARCHAR2(64), +"ENTRUST_APPLY_NUM" VARCHAR2(64), +"WAREHOUSING_DESC" VARCHAR2(128), +"CREATE_PSON_ID" VARCHAR2(16), +"CREATE_PSON" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"SUPERVISOR_AUDIT_ID" VARCHAR2(16), +"SUPERVISOR_AUDIT" VARCHAR2(16), +"DELIVERYMAN_ID" VARCHAR2(16), +"DELIVERYMAN" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(16), +"IS_PDF" VARCHAR2(6), +"PDF_URL" VARCHAR2(120), +"INSERT_DATE" DATE, +"CREATE_PSON_PIC" CLOB, +"STORE_KEEPER_PIC" CLOB, +"SUPERVISOR_AUDIT_PIC" CLOB, +"DELIVERYMAN_PIC" CLOB, +"MBLNR" VARCHAR2(32) +); +ALTER TABLE "TBL_OLD_STO_IN_MASTER" ADD PRIMARY KEY("OLD_MAT_IN_CODE") ; +CREATE TABLE "TBL_PICK_OUT_DETAIL"( +"PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, +"RESERVED_NUM" VARCHAR2(16), +"ROW_NUM" VARCHAR2(16), +"MOVE_TYPE" VARCHAR2(16), +"ACCOUNT_ALLOT" VARCHAR2(64), +"MAT_CODE" VARCHAR2(18), +"MAT_DESC" VARCHAR2(64), +"BATCH_NUM" VARCHAR2(16), +"DEMAND_DATE" VARCHAR2(16), +"MEASURE_UNIT" VARCHAR2(16), +"RESERVED_AMOUNT" VARCHAR2(16), +"PLAN_GET_AMOUNT" VARCHAR2(16), +"PICK_ROW_NUM" VARCHAR2(16), +"STOCK_SITE" VARCHAR2(18), +"WBS_ELEMENTS" VARCHAR2(64), +"WBS_DESC" VARCHAR2(128), +"DEMAND_AMOUNT" VARCHAR2(16) +); +CREATE TABLE "TBL_PICK_OUT_MASTER"( +"PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(60), +"DEMAND_DEPT" VARCHAR2(32), +"PRO_CODE" VARCHAR2(128), +"WORK_ORDER" VARCHAR2(128), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"APPROVER_ID" VARCHAR2(16), +"APPROVER" VARCHAR2(16), +"RATIFY_ID" VARCHAR2(16), +"RATIFY" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"PDF_URL" VARCHAR2(120), +"IS_PDF" VARCHAR2(6) NOT NULL ENABLE, +"INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE, +"DELIVER_WAY" VARCHAR2(16), +"RECEIPTOR1" VARCHAR2(40), +"RECEIPTOR1_TEL" VARCHAR2(22), +"RECEIPTOR1_CODE" VARCHAR2(36), +"RECEIPTOR2" VARCHAR2(40), +"RECEIPTOR2_TEL" VARCHAR2(22), +"RECEIPTOR2_CODE" VARCHAR2(36), +"RECEIPTOR3" VARCHAR2(22), +"RECEIPTOR3_TEL" VARCHAR2(40), +"RECEIPTOR3_CODE" VARCHAR2(36), +"REPORT_DATE" VARCHAR2(16), +"IS_OWNER" VARCHAR2(16), +"PICK_WAY" VARCHAR2(16), +"PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_PICK_OUT_MASTER" ADD CONSTRAINT "PK_TBL_PICK_OUT_MASTER" PRIMARY KEY("PICK_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_PICK_OUT_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_RE_MA_DIS_IN_APPLY_DETAIL"( +"CODE" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(16), +"RECEIVE_AMOUNT" VARCHAR2(16), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_RE_MA_DIS_IN_APPLY_MASTER"( +"CODE" VARCHAR2(32) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(32), +"MAT_DEPT_ID" VARCHAR2(32), +"MAT_DEPT" VARCHAR2(64), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"AUDITER_ID" VARCHAR2(16), +"AUDITER" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"PDF_URL" VARCHAR2(128), +"IS_PDF" VARCHAR2(16), +"INSERT_DATE" VARCHAR2(32), +"HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_RE_MA_DIS_IN_APPLY_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_DIS_IN_APPLY_MAST" PRIMARY KEY("CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_RE_MA_DIS_IN_APPLY_MAST' ignored for PRIMARY key. +CREATE TABLE "TBL_RE_MA_DIS_IN_DETAIL"( +"MBLNR" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(32), +"BATCH_NUM" VARCHAR2(16), +"AMOUNT" VARCHAR2(16), +"STOCK_SITE" VARCHAR2(64), +"REMARKS" VARCHAR2(128), +"RET_MAT_OUT_CODE" VARCHAR2(32), +"RET_MAT_OUT_ROW_CODE" VARCHAR2(16) +); +CREATE TABLE "TBL_RE_MA_DIS_IN_MASTER"( +"MBLNR" VARCHAR2(32) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(64), +"PUT_STORAGE_TYPE" VARCHAR2(32), +"COMPANY_CODE" VARCHAR2(64), +"PLANT_CODE" VARCHAR2(64), +"HEAD_TEXT" VARCHAR2(64), +"MOVE_TYPE" VARCHAR2(64), +"REQ_CODE" VARCHAR2(32), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"PICKER" VARCHAR2(16), +"PICKER_ID" VARCHAR2(32), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"IS_PDF" VARCHAR2(16), +"PDF_URL" VARCHAR2(64), +"INSERT_DATE" VARCHAR2(32), +"RET_MAT_OUT_CODE" VARCHAR2(32) +); +ALTER TABLE "TBL_RE_MA_DIS_IN_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_DIS_IN_MASTER" PRIMARY KEY("MBLNR") ; +Warnings: +Warning 1280 Name 'PK_TBL_RE_MA_DIS_IN_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_RE_MA_STO_IN_APPLY_DETAIL"( +"CODE_ID" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(16), +"NO_TAX_PRICE" VARCHAR2(16), +"NO_TAX_TOTAL_PRICE" VARCHAR2(16), +"AMOUNT" VARCHAR2(16), +"PLAN_USER_TIME" VARCHAR2(32), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_RE_MA_STO_IN_APPLY_MASTER"( +"CODE_ID" VARCHAR2(32) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(32), +"MAT_FACT_SHEET" VARCHAR2(128), +"AGENT" VARCHAR2(16), +"AGENT_ID" VARCHAR2(16), +"APPROVER" VARCHAR2(16), +"APPROVER_ID" VARCHAR2(16), +"MAT_DEPT_ID" VARCHAR2(32), +"MAT_DEPT" VARCHAR2(32), +"PRINTING_DATE" VARCHAR2(32), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PDF_URL" VARCHAR2(128), +"IS_PDF" VARCHAR2(16), +"INSERT_DATE" VARCHAR2(32), +"TEL1" VARCHAR2(16), +"APPLICANT1" VARCHAR2(16), +"ID_CODE1" VARCHAR2(32), +"TEL2" VARCHAR2(16), +"APPLICANT2" VARCHAR2(16), +"ID_CODE2" VARCHAR2(32), +"APPLICANT3" VARCHAR2(16), +"TEL3" VARCHAR2(16), +"ID_CODE3" VARCHAR2(32), +"DEPT_PIC" CLOB, +"AGENT_PIC" CLOB, +"APPROVER_PIC" CLOB, +"HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_RE_MA_STO_IN_APPLY_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_STO_IN_APPLY__MAS" PRIMARY KEY("CODE_ID") ; +Warnings: +Warning 1280 Name 'PK_TBL_RE_MA_STO_IN_APPLY__MAS' ignored for PRIMARY key. +CREATE TABLE "TBL_RE_MA_STO_IN_DETAIL"( +"MBLNR" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(16), +"AMOUNT" VARCHAR2(16), +"STOCK_SITE" VARCHAR2(64), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_RE_MA_STO_IN_MASTER"( +"MBLNR" VARCHAR2(32) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(64), +"IN_STORAGE_TYPE" VARCHAR2(32), +"COMPANY_CODE" VARCHAR2(32), +"VOU_DATE" VARCHAR2(32), +"PLANT_CODE" VARCHAR2(64), +"HEAD_TEXT" VARCHAR2(64), +"MOVE_TYPE" VARCHAR2(64), +"ENTRUST_CODE" VARCHAR2(32), +"WAREHOUSING_DESC" VARCHAR2(64), +"DELIVERER_ID" VARCHAR2(16), +"DELIVERER" VARCHAR2(16), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"SUPERVISOR_AUDIT_ID" VARCHAR2(16), +"SUPERVISOR_AUDIT" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"PDF_URL" VARCHAR2(128), +"IS_PDF" VARCHAR2(16) NOT NULL ENABLE, +"INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE +); +ALTER TABLE "TBL_RE_MA_STO_IN_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_STO_IN_MASTER" PRIMARY KEY("MBLNR") ; +Warnings: +Warning 1280 Name 'PK_TBL_RE_MA_STO_IN_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_STOCK_TAKING_DETAIL"( +"INVENTORY_CODE" VARCHAR2(32) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(128), +"BATCH_NUM" VARCHAR2(16), +"AMOUNT" VARCHAR2(16), +"UNIT" VARCHAR2(32), +"STOCK_TYPE" VARCHAR2(16), +"STOCK_TYPE_CODE" VARCHAR2(32), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_STOCK_TAKING_MASTER"( +"INVENTORY_VOU_NUM" VARCHAR2(32), +"ACCT_YEAR" VARCHAR2(16), +"PLAN_INVENTORY_DATE" VARCHAR2(32), +"INVENTORY_CODE" VARCHAR2(32) NOT NULL ENABLE, +"PLANT_CODE" VARCHAR2(32), +"PLANT_NAME" VARCHAR2(64), +"STOCK_SITE_CODE" VARCHAR2(128), +"STOCK_SITE_NAME" VARCHAR2(128), +"ORIGINATOR" VARCHAR2(16), +"ORIGINATOR_ID" VARCHAR2(16), +"VOU_DATE" VARCHAR2(32), +"INVENTORY_PERSON" VARCHAR2(16), +"INVENTORY_PERSON_ID" VARCHAR2(16), +"INVENTORY_DATE" VARCHAR2(32), +"RE_CHECKER" VARCHAR2(16), +"RE_CHECKER_ID" VARCHAR2(16), +"RE_CHECK_DATE" VARCHAR2(32), +"DEPT_SIGN_NAME" VARCHAR2(120), +"PRINTING_DATE" VARCHAR2(32), +"PDF_URL" VARCHAR2(120), +"IS_PDF" VARCHAR2(8) NOT NULL ENABLE, +"INSERT_DATE" VARCHAR2(32) +); +ALTER TABLE "TBL_STOCK_TAKING_MASTER" ADD CONSTRAINT "PK_TBL_STOCK_TAKING_MASTER" PRIMARY KEY("INVENTORY_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_STOCK_TAKING_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_STO_IN_DETAIL"( +"MAT_CODE" VARCHAR2(18), +"MAT_DESC" VARCHAR2(60), +"MEASURE_UNIT" VARCHAR2(4), +"ORDER_AMOUNT" NUMBER(8, 0), +"RECLAMATE_AMOUNT" NUMBER(8, 0), +"PRICE" NUMBER(13, 0), +"TOTAL_PRICE" NUMBER(13, 0), +"STOCK_SITE" VARCHAR2(64), +"ACCOUNT_ALLOT" VARCHAR2(32), +"BATCH_NUM" VARCHAR2(32), +"REMARKS" VARCHAR2(128), +"MBLNR" VARCHAR2(60) NOT NULL ENABLE, +"MAT_ROW_NUM" VARCHAR2(8) +); +CREATE TABLE "TBL_STO_IN_MASTER"( +"DEPT_NAME" VARCHAR2(60), +"IN_STORAGE_TYPE" VARCHAR2(8), +"COMPANY_CODE" VARCHAR2(128), +"SUPPLIER_CODE" VARCHAR2(128), +"ACCT" VARCHAR2(16), +"MBLNR" VARCHAR2(60) NOT NULL ENABLE, +"PLANT_CODE" VARCHAR2(128), +"ORDER_NUM" VARCHAR2(16), +"VOU_DATE" VARCHAR2(16), +"PRO_CODE" VARCHAR2(256), +"MOVE_TYPE" VARCHAR2(128), +"CONTRACT_CODE" VARCHAR2(20), +"ACCT_DATE" VARCHAR2(16), +"HEAD_TEXT" VARCHAR2(50), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"SUPERVISOR_AUDIT_ID" VARCHAR2(16), +"SUPERVISOR_AUDIT" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"PDF_URL" VARCHAR2(120), +"INSERT_DATE" VARCHAR2(32), +"IS_PDF" VARCHAR2(6), +"PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_STO_IN_MASTER" ADD CONSTRAINT "TBL_STO_IN_MASTER" PRIMARY KEY("MBLNR") ; +Warnings: +Warning 1280 Name 'TBL_STO_IN_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_STO_OUT_DETAIL"( +"PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, +"PICK_ROW_NUM" VARCHAR2(16), +"RESERVED_NUM" VARCHAR2(32), +"ROW_NUM" VARCHAR2(16), +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"BATCH_NUM" VARCHAR2(16), +"UNIT" VARCHAR2(16), +"AMOUNT" VARCHAR2(16), +"ACCOUNT_ALLOT" VARCHAR2(64), +"STOCK_SITE" VARCHAR2(64), +"PRICE" VARCHAR2(16), +"TOTAL_PRICE" VARCHAR2(16), +"REMARKS" VARCHAR2(128) +); +CREATE TABLE "TBL_STO_OUT_MASTER"( +"PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(60), +"PUT_STORAGE_TYPE" VARCHAR2(16), +"COMPANY_CODE" VARCHAR2(64), +"PRO_CODE" VARCHAR2(256), +"ACCT" VARCHAR2(32), +"MBLNR" VARCHAR2(32), +"PLANT_CODE" VARCHAR2(64), +"PRO_TYPE" VARCHAR2(32), +"ACCT_DATE" VARCHAR2(16), +"HEAD_TEXT" VARCHAR2(64), +"MOVE_TYPE" VARCHAR2(32), +"VOU_DATE" VARCHAR2(32), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"SUPERVISOR_AUDIT_ID" VARCHAR2(16), +"SUPERVISOR_AUDIT" VARCHAR2(16), +"AUDIT_PSON_ID" VARCHAR2(16), +"AUDIT_PSON" VARCHAR2(16), +"PICKING_ID" VARCHAR2(16), +"PICKING" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(32), +"IS_PDF" VARCHAR2(6), +"PDF_URL" VARCHAR2(128), +"INSERT_DATE" VARCHAR2(32), +"PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_STO_OUT_MASTER" ADD CONSTRAINT "PK_TBL_STO_OUT_MASTER" PRIMARY KEY("PICK_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_STO_OUT_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_SUR_DRAWAL_DETAIL"( +"RET_STOCKS_APPLY_CODE" VARCHAR2(64) NOT NULL ENABLE, +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(16), +"OLD_RECEIVE_AMOUNT" NUMBER(16, 0), +"RET_AMOUNT" NUMBER(16, 0), +"EXPERT_CONCLUSION" VARCHAR2(128), +"DATA_COMPLETENESS" VARCHAR2(128), +"PLAN_USER_DIRECTION" VARCHAR2(128), +"PLAN_USER_DATE" VARCHAR2(16), +"REMARKS" VARCHAR2(128), +"RET_STOCKS_ROW_CODE" VARCHAR2(16), +"OLD_MBLNR" VARCHAR2(32), +"YEAR" VARCHAR2(16), +"VOC_ROW_CODE" VARCHAR2(16), +"ENTITY_ID" VARCHAR2(64) +); +CREATE TABLE "TBL_SUR_DRAWAL_MASTER"( +"RET_STOCKS_APPLY_CODE" VARCHAR2(64) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(64), +"RET_STOCKS_APPLY_DEPT" VARCHAR2(128), +"PRO_NAME" VARCHAR2(64), +"PRO_CODE" VARCHAR2(256), +"OLD_RET_STOCKS_CODE" VARCHAR2(32), +"CODE" VARCHAR2(32), +"SURPLUS_MAT_EXPLAIN" VARCHAR2(128), +"EXPLAIN" VARCHAR2(128), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"RET_MAT_APPROVER_ID" VARCHAR2(16), +"RET_MAT_APPROVER" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(16), +"IS_PDF" VARCHAR2(8), +"PDF_URL" VARCHAR2(128), +"INSERT_DATE" VARCHAR2(64), +"RET_MAT_PSON1" VARCHAR2(32), +"TEL1" VARCHAR2(32), +"ID_CODE1" VARCHAR2(32), +"RET_MAT_PSON2" VARCHAR2(32), +"TEL2" VARCHAR2(32), +"ID_CODE2" VARCHAR2(32), +"RET_MAT_PSON3" VARCHAR2(32), +"TEL3" VARCHAR2(32), +"ID_CODE3" VARCHAR2(32), +"CREATE_DATE" VARCHAR2(16), +"WBS_CODE" VARCHAR2(64), +"WBS_DESC" VARCHAR2(64), +"APPLY_DEPT" VARCHAR2(16), +"ORIGINATOR_PIC" CLOB, +"RET_MAT_APPROVER_PIC" CLOB, +"RET_STOCKS_APPLY_DEPT_PIC" CLOB +); +ALTER TABLE "TBL_SUR_DRAWAL_MASTER" ADD CONSTRAINT "PK_TBL_SUR_DRAWAL_MASTER" PRIMARY KEY("RET_STOCKS_APPLY_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_SUR_DRAWAL_MASTER' ignored for PRIMARY key. +CREATE TABLE "TBL_SUR_STO_IN_DETAIL"( +"RET_STOCKS_APPLY_CODE" VARCHAR2(60) NOT NULL ENABLE, +"RESERVED_NUM" VARCHAR2(16), +"ROW_NUM" VARCHAR2(16), +"MAT_CODE" VARCHAR2(32), +"MAT_DESC" VARCHAR2(64), +"MEASURE_UNIT" VARCHAR2(16), +"RECEIVE_AMOUNT" VARCHAR2(100), +"RET_AMOUNT" VARCHAR2(100), +"RET_STUFF_PRICE" VARCHAR2(100), +"RET_STUFF_TOTAL" VARCHAR2(100), +"STOCK_SITE" VARCHAR2(128), +"ACCOUNT_ALLOT" VARCHAR2(64), +"BATCH_NUM" VARCHAR2(32), +"REMARKS" VARCHAR2(64), +"RET_STOCKS_ROW_CODE" VARCHAR2(16) +); +CREATE TABLE "TBL_SUR_STO_IN_MASTER"( +"RET_STOCKS_APPLY_CODE" VARCHAR2(60) NOT NULL ENABLE, +"DEPT_NAME" VARCHAR2(60), +"COMPANY_CODE" VARCHAR2(64), +"PLANT_CODE" VARCHAR2(64), +"ACCT" VARCHAR2(16), +"MBLNR" VARCHAR2(64), +"VOU_DATE" VARCHAR2(16), +"ACCT_DATE" VARCHAR2(16), +"MOVE_TYPE" VARCHAR2(64), +"PRO_CODE" VARCHAR2(256), +"HEAD_TEXT" VARCHAR2(64), +"ORIGINATOR_ID" VARCHAR2(16), +"ORIGINATOR" VARCHAR2(16), +"STORE_KEEPER_ID" VARCHAR2(16), +"STORE_KEEPER" VARCHAR2(16), +"SUPERVISOR_AUDIT_ID" VARCHAR2(16), +"SUPERVISOR_AUDIT" VARCHAR2(16), +"HAND_OVER_ID" VARCHAR2(16), +"HAND_OVER" VARCHAR2(16), +"DEPT_SIGN_NAME" VARCHAR2(64), +"PRINTING_DATE" VARCHAR2(16), +"PDF_URL" VARCHAR2(128), +"IS_PDF" VARCHAR2(6), +"INSERT_DATE" TIMESTAMP(6), +"RET_STOCKS_ROW_CODE" VARCHAR2(32), +"ORIGINATOR_PIC" CLOB, +"STORE_KEEPER_PIC" CLOB, +"SUPERVISOR_AUDIT_PIC" CLOB, +"HAND_OVER_PIC" CLOB, +"MBLNR_PIC" CLOB +); +ALTER TABLE "TBL_SUR_STO_IN_MASTER" ADD CONSTRAINT "PK_TBL_SUR_STO_IN_MASTER" PRIMARY KEY("RET_STOCKS_APPLY_CODE") ; +Warnings: +Warning 1280 Name 'PK_TBL_SUR_STO_IN_MASTER' ignored for PRIMARY key. +insert into TBL_PICK_OUT_MASTER() values( +1,'deptName1','demandDept1', 'ProCode1', 'WorkOrder1', 'ori1', 'ori1', 'appr1','appro', 'rat1', +'rati', 'deptsignName', 'prinDate', 'pdfUrl', 'A', '20200905', 'del1', 'rec', 'recTel' ,'retCode', +'rece2', 'rec2Tel', 'rec2Code', 'rec3', 'rec3Tel', 'rec3Code', 'repDate', 'isOwner', 'pickWay', 'pdfName'); +insert into TBL_PICK_OUT_DETAIL values( +1, 'resNum', 'rowNum', 'moveType', 'accountAllot', 'matCode', 'MatDesc', ' BatchNum', 'demDate', 'meaUnit', +'resAmount', 'planAmount', 'pickRowNum', 'stock','wbs','wbsdesc','demAmount'); +select +t.pick_code AS "pickCode", +t.dept_name AS "deptName", +t.demand_dept AS "demandDept", +t.pro_code AS "proCode", +t.work_order AS "workOrder", +t.originator AS "originator", +t.printing_date AS "printingDate", +t.insert_date AS "insertDate", +p.reserved_num AS "reservedNum", +p.row_num AS "rowNum", +p.move_type AS "moveType", +p.account_allot AS "accountAllot", +p.mat_code AS "matCode", +p.mat_desc AS "matDesc", +p.batch_num AS "batchNum", +p.demand_date AS "demandDate", +p.measure_unit AS "measureUnit", +p.reserved_amount AS +"reservedAmount", +p.plan_get_amount AS "planGetAmount" +from +TBL_PICK_OUT_MASTER t LEFT join +TBL_PICK_OUT_DETAIL p on p. +pick_code = t.pick_code +where t.is_pdf = 'A' + and t.pick_code = 1; +pickCode deptName demandDept proCode workOrder originator printingDate insertDate reservedNum rowNum moveType accountAllot matCode matDesc batchNum demandDate measureUnit reservedAmount planGetAmount +1 deptName1 demandDept1 ProCode1 WorkOrder1 ori1 prinDate 20200905 resNum rowNum moveType accountAllot matCode MatDesc BatchNum demDate meaUnit resAmount planAmount +insert into "DEPARTMENT" values('1', 'linda', 'code1', 'dep1', 'depcode1', 'A1A', 'opt01', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('1', '1', 'linda', 'sig1', '1', current_timestamp, current_timestamp, '1'); +select +count(1) as count +from +( +SELECT +d.id as "id", +d.ORG_NAME as "orgName", +d.ORG_CODE as "orgCode", +d.DEP_NAME as "depName", +d.DEP_CODE as "depCode", +d.OPT_NAME as "optName", +d.OPT_ID_NUM as "optIdNum", +d.OPT_PHONE as "optPhone", +TO_CHAR(d.CREATE_TIME, 'A') +AS "createTime", +TO_CHAR(d.MODIFY_TIME, 'A') +AS "modifyTime", +so.STATUS as "status", +so.RECORD_ID AS "recordId", +so.SIGN_PHOTO AS "signPhoto" + , +so.SIGNATURE as "signature" + FROM +DEPARTMENT d LEFT JOIN +SIGN_OPER so on d. +id = so.RECORD_ID +and so.VISIABLE = 1 +WHERE 1 = 1 +AND d.VISIABLE = 1 +AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY +d.MODIFY_TIME DESC) +tmp_count; +count +1 +insert into TBL_PICK_OUT_MASTER( +pick_code, dept_name, demand_dept, +pro_code, work_order, deliver_way, +is_owner, pick_way, receiptor1, +receiptor1_tel, receiptor1_code, +receiptor2, receiptor2_tel, +receiptor2_code, receiptor3, +receiptor3_tel, receiptor3_code, +originator_id, originator, +approver_id, approver, ratify_id, +ratify, printing_date, is_pdf, +insert_date, pdf_name) +values(10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 +, 17, 18, 19, 20, 21, 22, 23, +24, 25, 26, 27); +select * from TBL_PICK_OUT_MASTER; +PICK_CODE DEPT_NAME DEMAND_DEPT PRO_CODE WORK_ORDER ORIGINATOR_ID ORIGINATOR APPROVER_ID APPROVER RATIFY_ID RATIFY DEPT_SIGN_NAME PRINTING_DATE PDF_URL IS_PDF INSERT_DATE DELIVER_WAY RECEIPTOR1 RECEIPTOR1_TEL RECEIPTOR1_CODE RECEIPTOR2 RECEIPTOR2_TEL RECEIPTOR2_CODE RECEIPTOR3 RECEIPTOR3_TEL RECEIPTOR3_CODE REPORT_DATE IS_OWNER PICK_WAY PDF_NAME +1 deptName1 demandDept1 ProCode1 WorkOrder1 ori1 ori1 appr1 appro rat1 rati deptsignName prinDate pdfUrl A 20200905 del1 rec recTel retCode rece2 rec2Tel rec2Code rec3 rec3Tel rec3Code repDate isOwner pickWay pdfName +10 2 3 4 5 18 19 20 21 22 23 NULL 24 NULL 25 26 6 9 10 11 12 13 14 15 16 17 NULL 7 8 27 +SELECT +ORG_CODE AS "orgCode", +ORG_NAME AS "orgName" +FROM +DEPARTMENT +WHERE VISIABLE = 1 +GROUP BY +ORG_CODE, +ORG_NAME; +orgCode orgName +code1 linda +insert into "DEPARTMENT" values('5', 'luxem', 'code5', 'dep5', 'depcode5', 'A1A', 'opt05', '710000', current_timestamp, current_timestamp, '1' ); +UPDATE DEPARTMENT +SET +ORG_NAME = 1, +ORG_CODE = 2, +OPT_NAME = 3, +OPT_PHONE = 4, +MODIFY_TIME = SYSDATE +WHERE ID = 5 +AND VISIABLE = 1; +select ORG_NAME, ORG_CODE, OPT_NAME, OPT_PHONE from DEPARTMENT where ID=5; +ORG_NAME ORG_CODE OPT_NAME OPT_PHONE +1 2 3 4 +insert into "DEPARTMENT" values('6', 'luxem', 'code5', 'dep5', 'depcode5', 'A1A', 'opt05', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('6', '6', 'linda', 'sig1', '5', current_timestamp, current_timestamp, '1'); +insert into "DEPARTMENT" values('7', 'linda', 'code1', 'dep1', 'depcode1', 'A1A', 'opt01', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('7', '7', 'linda', 'sig1', '7', current_timestamp, current_timestamp, '1'); +SELECT +d.id as "id", +d.ORG_NAME as "orgName", +d.ORG_CODE as "orgCode", +d.DEP_NAME as "depName", +d.DEP_CODE as "depCode", +d.OPT_NAME as "optName", +d.OPT_ID_NUM as "optIdNum", +d.OPT_PHONE as "optPhone", +TO_CHAR(d.CREATE_TIME, 'YYYY-mm-dd') AS "createTime", +TO_CHAR(d.MODIFY_TIME, 'YYYY-mm-dd') AS "modifyTime", +so.STATUS as "status", +so.RECORD_ID AS "recordId", +so.SIGN_PHOTO AS "signPhoto", +so.SIGNATURE as "signature" +FROM +DEPARTMENT d LEFT JOIN +SIGN_OPER +so on d.id = so.RECORD_ID and so.VISIABLE = 1 +WHERE 1 = 1 AND d.VISIABLE = 1 +AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY d.MODIFY_TIME DESC; +id orgName orgCode depName depCode optName optIdNum optPhone createTime modifyTime status recordId signPhoto signature +1 linda code1 dep1 depcode1 A1A opt01 710000 2020-09-11 2020-09-11 1 1 linda sig1 +6 luxem code5 dep5 depcode5 A1A opt05 710000 2020-09-11 2020-09-11 5 6 linda sig1 +7 linda code1 dep1 depcode1 A1A opt01 710000 2020-09-11 2020-09-11 7 7 linda sig1 +select +tmp_page.*, +rownum row_id +from +( +SELECT +d.id as "id", +d.ORG_NAME as "orgName", +d.ORG_CODE as "orgCode", +d.DEP_NAME as "depName", +d.DEP_CODE as "depCode", +d.OPT_NAME as "optName", +d.OPT_ID_NUM as "optIdNum", +d.OPT_PHONE as "optPhone", +TO_CHAR(d.CREATE_TIME, 'YYYY-mm-dd') AS "createTime", +TO_CHAR(d.MODIFY_TIME, 'YYYY-mm-dd') AS "modifyTime", +so.STATUS as "status", +so.RECORD_ID AS "recordId", +so.SIGN_PHOTO AS "signPhoto", +so.SIGNATURE as "signature" + FROM +DEPARTMENT d LEFT JOIN +SIGN_OPER +so on d.id = so.RECORD_ID and so.VISIABLE = 1 +WHERE 1 = 1 AND d.VISIABLE = 1 +AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY d.MODIFY_TIME DESC +) +tmp_page +where rownum <= 5; +id orgName orgCode depName depCode optName optIdNum optPhone createTime modifyTime status recordId signPhoto signature row_id +1 linda code1 dep1 depcode1 A1A opt01 710000 2020-09-11 2020-09-11 1 1 linda sig1 1 +6 luxem code5 dep5 depcode5 A1A opt05 710000 2020-09-11 2020-09-11 5 6 linda sig1 2 +7 linda code1 dep1 depcode1 A1A opt01 710000 2020-09-11 2020-09-11 7 7 linda sig1 3 +select * +from +( +select +tmp_page.*, +rownum row_id +from +( +SELECT +d.id as "id", +d.ORG_NAME as +"orgName", +d.ORG_CODE as +"orgCode", +d.DEP_NAME as +"depName", +d.DEP_CODE as +"depCode", +d.OPT_NAME as +"optName", +d.OPT_ID_NUM as +"optIdNum", +d.OPT_PHONE as +"optPhone", +TO_CHAR(d. +CREATE_TIME, 'YYYY-mm-dd') AS +"createTime", +TO_CHAR(d. +MODIFY_TIME, 'YYYY-mm-dd') AS +"modifyTime", +so.STATUS as +"status", +so.RECORD_ID AS +"recordId", +so.SIGN_PHOTO AS +"signPhoto", +so.SIGNATURE as +"signature" + FROM +DEPARTMENT d LEFT +JOIN SIGN_OPER +so on d.id = so. +RECORD_ID +and so.VISIABLE += 1 +WHERE 1 = 1 +AND d.VISIABLE = 1 +AND d.OPT_NAME LIKE +'A' || 1 || 'A' + ORDER BY +d.MODIFY_TIME DESC) +tmp_page +where rownum <= 5) +where row_id > 1; +id orgName orgCode depName depCode optName optIdNum optPhone createTime modifyTime status recordId signPhoto signature row_id +6 luxem code5 dep5 depcode5 A1A opt05 710000 2020-09-11 2020-09-11 5 6 linda sig1 2 +7 linda code1 dep1 depcode1 A1A opt01 710000 2020-09-11 2020-09-11 7 7 linda sig1 3 +insert into "SIGN_OPER" values('3', '2', 'sxlengwa', '3', '3', current_timestamp, current_timestamp, '1'); +UPDATE SIGN_OPER +SET +SIGN_PHOTO = 1, +MODIFY_TIME = SYSDATE +WHERE RECORD_ID = 2 +AND VISIABLE = 1 +AND SIGNATURE = 3; +select +1 +from +dual; +1 +1 +insert into TBL_STOCK_TAKING_DETAIL( +inventory_code, mat_code, mat_desc, +batch_num, amount, unit, stock_type, +stock_type_code, remarks) +values(1, 2, 3, 4, 5, 6, 7, 8, 9); +select inventory_code, mat_code, mat_desc, +batch_num, amount, unit, stock_type, +stock_type_code, remarks from TBL_STOCK_TAKING_DETAIL; +inventory_code mat_code mat_desc batch_num amount unit stock_type stock_type_code remarks +1 2 3 4 5 6 7 8 9 +insert into PERSON() values(1,'linda','A1A', 'w', '1', '710000', 'linda', 'orgName', 'orgCode', 'depName', 'depCode', current_timestamp, current_timestamp, '1'); +insert into PERSON() values(2,'sxlengwa','A1A', 'm', '3', '710000', 'sxlengwa', 'orgName', 'orgCode', 'depName', 'depCode', current_timestamp, current_timestamp, '1'); +SELECT +p.ID AS "id", +p.NAME AS "name", +p.PERSON_ID AS "personId", +p.SEX AS "sex", +p.IDENTITY_NUM AS "identityNum", +p.PHONE AS "phone", +p.PHOTO AS "photo", +p.ORG_NAME AS "orgName", +p.ORG_CODE AS "orgCode", +p.DEP_NAME AS "depName", +p.DEP_CODE AS "depCode", +TO_CHAR(p.CREATE_TIME, 'A') AS +"createTime", +TO_CHAR(p.MODIFY_TIME, 'A') AS +"modifyTime", +so.STATUS as "status", +so.RECORD_ID AS "recordId", +so.SIGN_PHOTO AS "signPhoto", +so.SIGNATURE as "signature" +FROM +PERSON p LEFT JOIN SIGN_OPER so +ON p.id = so.RECORD_ID +AND so.VISIABLE = 1 +WHERE 1 = 1 +AND p.VISIABLE = 1 +AND p.PERSON_ID LIKE 'A' || 1 || +'A' +ORDER BY +p.MODIFY_TIME desc; +id name personId sex identityNum phone photo orgName orgCode depName depCode createTime modifyTime status recordId signPhoto signature +1 linda A1A w 1 710000 linda orgName orgCode depName depCode NULL NULL 1 1 linda sig1 +2 sxlengwa A1A m 3 710000 sxlengwa orgName orgCode depName depCode NULL NULL 3 2 1 3 +drop table CASE1; +drop table DEPARTMENT; +drop table DEPT; +drop table PERSON; +drop table PERSON_DIC; +drop table SIGN_OPER; +drop table TBL_ALLOT_DETAIL; +drop table TBL_ALLOT_MASTER; +drop table TBL_BORROWING_MASTER; +drop table TBL_BORROW_DETAIL; +drop table TBL_OLD_KEEP_IN_DETAIL; +drop table TBL_OLD_KEEP_IN_MASTER; +drop table TBL_OLD_KEEP_OUT_APPLY_DETAIL; +drop table TBL_OLD_KEEP_OUT_APPLY_MASTER; +drop table TBL_OLD_KEEP_OUT_DETAIL; +drop table TBL_OLD_STO_IN_MASTER; +drop table TBL_PICK_OUT_DETAIL; +drop table TBL_PICK_OUT_MASTER; +drop table TBL_RE_MA_DIS_IN_APPLY_DETAIL; +drop table TBL_RE_MA_DIS_IN_APPLY_MASTER; +drop table TBL_RE_MA_DIS_IN_DETAIL; +drop table TBL_RE_MA_DIS_IN_MASTER; +drop table TBL_RE_MA_STO_IN_APPLY_DETAIL; +drop table TBL_RE_MA_STO_IN_APPLY_MASTER; +drop table TBL_RE_MA_STO_IN_DETAIL; +drop table TBL_RE_MA_STO_IN_MASTER; +drop table TBL_STOCK_TAKING_DETAIL; +drop table TBL_STOCK_TAKING_MASTER; +drop table TBL_STO_IN_DETAIL; +drop table TBL_STO_IN_MASTER; +drop table TBL_STO_OUT_DETAIL; +drop table TBL_STO_OUT_MASTER; +drop table TBL_SUR_DRAWAL_DETAIL; +drop table TBL_SUR_DRAWAL_MASTER; +drop table TBL_SUR_STO_IN_DETAIL; +drop table TBL_SUR_STO_IN_MASTER; +create table t1(c1 int, c2 char(20), c3 timestamp(6)); +create table t2(c1 int, c2 char(20), c3 int); +insert into t1 values(1, 'jim', str_to_date('2008-9-1','%Y-%m-%d') ); +insert into t1 values(2, 'menny', str_to_date('2010-9-1', '%Y-%m-%d')); +insert into t1 values(3, 'linda', str_to_date('2006-3-20', '%Y-%m-%d')); +insert into t1 values(4, 'shory', str_to_date('2006-3-1','%Y-%m-%d')); +insert into t1 values(5, 'xuying', str_to_date('2013-6-6','%Y-%m-%d')); +insert into t1 values(6, 'xujun', str_to_date('2008-9-1','%Y-%m-%d')); +insert into t1 values(7, 'taoju', str_to_date('2010-9-1', '%Y-%m-%d')); +insert into t1 values(8, 'beibei', str_to_date('2015-5-5', '%Y-%m-%d')); +insert into t2 values(1, 'jim', 3); +insert into t2 values(1, 'jim', 2); +insert into t2 values(1, 'jim', 1); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 3); +insert into t2 values(3, 'linda', 3); +insert into t2 values(3, 'linda', 4); +insert into t2 values(4, 'shory', 2); +insert into t2 values(4, 'shory', 3); +insert into t2 values(5, 'xuying', 1); +insert into t2 values(5, 'xuying', 1); +insert into t2 values(7, 'taoju', 3); +insert into t2 values(7, 'taoju', 3); +select dc1, dc2 from (select d.c1 as dc1, d.c2 as dc2 from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c2 desc) tt; +dc1 dc2 +5 xuying +5 xuying +6 xujun +7 taoju +7 taoju +4 shory +4 shory +2 menny +2 menny +2 menny +2 menny +3 linda +3 linda +1 jim +1 jim +1 jim +8 beibei +select rownum from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc) tt where rownum<3; +rownum +1 +2 +select tt.*, rownum as row_id from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc ) tt where rownum<=3; +dc1 dc2 create_time row_id +8 beibei 2015-05-05 1 +5 xuying 2013-06-06 2 +5 xuying 2013-06-06 3 +select * from (select tt.*, rownum as row_id from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc ) tt where rownum<=3) where row_id>1; +dc1 dc2 create_time row_id +5 xuying 2013-06-06 2 +5 xuying 2013-06-06 3 +drop table t1; +drop table t2; diff --git a/mysql-test/main/wuzicangku.test b/mysql-test/main/wuzicangku.test new file mode 100644 index 00000000000..93d93f3696b --- /dev/null +++ b/mysql-test/main/wuzicangku.test @@ -0,0 +1,1138 @@ +set sql_mode='oracle'; +set optimizer_switch='derived_merge=off'; +set optimizer_switch='condition_pushdown_for_derived=off'; + +CREATE TABLE "CASE1"( + "ID" VARCHAR2(64), + "ORG_NAME" VARCHAR2(255), + "ORG_CODE" VARCHAR2(25), + "DEP_NAME" VARCHAR2(255), + "DEP_CODE" VARCHAR2(100), + "OPT_NAME" VARCHAR2(100), + "OPT_ID_NUM" VARCHAR2(100), + "OPT_PHONE" VARCHAR2(100), + "CREATE_TIME" VARCHAR2(100), + "MODIFY_TIME" VARCHAR2(100), + "VISIABLE" VARCHAR2(2), + "MODIFYE" VARCHAR2(100), + "MODIE" VARCHAR2(100), + "MOTIME" VARCHAR2(100) +); + + +CREATE TABLE "DEPARTMENT"( + "ID" VARCHAR2(64) NOT NULL ENABLE, + "ORG_NAME" VARCHAR2(255), + "ORG_CODE" VARCHAR2(25), + "DEP_NAME" VARCHAR2(255), + "DEP_CODE" VARCHAR2(25), + "OPT_NAME" VARCHAR2(30), + "OPT_ID_NUM" VARCHAR2(18), + "OPT_PHONE" VARCHAR2(11), + "CREATE_TIME" TIMESTAMP(6), + "MODIFY_TIME" TIMESTAMP(6), + "VISIABLE" VARCHAR2(2) +); +ALTER TABLE "DEPARTMENT" ADD CONSTRAINT "PK_DEPARTMENT" PRIMARY KEY("ID") ; + + +CREATE TABLE "DEPT"( + "ID" VARCHAR2(32), + "DEPT_NAME" VARCHAR2(64), + "DEPT_TEL" VARCHAR2(64) +); + +CREATE TABLE "PERSON"( + "ID" VARCHAR2(32) NOT NULL ENABLE, + "NAME" VARCHAR2(12), + "PERSON_ID" VARCHAR2(50), + "SEX" VARCHAR2(2), + "IDENTITY_NUM" VARCHAR2(18), + "PHONE" VARCHAR2(11), + "PHOTO" CLOB, + "ORG_NAME" VARCHAR2(50), + "ORG_CODE" VARCHAR2(25), + "DEP_NAME" VARCHAR2(50), + "DEP_CODE" VARCHAR2(25), + "CREATE_TIME" TIMESTAMP(6), + "MODIFY_TIME" TIMESTAMP(6), + "VISIABLE" VARCHAR2(2) +); +ALTER TABLE "PERSON" ADD CONSTRAINT "PK_PERSON" PRIMARY KEY("ID") ; + + +CREATE TABLE "PERSON_DIC"( + "PERSON_ID" VARCHAR2(40), + "IDENTITY" VARCHAR2(20), + "IDENTITY_CODE" VARCHAR2(10), + "NAME" VARCHAR2(20), + "IDENTITY_NUM" VARCHAR2(18), + "SIGN_LOGO" VARCHAR2(10) +); + + +CREATE TABLE "SIGN_OPER"( + "ID" VARCHAR2(32) NOT NULL ENABLE, + "RECORD_ID" VARCHAR2(32), + "SIGN_PHOTO" CLOB, + "SIGNATURE" VARCHAR2(5), + "STATUS" VARCHAR2(5), + "CREATE_TIME" TIMESTAMP(6), + "MODIFY_TIME" TIMESTAMP(6), + "VISIABLE" VARCHAR2(2) +); +ALTER TABLE "SIGN_OPER" ADD CONSTRAINT "PK_SIGN_OPER" PRIMARY KEY("ID") ; + +CREATE TABLE "TBL_ALLOT_DETAIL"( + "ALLOT_NUM" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "SIZE_TYPE" VARCHAR2(16), + "UNIT" VARCHAR2(16), + "ALLOT_AMOUNT" VARCHAR2(16), + "PRICE" VARCHAR2(16), + "TOTAL_PRICE" VARCHAR2(32), + "REMARKS" VARCHAR2(128) +); + + +CREATE TABLE "TBL_ALLOT_MASTER"( + "TUNEOUT_DEPT_NAME" VARCHAR2(64), + "TUNEIN_DEPT_NAME" VARCHAR2(64), + "TUNEOUT_DEPOT_NAME" VARCHAR2(64), + "TUNEIN_DELIVERY_LOC" VARCHAR2(64), + "ALLOT_NUM" VARCHAR2(32) NOT NULL ENABLE, + "PERSON_TEL1" VARCHAR2(64), + "PERSON_TEL2" VARCHAR2(64), + "AGENT" VARCHAR2(16), + "AGENT_ID" VARCHAR2(16), + "APPROVER" VARCHAR2(16), + "APPROVER_ID" VARCHAR2(16), + "PRINT_DATE" VARCHAR2(32), + "DEPT_NAME" VARCHAR2(64), + "DEPT_SIGN_NAME" VARCHAR2(128), + "PDF_URL" VARCHAR2(128), + "IS_PDF" VARCHAR2(16), + "INSERT_DATE" VARCHAR2(32) +); +ALTER TABLE "TBL_ALLOT_MASTER" ADD CONSTRAINT "PK_TBL_ALLOT_MASTER" PRIMARY KEY("ALLOT_NUM") ; + + +CREATE TABLE "TBL_BORROWING_MASTER"( + "BORROW_DEPT" VARCHAR2(32), + "BORROW_CODE" VARCHAR2(64) NOT NULL ENABLE, + "BORROW_EXPLAIN" VARCHAR2(64), + "PLAN_RET_DATE" VARCHAR2(32), + "BORROWER" VARCHAR2(16), + "BORROWER_ID" VARCHAR2(16), + "AGENCY_DEPT" VARCHAR2(32), + "AGENCY_DEPT_CODE" VARCHAR2(16), + "MANAGE_DEPT" VARCHAR2(32), + "MANAGE_DEPT_CODE" VARCHAR2(16), + "PRINTING_DATE" VARCHAR2(32), + "BRANCHED_LEADER" VARCHAR2(16), + "BRANCHED_LEADER_ID" VARCHAR2(16), + "SEND_RECORD" VARCHAR2(128), + "STOREKEEPER" VARCHAR2(16), + "STOREKEEPER_ID" VARCHAR2(16), + "RET_RECORD" VARCHAR2(128), + "OUT_AGENT" VARCHAR2(16), + "OUT_AGENT_ID" VARCHAR2(16), + "DEPT_NAME" VARCHAR2(32), + "BORROWER1" VARCHAR2(16), + "TEL1" VARCHAR2(32), + "ID_CODE1" VARCHAR2(64), + "BORROWER2" VARCHAR2(16), + "TEL2" VARCHAR2(32), + "ID_CODE2" VARCHAR2(64), + "BORROWER3" VARCHAR2(16), + "TEL3" VARCHAR2(32), + "ID_CODE3" VARCHAR2(64), + "DEPT_SIGN_NAME" VARCHAR2(16), + "IS_PDF" VARCHAR2(6) NOT NULL ENABLE, + "PDF_URL" VARCHAR2(128), + "INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE, + "MAT_DEPT" VARCHAR2(32), + "MAT_DEPT_CODE" VARCHAR2(32), + "BUTXT" VARCHAR2(128) +); +ALTER TABLE "TBL_BORROWING_MASTER" ADD CONSTRAINT "PK_TBL_BORROWING_MASTER" PRIMARY KEY("BORROW_CODE") ; + + +CREATE TABLE "TBL_BORROW_DETAIL"( + "BORROW_CODE" VARCHAR2(64) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(64), + "MAT_DESC" VARCHAR2(256), + "UNIT" VARCHAR2(64), + "AMOUNT" VARCHAR2(64), + "REMARKS" VARCHAR2(128) +); + + +CREATE TABLE "TBL_OLD_KEEP_IN_DETAIL"( + "CODE" VARCHAR2(60), + "MAT_CODE" VARCHAR2(128), + "MAT_DESC" VARCHAR2(60), + "MEASURE_UNIT" VARCHAR2(4), + "AMOUNT" VARCHAR2(100), + "NO_TAX_PRICE" VARCHAR2(100), + "NO_TAX_TOTAL_PRICE" VARCHAR2(100), + "PLAN_USER_TIME" VARCHAR2(64), + "REMARKS" VARCHAR2(128), + "PLANT" VARCHAR2(8), + "ENTITY_ID" VARCHAR2(100), + "TYPE" VARCHAR2(100), + "CAPITAL_CODE" VARCHAR2(24), + "VOC_ROW_CODE" VARCHAR2(8), + "COMPLETION_CASE" VARCHAR2(100) +); + + +CREATE TABLE "TBL_OLD_KEEP_IN_MASTER"( + "CODE" VARCHAR2(60) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(60), + "MAT_FACT_SHEET" VARCHAR2(128), + "AGENT" VARCHAR2(16), + "AGENT_ID" VARCHAR2(16), + "APPROVER" VARCHAR2(16), + "APPROVER_ID" VARCHAR2(16), + "MAT_DEPT" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(16), + "IS_PDF" VARCHAR2(6), + "PDF_URL" VARCHAR2(120), + "INSERT_DATE" DATE, + "VOU_YEAR" VARCHAR2(16), + "PRO_NAME" VARCHAR2(100), + "HAND_OVER_DEPT" VARCHAR2(100), + "REPORTING_DATE" VARCHAR2(16), + "HAND_OVER1" VARCHAR2(20), + "HAND_OVER2" VARCHAR2(20), + "HAND_OVER3" VARCHAR2(20), + "TEL1" VARCHAR2(30), + "TEL2" VARCHAR2(30), + "TEL3" VARCHAR2(30), + "CONNECT_SITE" VARCHAR2(100), + "CONNECT_DATE" VARCHAR2(16), + "AGENT_PIC" CLOB, + "APPROVER_PIC" CLOB, + "DEPT_PIC" CLOB, + "MAT_DEPT_ID" VARCHAR2(16), + "HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_OLD_KEEP_IN_MASTER" ADD PRIMARY KEY("CODE") ; + + +CREATE TABLE "TBL_OLD_KEEP_OUT_APPLY_DETAIL"( + "OID_MAT_OUT_CODE" VARCHAR2(60), + "MAT_CODE" VARCHAR2(18), + "MAT_DESC" VARCHAR2(60), + "MEASURE_UNIT" VARCHAR2(4), + "NO_TAX_PRICE" VARCHAR2(100), + "NO_TAX_TOTAL_PRICE" VARCHAR2(100), + "AMOUNT" VARCHAR2(16), + "PLAN_USER_TIME" VARCHAR2(64), + "REMARKS" VARCHAR2(128), + "OID_MAT_ROW_CODE" VARCHAR2(60) +); + + +CREATE TABLE "TBL_OLD_KEEP_OUT_APPLY_MASTER"( + "OID_MAT_OUT_CODE" VARCHAR2(60) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(60), + "MAT_FACT_SHEET" VARCHAR2(128), + "AGENT" VARCHAR2(16), + "AGENT_ID" VARCHAR2(16), + "APPROVER" VARCHAR2(16), + "APPROVER_ID" VARCHAR2(16), + "MAT_DEPT" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(16), + "IS_PDF" VARCHAR2(6), + "PDF_URL" VARCHAR2(120), + "INSERT_DATE" DATE, + "HANDOVER_DEPT" VARCHAR2(100), + "RECYCLER" VARCHAR2(100), + "HANDOVER1_PSON" VARCHAR2(100), + "TEL1" VARCHAR2(30), + "HANDOVER2_PSON" VARCHAR2(100), + "TEL2" VARCHAR2(30), + "HANDOVER3_PSON" VARCHAR2(100), + "TEL3" VARCHAR2(30), + "REPORT_DATE" VARCHAR2(64), + "CREATE_DATE" VARCHAR2(64), + "APPROVAL_DEPT" VARCHAR2(16), + "AGENT_PIC" CLOB, + "APPROVER_PIC" CLOB, + "DEPT_PIC" CLOB, + "MAT_DEPT_ID" VARCHAR2(16), + "HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_OLD_KEEP_OUT_APPLY_MASTER" ADD PRIMARY KEY("OID_MAT_OUT_CODE") ; + + +CREATE TABLE "TBL_OLD_KEEP_OUT_DETAIL"( + "MBLNR" VARCHAR2(20), + "SELL_CODE" VARCHAR2(60), + "OLD_MAT_ROW_CODE" VARCHAR2(40), + "MAT_CODE" VARCHAR2(18), + "MAT_DESC" VARCHAR2(60), + "MEASURE_UNIT" VARCHAR2(4), + "BATCH_NUM" VARCHAR2(16), + "AMOUNT" VARCHAR2(100), + "STOCK_SITE" VARCHAR2(60), + "REMARKS" VARCHAR2(60), + "OLD_MAT_CODE" VARCHAR2(60), + "COMPLETION_CASE" VARCHAR2(60) +); + + +CREATE TABLE "TBL_OLD_STO_IN_MASTER"( + "OLD_MAT_IN_CODE" VARCHAR2(64) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(64), + "IN_STORAGE_TYPE" VARCHAR2(64), + "COMPANY_CODE" VARCHAR2(128), + "PLANT_CODE" VARCHAR2(128), + "CREATE_DATE" VARCHAR2(16), + "MBLNR_PIC" CLOB, + "HEAD_TEXT" VARCHAR2(128), + "MOVE_TYPE" VARCHAR2(64), + "ENTRUST_APPLY_NUM" VARCHAR2(64), + "WAREHOUSING_DESC" VARCHAR2(128), + "CREATE_PSON_ID" VARCHAR2(16), + "CREATE_PSON" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "SUPERVISOR_AUDIT_ID" VARCHAR2(16), + "SUPERVISOR_AUDIT" VARCHAR2(16), + "DELIVERYMAN_ID" VARCHAR2(16), + "DELIVERYMAN" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(16), + "IS_PDF" VARCHAR2(6), + "PDF_URL" VARCHAR2(120), + "INSERT_DATE" DATE, + "CREATE_PSON_PIC" CLOB, + "STORE_KEEPER_PIC" CLOB, + "SUPERVISOR_AUDIT_PIC" CLOB, + "DELIVERYMAN_PIC" CLOB, + "MBLNR" VARCHAR2(32) +); +ALTER TABLE "TBL_OLD_STO_IN_MASTER" ADD PRIMARY KEY("OLD_MAT_IN_CODE") ; + + +CREATE TABLE "TBL_PICK_OUT_DETAIL"( + "PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, + "RESERVED_NUM" VARCHAR2(16), + "ROW_NUM" VARCHAR2(16), + "MOVE_TYPE" VARCHAR2(16), + "ACCOUNT_ALLOT" VARCHAR2(64), + "MAT_CODE" VARCHAR2(18), + "MAT_DESC" VARCHAR2(64), + "BATCH_NUM" VARCHAR2(16), + "DEMAND_DATE" VARCHAR2(16), + "MEASURE_UNIT" VARCHAR2(16), + "RESERVED_AMOUNT" VARCHAR2(16), + "PLAN_GET_AMOUNT" VARCHAR2(16), + "PICK_ROW_NUM" VARCHAR2(16), + "STOCK_SITE" VARCHAR2(18), + "WBS_ELEMENTS" VARCHAR2(64), + "WBS_DESC" VARCHAR2(128), + "DEMAND_AMOUNT" VARCHAR2(16) +); + + +CREATE TABLE "TBL_PICK_OUT_MASTER"( + "PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(60), + "DEMAND_DEPT" VARCHAR2(32), + "PRO_CODE" VARCHAR2(128), + "WORK_ORDER" VARCHAR2(128), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "APPROVER_ID" VARCHAR2(16), + "APPROVER" VARCHAR2(16), + "RATIFY_ID" VARCHAR2(16), + "RATIFY" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "PDF_URL" VARCHAR2(120), + "IS_PDF" VARCHAR2(6) NOT NULL ENABLE, + "INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE, + "DELIVER_WAY" VARCHAR2(16), + "RECEIPTOR1" VARCHAR2(40), + "RECEIPTOR1_TEL" VARCHAR2(22), + "RECEIPTOR1_CODE" VARCHAR2(36), + "RECEIPTOR2" VARCHAR2(40), + "RECEIPTOR2_TEL" VARCHAR2(22), + "RECEIPTOR2_CODE" VARCHAR2(36), + "RECEIPTOR3" VARCHAR2(22), + "RECEIPTOR3_TEL" VARCHAR2(40), + "RECEIPTOR3_CODE" VARCHAR2(36), + "REPORT_DATE" VARCHAR2(16), + "IS_OWNER" VARCHAR2(16), + "PICK_WAY" VARCHAR2(16), + "PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_PICK_OUT_MASTER" ADD CONSTRAINT "PK_TBL_PICK_OUT_MASTER" PRIMARY KEY("PICK_CODE") ; + + +CREATE TABLE "TBL_RE_MA_DIS_IN_APPLY_DETAIL"( + "CODE" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(16), + "RECEIVE_AMOUNT" VARCHAR2(16), + "REMARKS" VARCHAR2(128) +); + +CREATE TABLE "TBL_RE_MA_DIS_IN_APPLY_MASTER"( + "CODE" VARCHAR2(32) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(32), + "MAT_DEPT_ID" VARCHAR2(32), + "MAT_DEPT" VARCHAR2(64), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "AUDITER_ID" VARCHAR2(16), + "AUDITER" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "PDF_URL" VARCHAR2(128), + "IS_PDF" VARCHAR2(16), + "INSERT_DATE" VARCHAR2(32), + "HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_RE_MA_DIS_IN_APPLY_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_DIS_IN_APPLY_MAST" PRIMARY KEY("CODE") ; + + + +CREATE TABLE "TBL_RE_MA_DIS_IN_DETAIL"( + "MBLNR" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(32), + "BATCH_NUM" VARCHAR2(16), + "AMOUNT" VARCHAR2(16), + "STOCK_SITE" VARCHAR2(64), + "REMARKS" VARCHAR2(128), + "RET_MAT_OUT_CODE" VARCHAR2(32), + "RET_MAT_OUT_ROW_CODE" VARCHAR2(16) +); + + +CREATE TABLE "TBL_RE_MA_DIS_IN_MASTER"( + "MBLNR" VARCHAR2(32) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(64), + "PUT_STORAGE_TYPE" VARCHAR2(32), + "COMPANY_CODE" VARCHAR2(64), + "PLANT_CODE" VARCHAR2(64), + "HEAD_TEXT" VARCHAR2(64), + "MOVE_TYPE" VARCHAR2(64), + "REQ_CODE" VARCHAR2(32), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "PICKER" VARCHAR2(16), + "PICKER_ID" VARCHAR2(32), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "IS_PDF" VARCHAR2(16), + "PDF_URL" VARCHAR2(64), + "INSERT_DATE" VARCHAR2(32), + "RET_MAT_OUT_CODE" VARCHAR2(32) +); +ALTER TABLE "TBL_RE_MA_DIS_IN_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_DIS_IN_MASTER" PRIMARY KEY("MBLNR") ; + +CREATE TABLE "TBL_RE_MA_STO_IN_APPLY_DETAIL"( + "CODE_ID" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(16), + "NO_TAX_PRICE" VARCHAR2(16), + "NO_TAX_TOTAL_PRICE" VARCHAR2(16), + "AMOUNT" VARCHAR2(16), + "PLAN_USER_TIME" VARCHAR2(32), + "REMARKS" VARCHAR2(128) +); + +CREATE TABLE "TBL_RE_MA_STO_IN_APPLY_MASTER"( + "CODE_ID" VARCHAR2(32) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(32), + "MAT_FACT_SHEET" VARCHAR2(128), + "AGENT" VARCHAR2(16), + "AGENT_ID" VARCHAR2(16), + "APPROVER" VARCHAR2(16), + "APPROVER_ID" VARCHAR2(16), + "MAT_DEPT_ID" VARCHAR2(32), + "MAT_DEPT" VARCHAR2(32), + "PRINTING_DATE" VARCHAR2(32), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PDF_URL" VARCHAR2(128), + "IS_PDF" VARCHAR2(16), + "INSERT_DATE" VARCHAR2(32), + "TEL1" VARCHAR2(16), + "APPLICANT1" VARCHAR2(16), + "ID_CODE1" VARCHAR2(32), + "TEL2" VARCHAR2(16), + "APPLICANT2" VARCHAR2(16), + "ID_CODE2" VARCHAR2(32), + "APPLICANT3" VARCHAR2(16), + "TEL3" VARCHAR2(16), + "ID_CODE3" VARCHAR2(32), + "DEPT_PIC" CLOB, + "AGENT_PIC" CLOB, + "APPROVER_PIC" CLOB, + "HEADER" VARCHAR2(64) +); +ALTER TABLE "TBL_RE_MA_STO_IN_APPLY_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_STO_IN_APPLY__MAS" PRIMARY KEY("CODE_ID") ; + +CREATE TABLE "TBL_RE_MA_STO_IN_DETAIL"( + "MBLNR" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(16), + "AMOUNT" VARCHAR2(16), + "STOCK_SITE" VARCHAR2(64), + "REMARKS" VARCHAR2(128) +); + +CREATE TABLE "TBL_RE_MA_STO_IN_MASTER"( + "MBLNR" VARCHAR2(32) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(64), + "IN_STORAGE_TYPE" VARCHAR2(32), + "COMPANY_CODE" VARCHAR2(32), + "VOU_DATE" VARCHAR2(32), + "PLANT_CODE" VARCHAR2(64), + "HEAD_TEXT" VARCHAR2(64), + "MOVE_TYPE" VARCHAR2(64), + "ENTRUST_CODE" VARCHAR2(32), + "WAREHOUSING_DESC" VARCHAR2(64), + "DELIVERER_ID" VARCHAR2(16), + "DELIVERER" VARCHAR2(16), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "SUPERVISOR_AUDIT_ID" VARCHAR2(16), + "SUPERVISOR_AUDIT" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "PDF_URL" VARCHAR2(128), + "IS_PDF" VARCHAR2(16) NOT NULL ENABLE, + "INSERT_DATE" VARCHAR2(32) NOT NULL ENABLE +); +ALTER TABLE "TBL_RE_MA_STO_IN_MASTER" ADD CONSTRAINT "PK_TBL_RE_MA_STO_IN_MASTER" PRIMARY KEY("MBLNR") ; + +CREATE TABLE "TBL_STOCK_TAKING_DETAIL"( + "INVENTORY_CODE" VARCHAR2(32) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(128), + "BATCH_NUM" VARCHAR2(16), + "AMOUNT" VARCHAR2(16), + "UNIT" VARCHAR2(32), + "STOCK_TYPE" VARCHAR2(16), + "STOCK_TYPE_CODE" VARCHAR2(32), + "REMARKS" VARCHAR2(128) +); + +CREATE TABLE "TBL_STOCK_TAKING_MASTER"( + "INVENTORY_VOU_NUM" VARCHAR2(32), + "ACCT_YEAR" VARCHAR2(16), + "PLAN_INVENTORY_DATE" VARCHAR2(32), + "INVENTORY_CODE" VARCHAR2(32) NOT NULL ENABLE, + "PLANT_CODE" VARCHAR2(32), + "PLANT_NAME" VARCHAR2(64), + "STOCK_SITE_CODE" VARCHAR2(128), + "STOCK_SITE_NAME" VARCHAR2(128), + "ORIGINATOR" VARCHAR2(16), + "ORIGINATOR_ID" VARCHAR2(16), + "VOU_DATE" VARCHAR2(32), + "INVENTORY_PERSON" VARCHAR2(16), + "INVENTORY_PERSON_ID" VARCHAR2(16), + "INVENTORY_DATE" VARCHAR2(32), + "RE_CHECKER" VARCHAR2(16), + "RE_CHECKER_ID" VARCHAR2(16), + "RE_CHECK_DATE" VARCHAR2(32), + "DEPT_SIGN_NAME" VARCHAR2(120), + "PRINTING_DATE" VARCHAR2(32), + "PDF_URL" VARCHAR2(120), + "IS_PDF" VARCHAR2(8) NOT NULL ENABLE, + "INSERT_DATE" VARCHAR2(32) +); +ALTER TABLE "TBL_STOCK_TAKING_MASTER" ADD CONSTRAINT "PK_TBL_STOCK_TAKING_MASTER" PRIMARY KEY("INVENTORY_CODE") ; + + +CREATE TABLE "TBL_STO_IN_DETAIL"( + "MAT_CODE" VARCHAR2(18), + "MAT_DESC" VARCHAR2(60), + "MEASURE_UNIT" VARCHAR2(4), + "ORDER_AMOUNT" NUMBER(8, 0), + "RECLAMATE_AMOUNT" NUMBER(8, 0), + "PRICE" NUMBER(13, 0), + "TOTAL_PRICE" NUMBER(13, 0), + "STOCK_SITE" VARCHAR2(64), + "ACCOUNT_ALLOT" VARCHAR2(32), + "BATCH_NUM" VARCHAR2(32), + "REMARKS" VARCHAR2(128), + "MBLNR" VARCHAR2(60) NOT NULL ENABLE, + "MAT_ROW_NUM" VARCHAR2(8) +); + + +CREATE TABLE "TBL_STO_IN_MASTER"( + "DEPT_NAME" VARCHAR2(60), + "IN_STORAGE_TYPE" VARCHAR2(8), + "COMPANY_CODE" VARCHAR2(128), + "SUPPLIER_CODE" VARCHAR2(128), + "ACCT" VARCHAR2(16), + "MBLNR" VARCHAR2(60) NOT NULL ENABLE, + "PLANT_CODE" VARCHAR2(128), + "ORDER_NUM" VARCHAR2(16), + "VOU_DATE" VARCHAR2(16), + "PRO_CODE" VARCHAR2(256), + "MOVE_TYPE" VARCHAR2(128), + "CONTRACT_CODE" VARCHAR2(20), + "ACCT_DATE" VARCHAR2(16), + "HEAD_TEXT" VARCHAR2(50), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "SUPERVISOR_AUDIT_ID" VARCHAR2(16), + "SUPERVISOR_AUDIT" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "PDF_URL" VARCHAR2(120), + "INSERT_DATE" VARCHAR2(32), + "IS_PDF" VARCHAR2(6), + "PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_STO_IN_MASTER" ADD CONSTRAINT "TBL_STO_IN_MASTER" PRIMARY KEY("MBLNR") ; + + +CREATE TABLE "TBL_STO_OUT_DETAIL"( + "PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, + "PICK_ROW_NUM" VARCHAR2(16), + "RESERVED_NUM" VARCHAR2(32), + "ROW_NUM" VARCHAR2(16), + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "BATCH_NUM" VARCHAR2(16), + "UNIT" VARCHAR2(16), + "AMOUNT" VARCHAR2(16), + "ACCOUNT_ALLOT" VARCHAR2(64), + "STOCK_SITE" VARCHAR2(64), + "PRICE" VARCHAR2(16), + "TOTAL_PRICE" VARCHAR2(16), + "REMARKS" VARCHAR2(128) +); + + +CREATE TABLE "TBL_STO_OUT_MASTER"( + "PICK_CODE" VARCHAR2(60) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(60), + "PUT_STORAGE_TYPE" VARCHAR2(16), + "COMPANY_CODE" VARCHAR2(64), + "PRO_CODE" VARCHAR2(256), + "ACCT" VARCHAR2(32), + "MBLNR" VARCHAR2(32), + "PLANT_CODE" VARCHAR2(64), + "PRO_TYPE" VARCHAR2(32), + "ACCT_DATE" VARCHAR2(16), + "HEAD_TEXT" VARCHAR2(64), + "MOVE_TYPE" VARCHAR2(32), + "VOU_DATE" VARCHAR2(32), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "SUPERVISOR_AUDIT_ID" VARCHAR2(16), + "SUPERVISOR_AUDIT" VARCHAR2(16), + "AUDIT_PSON_ID" VARCHAR2(16), + "AUDIT_PSON" VARCHAR2(16), + "PICKING_ID" VARCHAR2(16), + "PICKING" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(32), + "IS_PDF" VARCHAR2(6), + "PDF_URL" VARCHAR2(128), + "INSERT_DATE" VARCHAR2(32), + "PDF_NAME" VARCHAR2(64) +); +ALTER TABLE "TBL_STO_OUT_MASTER" ADD CONSTRAINT "PK_TBL_STO_OUT_MASTER" PRIMARY KEY("PICK_CODE") ; + + +CREATE TABLE "TBL_SUR_DRAWAL_DETAIL"( + "RET_STOCKS_APPLY_CODE" VARCHAR2(64) NOT NULL ENABLE, + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(16), + "OLD_RECEIVE_AMOUNT" NUMBER(16, 0), + "RET_AMOUNT" NUMBER(16, 0), + "EXPERT_CONCLUSION" VARCHAR2(128), + "DATA_COMPLETENESS" VARCHAR2(128), + "PLAN_USER_DIRECTION" VARCHAR2(128), + "PLAN_USER_DATE" VARCHAR2(16), + "REMARKS" VARCHAR2(128), + "RET_STOCKS_ROW_CODE" VARCHAR2(16), + "OLD_MBLNR" VARCHAR2(32), + "YEAR" VARCHAR2(16), + "VOC_ROW_CODE" VARCHAR2(16), + "ENTITY_ID" VARCHAR2(64) +); + +CREATE TABLE "TBL_SUR_DRAWAL_MASTER"( + "RET_STOCKS_APPLY_CODE" VARCHAR2(64) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(64), + "RET_STOCKS_APPLY_DEPT" VARCHAR2(128), + "PRO_NAME" VARCHAR2(64), + "PRO_CODE" VARCHAR2(256), + "OLD_RET_STOCKS_CODE" VARCHAR2(32), + "CODE" VARCHAR2(32), + "SURPLUS_MAT_EXPLAIN" VARCHAR2(128), + "EXPLAIN" VARCHAR2(128), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "RET_MAT_APPROVER_ID" VARCHAR2(16), + "RET_MAT_APPROVER" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(16), + "IS_PDF" VARCHAR2(8), + "PDF_URL" VARCHAR2(128), + "INSERT_DATE" VARCHAR2(64), + "RET_MAT_PSON1" VARCHAR2(32), + "TEL1" VARCHAR2(32), + "ID_CODE1" VARCHAR2(32), + "RET_MAT_PSON2" VARCHAR2(32), + "TEL2" VARCHAR2(32), + "ID_CODE2" VARCHAR2(32), + "RET_MAT_PSON3" VARCHAR2(32), + "TEL3" VARCHAR2(32), + "ID_CODE3" VARCHAR2(32), + "CREATE_DATE" VARCHAR2(16), + "WBS_CODE" VARCHAR2(64), + "WBS_DESC" VARCHAR2(64), + "APPLY_DEPT" VARCHAR2(16), + "ORIGINATOR_PIC" CLOB, + "RET_MAT_APPROVER_PIC" CLOB, + "RET_STOCKS_APPLY_DEPT_PIC" CLOB +); +ALTER TABLE "TBL_SUR_DRAWAL_MASTER" ADD CONSTRAINT "PK_TBL_SUR_DRAWAL_MASTER" PRIMARY KEY("RET_STOCKS_APPLY_CODE") ; + + +CREATE TABLE "TBL_SUR_STO_IN_DETAIL"( + "RET_STOCKS_APPLY_CODE" VARCHAR2(60) NOT NULL ENABLE, + "RESERVED_NUM" VARCHAR2(16), + "ROW_NUM" VARCHAR2(16), + "MAT_CODE" VARCHAR2(32), + "MAT_DESC" VARCHAR2(64), + "MEASURE_UNIT" VARCHAR2(16), + "RECEIVE_AMOUNT" VARCHAR2(100), + "RET_AMOUNT" VARCHAR2(100), + "RET_STUFF_PRICE" VARCHAR2(100), + "RET_STUFF_TOTAL" VARCHAR2(100), + "STOCK_SITE" VARCHAR2(128), + "ACCOUNT_ALLOT" VARCHAR2(64), + "BATCH_NUM" VARCHAR2(32), + "REMARKS" VARCHAR2(64), + "RET_STOCKS_ROW_CODE" VARCHAR2(16) +); + + +CREATE TABLE "TBL_SUR_STO_IN_MASTER"( + "RET_STOCKS_APPLY_CODE" VARCHAR2(60) NOT NULL ENABLE, + "DEPT_NAME" VARCHAR2(60), + "COMPANY_CODE" VARCHAR2(64), + "PLANT_CODE" VARCHAR2(64), + "ACCT" VARCHAR2(16), + "MBLNR" VARCHAR2(64), + "VOU_DATE" VARCHAR2(16), + "ACCT_DATE" VARCHAR2(16), + "MOVE_TYPE" VARCHAR2(64), + "PRO_CODE" VARCHAR2(256), + "HEAD_TEXT" VARCHAR2(64), + "ORIGINATOR_ID" VARCHAR2(16), + "ORIGINATOR" VARCHAR2(16), + "STORE_KEEPER_ID" VARCHAR2(16), + "STORE_KEEPER" VARCHAR2(16), + "SUPERVISOR_AUDIT_ID" VARCHAR2(16), + "SUPERVISOR_AUDIT" VARCHAR2(16), + "HAND_OVER_ID" VARCHAR2(16), + "HAND_OVER" VARCHAR2(16), + "DEPT_SIGN_NAME" VARCHAR2(64), + "PRINTING_DATE" VARCHAR2(16), + "PDF_URL" VARCHAR2(128), + "IS_PDF" VARCHAR2(6), + "INSERT_DATE" TIMESTAMP(6), + "RET_STOCKS_ROW_CODE" VARCHAR2(32), + "ORIGINATOR_PIC" CLOB, + "STORE_KEEPER_PIC" CLOB, + "SUPERVISOR_AUDIT_PIC" CLOB, + "HAND_OVER_PIC" CLOB, + "MBLNR_PIC" CLOB +); +ALTER TABLE "TBL_SUR_STO_IN_MASTER" ADD CONSTRAINT "PK_TBL_SUR_STO_IN_MASTER" PRIMARY KEY("RET_STOCKS_APPLY_CODE") ; + +insert into TBL_PICK_OUT_MASTER() values( +1,'deptName1','demandDept1', 'ProCode1', 'WorkOrder1', 'ori1', 'ori1', 'appr1','appro', 'rat1', +'rati', 'deptsignName', 'prinDate', 'pdfUrl', 'A', '20200905', 'del1', 'rec', 'recTel' ,'retCode', +'rece2', 'rec2Tel', 'rec2Code', 'rec3', 'rec3Tel', 'rec3Code', 'repDate', 'isOwner', 'pickWay', 'pdfName'); + +insert into TBL_PICK_OUT_DETAIL values( +1, 'resNum', 'rowNum', 'moveType', 'accountAllot', 'matCode', 'MatDesc', ' BatchNum', 'demDate', 'meaUnit', +'resAmount', 'planAmount', 'pickRowNum', 'stock','wbs','wbsdesc','demAmount'); + +select + t.pick_code AS "pickCode", + t.dept_name AS "deptName", + t.demand_dept AS "demandDept", + t.pro_code AS "proCode", + t.work_order AS "workOrder", + t.originator AS "originator", + t.printing_date AS "printingDate", + t.insert_date AS "insertDate", + p.reserved_num AS "reservedNum", + p.row_num AS "rowNum", + p.move_type AS "moveType", + p.account_allot AS "accountAllot", + p.mat_code AS "matCode", + p.mat_desc AS "matDesc", + p.batch_num AS "batchNum", + p.demand_date AS "demandDate", + p.measure_unit AS "measureUnit", + p.reserved_amount AS + "reservedAmount", + p.plan_get_amount AS "planGetAmount" +from + TBL_PICK_OUT_MASTER t LEFT join + TBL_PICK_OUT_DETAIL p on p. + pick_code = t.pick_code +where t.is_pdf = 'A' + and t.pick_code = 1; + + +insert into "DEPARTMENT" values('1', 'linda', 'code1', 'dep1', 'depcode1', 'A1A', 'opt01', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('1', '1', 'linda', 'sig1', '1', current_timestamp, current_timestamp, '1'); +select + count(1) as count +from + ( + SELECT + d.id as "id", + d.ORG_NAME as "orgName", + d.ORG_CODE as "orgCode", + d.DEP_NAME as "depName", + d.DEP_CODE as "depCode", + d.OPT_NAME as "optName", + d.OPT_ID_NUM as "optIdNum", + d.OPT_PHONE as "optPhone", + TO_CHAR(d.CREATE_TIME, 'A') + AS "createTime", + TO_CHAR(d.MODIFY_TIME, 'A') + AS "modifyTime", + so.STATUS as "status", + so.RECORD_ID AS "recordId", + so.SIGN_PHOTO AS "signPhoto" + , + so.SIGNATURE as "signature" + FROM + DEPARTMENT d LEFT JOIN + SIGN_OPER so on d. + id = so.RECORD_ID + and so.VISIABLE = 1 + WHERE 1 = 1 + AND d.VISIABLE = 1 + AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY + d.MODIFY_TIME DESC) + tmp_count; + +insert into TBL_PICK_OUT_MASTER( + pick_code, dept_name, demand_dept, + pro_code, work_order, deliver_way, + is_owner, pick_way, receiptor1, + receiptor1_tel, receiptor1_code, + receiptor2, receiptor2_tel, + receiptor2_code, receiptor3, + receiptor3_tel, receiptor3_code, + originator_id, originator, + approver_id, approver, ratify_id, + ratify, printing_date, is_pdf, + insert_date, pdf_name) +values(10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 + , 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27); + +select * from TBL_PICK_OUT_MASTER; + +SELECT + ORG_CODE AS "orgCode", + ORG_NAME AS "orgName" +FROM + DEPARTMENT +WHERE VISIABLE = 1 +GROUP BY + ORG_CODE, + ORG_NAME; + +insert into "DEPARTMENT" values('5', 'luxem', 'code5', 'dep5', 'depcode5', 'A1A', 'opt05', '710000', current_timestamp, current_timestamp, '1' ); +UPDATE DEPARTMENT +SET + ORG_NAME = 1, + ORG_CODE = 2, + OPT_NAME = 3, + OPT_PHONE = 4, + MODIFY_TIME = SYSDATE +WHERE ID = 5 + AND VISIABLE = 1; +select ORG_NAME, ORG_CODE, OPT_NAME, OPT_PHONE from DEPARTMENT where ID=5; + +insert into "DEPARTMENT" values('6', 'luxem', 'code5', 'dep5', 'depcode5', 'A1A', 'opt05', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('6', '6', 'linda', 'sig1', '5', current_timestamp, current_timestamp, '1'); +insert into "DEPARTMENT" values('7', 'linda', 'code1', 'dep1', 'depcode1', 'A1A', 'opt01', '710000', current_timestamp, current_timestamp, '1' ); +insert into "SIGN_OPER" values('7', '7', 'linda', 'sig1', '7', current_timestamp, current_timestamp, '1'); +SELECT + d.id as "id", + d.ORG_NAME as "orgName", + d.ORG_CODE as "orgCode", + d.DEP_NAME as "depName", + d.DEP_CODE as "depCode", + d.OPT_NAME as "optName", + d.OPT_ID_NUM as "optIdNum", + d.OPT_PHONE as "optPhone", + TO_CHAR(d.CREATE_TIME, 'YYYY-mm-dd') AS "createTime", + TO_CHAR(d.MODIFY_TIME, 'YYYY-mm-dd') AS "modifyTime", + so.STATUS as "status", + so.RECORD_ID AS "recordId", + so.SIGN_PHOTO AS "signPhoto", + so.SIGNATURE as "signature" +FROM + DEPARTMENT d LEFT JOIN + SIGN_OPER + so on d.id = so.RECORD_ID and so.VISIABLE = 1 + WHERE 1 = 1 AND d.VISIABLE = 1 + AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY d.MODIFY_TIME DESC; + +select + tmp_page.*, + rownum row_id +from + ( + SELECT + d.id as "id", + d.ORG_NAME as "orgName", + d.ORG_CODE as "orgCode", + d.DEP_NAME as "depName", + d.DEP_CODE as "depCode", + d.OPT_NAME as "optName", + d.OPT_ID_NUM as "optIdNum", + d.OPT_PHONE as "optPhone", + TO_CHAR(d.CREATE_TIME, 'YYYY-mm-dd') AS "createTime", + TO_CHAR(d.MODIFY_TIME, 'YYYY-mm-dd') AS "modifyTime", + so.STATUS as "status", + so.RECORD_ID AS "recordId", + so.SIGN_PHOTO AS "signPhoto", + so.SIGNATURE as "signature" + FROM + DEPARTMENT d LEFT JOIN + SIGN_OPER + so on d.id = so.RECORD_ID and so.VISIABLE = 1 + WHERE 1 = 1 AND d.VISIABLE = 1 + AND d.OPT_NAME LIKE 'A' || 1 || 'A' + ORDER BY d.MODIFY_TIME DESC + ) + tmp_page + where rownum <= 5; + +select * +from + ( + select + tmp_page.*, + rownum row_id + from + ( + SELECT + d.id as "id", + d.ORG_NAME as + "orgName", + d.ORG_CODE as + "orgCode", + d.DEP_NAME as + "depName", + d.DEP_CODE as + "depCode", + d.OPT_NAME as + "optName", + d.OPT_ID_NUM as + "optIdNum", + d.OPT_PHONE as + "optPhone", + TO_CHAR(d. + CREATE_TIME, 'YYYY-mm-dd') AS + "createTime", + TO_CHAR(d. + MODIFY_TIME, 'YYYY-mm-dd') AS + "modifyTime", + so.STATUS as + "status", + so.RECORD_ID AS + "recordId", + so.SIGN_PHOTO AS + "signPhoto", + so.SIGNATURE as + "signature" + FROM + DEPARTMENT d LEFT + JOIN SIGN_OPER + so on d.id = so. + RECORD_ID + and so.VISIABLE + = 1 + WHERE 1 = 1 + AND d.VISIABLE = 1 + AND d.OPT_NAME LIKE + 'A' || 1 || 'A' + ORDER BY + d.MODIFY_TIME DESC) + tmp_page + where rownum <= 5) +where row_id > 1; + +insert into "SIGN_OPER" values('3', '2', 'sxlengwa', '3', '3', current_timestamp, current_timestamp, '1'); +UPDATE SIGN_OPER +SET + SIGN_PHOTO = 1, + MODIFY_TIME = SYSDATE +WHERE RECORD_ID = 2 + AND VISIABLE = 1 + AND SIGNATURE = 3; + +select + 1 +from + dual; + +insert into TBL_STOCK_TAKING_DETAIL( + inventory_code, mat_code, mat_desc, + batch_num, amount, unit, stock_type, + stock_type_code, remarks) +values(1, 2, 3, 4, 5, 6, 7, 8, 9); + +select inventory_code, mat_code, mat_desc, + batch_num, amount, unit, stock_type, + stock_type_code, remarks from TBL_STOCK_TAKING_DETAIL; + + +insert into PERSON() values(1,'linda','A1A', 'w', '1', '710000', 'linda', 'orgName', 'orgCode', 'depName', 'depCode', current_timestamp, current_timestamp, '1'); +insert into PERSON() values(2,'sxlengwa','A1A', 'm', '3', '710000', 'sxlengwa', 'orgName', 'orgCode', 'depName', 'depCode', current_timestamp, current_timestamp, '1'); + +SELECT + p.ID AS "id", + p.NAME AS "name", + p.PERSON_ID AS "personId", + p.SEX AS "sex", + p.IDENTITY_NUM AS "identityNum", + p.PHONE AS "phone", + p.PHOTO AS "photo", + p.ORG_NAME AS "orgName", + p.ORG_CODE AS "orgCode", + p.DEP_NAME AS "depName", + p.DEP_CODE AS "depCode", + TO_CHAR(p.CREATE_TIME, 'A') AS + "createTime", + TO_CHAR(p.MODIFY_TIME, 'A') AS + "modifyTime", + so.STATUS as "status", + so.RECORD_ID AS "recordId", + so.SIGN_PHOTO AS "signPhoto", + so.SIGNATURE as "signature" +FROM + PERSON p LEFT JOIN SIGN_OPER so + ON p.id = so.RECORD_ID + AND so.VISIABLE = 1 +WHERE 1 = 1 + AND p.VISIABLE = 1 + AND p.PERSON_ID LIKE 'A' || 1 || + 'A' +ORDER BY + p.MODIFY_TIME desc; + +drop table CASE1; +drop table DEPARTMENT; +drop table DEPT; +drop table PERSON; +drop table PERSON_DIC; +drop table SIGN_OPER; +drop table TBL_ALLOT_DETAIL; +drop table TBL_ALLOT_MASTER; +drop table TBL_BORROWING_MASTER; +drop table TBL_BORROW_DETAIL; +drop table TBL_OLD_KEEP_IN_DETAIL; +drop table TBL_OLD_KEEP_IN_MASTER; +drop table TBL_OLD_KEEP_OUT_APPLY_DETAIL; +drop table TBL_OLD_KEEP_OUT_APPLY_MASTER; +drop table TBL_OLD_KEEP_OUT_DETAIL; +drop table TBL_OLD_STO_IN_MASTER; +drop table TBL_PICK_OUT_DETAIL; +drop table TBL_PICK_OUT_MASTER; +drop table TBL_RE_MA_DIS_IN_APPLY_DETAIL; +drop table TBL_RE_MA_DIS_IN_APPLY_MASTER; +drop table TBL_RE_MA_DIS_IN_DETAIL; +drop table TBL_RE_MA_DIS_IN_MASTER; +drop table TBL_RE_MA_STO_IN_APPLY_DETAIL; +drop table TBL_RE_MA_STO_IN_APPLY_MASTER; +drop table TBL_RE_MA_STO_IN_DETAIL; +drop table TBL_RE_MA_STO_IN_MASTER; +drop table TBL_STOCK_TAKING_DETAIL; +drop table TBL_STOCK_TAKING_MASTER; +drop table TBL_STO_IN_DETAIL; +drop table TBL_STO_IN_MASTER; +drop table TBL_STO_OUT_DETAIL; +drop table TBL_STO_OUT_MASTER; +drop table TBL_SUR_DRAWAL_DETAIL; +drop table TBL_SUR_DRAWAL_MASTER; +drop table TBL_SUR_STO_IN_DETAIL; +drop table TBL_SUR_STO_IN_MASTER; + +create table t1(c1 int, c2 char(20), c3 timestamp(6)); +create table t2(c1 int, c2 char(20), c3 int); + +insert into t1 values(1, 'jim', str_to_date('2008-9-1','%Y-%m-%d') ); +insert into t1 values(2, 'menny', str_to_date('2010-9-1', '%Y-%m-%d')); +insert into t1 values(3, 'linda', str_to_date('2006-3-20', '%Y-%m-%d')); +insert into t1 values(4, 'shory', str_to_date('2006-3-1','%Y-%m-%d')); +insert into t1 values(5, 'xuying', str_to_date('2013-6-6','%Y-%m-%d')); +insert into t1 values(6, 'xujun', str_to_date('2008-9-1','%Y-%m-%d')); +insert into t1 values(7, 'taoju', str_to_date('2010-9-1', '%Y-%m-%d')); +insert into t1 values(8, 'beibei', str_to_date('2015-5-5', '%Y-%m-%d')); + +insert into t2 values(1, 'jim', 3); +insert into t2 values(1, 'jim', 2); +insert into t2 values(1, 'jim', 1); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 2); +insert into t2 values(2, 'menny', 3); +insert into t2 values(3, 'linda', 3); +insert into t2 values(3, 'linda', 4); +insert into t2 values(4, 'shory', 2); +insert into t2 values(4, 'shory', 3); +insert into t2 values(5, 'xuying', 1); +insert into t2 values(5, 'xuying', 1); +insert into t2 values(7, 'taoju', 3); +insert into t2 values(7, 'taoju', 3); + + +select dc1, dc2 from (select d.c1 as dc1, d.c2 as dc2 from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c2 desc) tt; +select rownum from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc) tt where rownum<3; + +select tt.*, rownum as row_id from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc ) tt where rownum<=3; +select * from (select tt.*, rownum as row_id from (select d.c1 as dc1, d.c2 as dc2 ,TO_CHAR(d.c3, 'YYYY-MM-DD') AS "create_time" from t1 d left join t2 so on d.c1=so.c1 where 1 = 1 order by d.c3 desc ) tt where rownum<=3) where row_id>1; + +drop table t1; +drop table t2; + + diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index 13ce49ace85..441e668565e 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -115,7 +115,7 @@ SET (SQL_SOURCE group_by_handler.cc derived_handler.cc select_handler.cc sql_statistics.cc sql_string.cc lex_string.h sql_table.cc sql_test.cc sql_trigger.cc sql_udf.cc sql_union.cc - sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc + sql_update.cc sql_view.cc strfunc.cc table.cc thr_malloc.cc sql_rownum.cc sql_time.cc tztime.cc unireg.cc item_xmlfunc.cc uniques.cc rpl_tblmap.cc sql_binlog.cc event_scheduler.cc event_data_objects.cc diff --git a/sql/field.cc b/sql/field.cc index f50ddec1c80..f1146ff28c2 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -60,6 +60,9 @@ const char field_separator=','; // Column marked for read or the field set to read out of record[0] bool Field::marked_for_read() const { + if (is_rownum) + return true; + return !table || (!table->read_set || bitmap_is_set(table->read_set, field_index) || @@ -1851,6 +1854,7 @@ Field::Field(uchar *ptr_arg,uint32 length_arg,uchar *null_ptr_arg, field_index= 0; cond_selectivity= 1.0; next_equal_field= NULL; + is_rownum= false; } @@ -4480,7 +4484,13 @@ longlong Field_longlong::val_int(void) { DBUG_ASSERT(marked_for_read()); longlong j; - j=sint8korr(ptr); + if (is_rownum) + { + THD *thd= current_thd; + j= (longlong)thd->cur_rownum; + } + else + j=sint8korr(ptr); return j; } @@ -4494,7 +4504,13 @@ String *Field_longlong::val_str(String *val_buffer, val_buffer->alloc(mlength); char *to=(char*) val_buffer->ptr(); longlong j; - j=sint8korr(ptr); + if(is_rownum) + { + THD *thd= current_thd; + j= (longlong)thd->cur_rownum; + } + else + j=sint8korr(ptr); length=(uint) (cs->longlong10_to_str)(to, mlength, unsigned_flag ? 10 : -10, j); diff --git a/sql/field.h b/sql/field.h index 0f531564116..1660daaec89 100644 --- a/sql/field.h +++ b/sql/field.h @@ -779,7 +779,7 @@ class Field: public Value_source { DBUG_ASSERT(0); return false; } uchar *ptr; // Position to field in record - + bool is_rownum; // mark for rownum field_visibility_t invisible; /** Byte where the @c NULL bit is stored inside a record. If this Field is a @@ -5097,6 +5097,7 @@ class Column_definition_attributes bool frm_unpack_temporal_with_dec(TABLE_SHARE *share, uint intlen, const uchar *buff); void set_length_and_dec(const Lex_length_and_dec_st &attr); + bool frm_unpack_basic_rownum(TABLE_SHARE *share); }; diff --git a/sql/field_conv.cc b/sql/field_conv.cc index ff6d60e7626..7c7adceabdc 100644 --- a/sql/field_conv.cc +++ b/sql/field_conv.cc @@ -828,8 +828,13 @@ static int field_conv_memcpy(Field *to, Field *from) The test is here mostly for valgrind, but can also be relevant if memcpy() is implemented with prefetch-write */ - if (to->ptr != from->ptr) - memcpy(to->ptr,from->ptr, to->pack_length()); + if (from->is_rownum) + memcpy(to->ptr, ¤t_thd->cur_rownum, to->pack_length()); + else + { + if (to->ptr != from->ptr) + memcpy(to->ptr,from->ptr, to->pack_length()); + } return 0; } diff --git a/sql/filesort.cc b/sql/filesort.cc index 90fbde6f6c8..06fad93ece7 100644 --- a/sql/filesort.cc +++ b/sql/filesort.cc @@ -507,6 +507,7 @@ SORT_INFO *filesort(THD *thd, TABLE *table, Filesort *filesort, delete sort; sort= 0; } + thd->cur_rownum= 1; DBUG_RETURN(sort); } /* filesort */ @@ -960,6 +961,7 @@ static ha_rows find_all_keys(THD *thd, Sort_param *param, SQL_SELECT *select, idx++; } num_records++; + thd->cur_rownum++; } /* It does not make sense to read more keys in case of a fatal error */ diff --git a/sql/item.cc b/sql/item.cc index dbf20f31d7a..dc46c1109a8 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -869,6 +869,9 @@ bool Item_field::register_field_in_read_map(void *arg) { TABLE *table= (TABLE *) arg; int res= 0; + if (field->is_rownum) + return res; + if (table && table != field->table) return res; @@ -3258,6 +3261,14 @@ longlong Item_field::val_int() return field->val_int(); } +bool Item_field::check_rownum() +{ + if (!field || !field->is_rownum) + return false; + if (memcmp(field->field_name.str, "rownum", 6)) + return true; + return false; +} my_decimal *Item_field::val_decimal(my_decimal *decimal_value) { diff --git a/sql/item.h b/sql/item.h index f99f8e5d50c..3f1fd342d49 100644 --- a/sql/item.h +++ b/sql/item.h @@ -771,7 +771,7 @@ class Item: public Value_source, EXPR_CACHE_ITEM}; enum cond_result { COND_UNDEF,COND_OK,COND_TRUE,COND_FALSE }; - + virtual bool check_rownum() {return false;} enum traverse_order { POSTFIX, PREFIX }; /* Cache of the result of is_expensive(). */ @@ -3411,6 +3411,7 @@ class Item_field :public Item_ident, bool val_bool_result(); bool is_null_result(); bool is_json_type(); + bool check_rownum(); bool send(Protocol *protocol, st_value *buffer); Load_data_outvar *get_load_data_outvar() { @@ -7386,6 +7387,9 @@ inline void Virtual_column_info::print(String* str) inline bool TABLE::mark_column_with_deps(Field *field) { bool res; + if (field->is_rownum) + return false; + if (!(res= bitmap_fast_test_and_set(read_set, field->field_index))) { if (field->vcol_info) diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index c753b963fd4..f3f5818c380 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1028,6 +1028,10 @@ int Arg_comparator::compare_int_unsigned_signed() return -1; } +bool Arg_comparator::check_rownum() +{ + return ((Item_field*)(*a))->check_rownum(); +} int Arg_comparator::compare_e_int() { @@ -1798,6 +1802,35 @@ longlong Item_func_ne::val_int() return value != 0 && !null_value ? 1 : 0; } +bool Item_func_ne::check_rownum() +{ + DBUG_ASSERT(fixed == 1); + return cmp.check_rownum(); +} + +bool Item_func_lt::check_rownum() +{ + DBUG_ASSERT(fixed == 1); + return cmp.check_rownum(); +} + +bool Item_func_le::check_rownum() +{ + DBUG_ASSERT(fixed == 1); + return cmp.check_rownum(); +} + +bool Item_func_gt::check_rownum() +{ + DBUG_ASSERT(fixed == 1); + return cmp.check_rownum(); +} + +bool Item_func_ge::check_rownum() +{ + DBUG_ASSERT(fixed == 1); + return cmp.check_rownum(); +} longlong Item_func_ge::val_int() { diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 40728f244f3..d7bc9c5d2d7 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -100,7 +100,7 @@ class Arg_comparator: public Sql_alloc return set_cmp_func(owner_arg, a1, a2); } inline int compare() { return (this->*func)(); } - + bool check_rownum(); int compare_string(); // compare args[0] & args[1] int compare_real(); // compare args[0] & args[1] int compare_decimal(); // compare args[0] & args[1] @@ -781,6 +781,7 @@ class Item_func_ge :public Item_bool_rowready_func2 cond_result eq_cmp_result() const { return COND_TRUE; } const char *func_name() const { return ">="; } Item *negated_item(THD *thd); + bool check_rownum(); Item *get_copy(THD *thd) { return get_item_copy(thd, this); } }; @@ -797,6 +798,7 @@ class Item_func_gt :public Item_bool_rowready_func2 cond_result eq_cmp_result() const { return COND_FALSE; } const char *func_name() const { return ">"; } Item *negated_item(THD *thd); + bool check_rownum(); Item *get_copy(THD *thd) { return get_item_copy(thd, this); } }; @@ -813,6 +815,7 @@ class Item_func_le :public Item_bool_rowready_func2 cond_result eq_cmp_result() const { return COND_TRUE; } const char *func_name() const { return "<="; } Item *negated_item(THD *thd); + bool check_rownum(); Item *get_copy(THD *thd) { return get_item_copy(thd, this); } }; @@ -829,6 +832,7 @@ class Item_func_lt :public Item_bool_rowready_func2 cond_result eq_cmp_result() const { return COND_FALSE; } const char *func_name() const { return "<"; } Item *negated_item(THD *thd); + bool check_rownum(); Item *get_copy(THD *thd) { return get_item_copy(thd, this); } }; @@ -852,6 +856,7 @@ class Item_func_ne :public Item_bool_rowready_func2 cond_result eq_cmp_result() const { return COND_FALSE; } const char *func_name() const { return "<>"; } Item *negated_item(THD *thd); + bool check_rownum(); void add_key_fields(JOIN *join, KEY_FIELD **key_fields, uint *and_level, table_map usable_tables, SARGABLE_PARAM **sargables); Item *get_copy(THD *thd) diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 9525019888d..f6fe98d6f13 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -784,6 +784,8 @@ bool Item_subselect::exec() #ifndef DBUG_OFF ++exec_counter; #endif + /* for subquery, we must reset rownum */ + current_thd->cur_rownum=1; if (engine != org_engine) { /* diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 6a313616025..3daca438483 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -5765,6 +5765,10 @@ find_field_in_view(THD *thd, TABLE_LIST *table_list, DBUG_RETURN((Field*) view_ref_found); } } + + if (table_list->table && table_list->table->rownum && + !my_strcasecmp(system_charset_info, table_list->table->rownum->field_name.str, name)) + DBUG_RETURN(table_list->table->rownum); DBUG_RETURN(0); } @@ -6161,7 +6165,7 @@ find_field_in_table_ref(THD *thd, TABLE_LIST *table_list, } else field_to_set= fld; - if (field_to_set) + if (field_to_set && !field_to_set->is_rownum) { TABLE *table= field_to_set->table; DBUG_ASSERT(table); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 702acb623ae..9020fc01f2b 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -778,6 +778,8 @@ THD::THD(my_thread_id id, bool is_wsrep_applier) cuted_fields= 0L; m_sent_row_count= 0L; limit_found_rows= 0; + cur_rownum= 1; + is_top_select= false; m_row_count_func= -1; statement_id_counter= 0UL; // Must be reset to handle error with THD's created for init of mysqld diff --git a/sql/sql_class.h b/sql/sql_class.h index 7e512048bce..a7d5d3b271e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -2934,6 +2934,13 @@ class THD: public THD_count, /* this must be first */ ulonglong limit_found_rows; + /* + current rownum for the statement, first is 1, and for each row return + to client add 1, when the statement is finished, reset to 1 + */ + ulonglong cur_rownum; + bool is_top_select; + private: /** Stores the result of ROW_COUNT() function. diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index 7280236e43f..6a4616c6ebd 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -799,7 +799,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, error= table->insert_portion_of_time(thd, table_list->period_conditions, &rows_inserted); } - + thd->cur_rownum++; if (likely(!error)) { deleted++; diff --git a/sql/sql_join_cache.cc b/sql/sql_join_cache.cc index 5a243cd0a6d..140f396087a 100644 --- a/sql/sql_join_cache.cc +++ b/sql/sql_join_cache.cc @@ -2418,6 +2418,7 @@ enum_nested_loop_state JOIN_CACHE::generate_full_extensions(uchar *rec_ptr) rc= NESTED_LOOP_ERROR; DBUG_RETURN(rc); } + join->thd->cur_rownum++; } else if (unlikely(join->thd->is_error())) rc= NESTED_LOOP_ERROR; diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index a65acc2c87e..b6f24cd3519 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -10040,16 +10040,21 @@ SELECT_LEX *LEX::parsed_TVC_end() return res; } - - TABLE_LIST *LEX::parsed_derived_table(SELECT_LEX_UNIT *unit, int for_system_time, LEX_CSTRING *alias) { TABLE_LIST *res; + static LEX_CSTRING derived_table_name; + derived_table_name.str= "qdb_temp_table"; + derived_table_name.length= 14; + derived_tables|= DERIVED_SUBQUERY; unit->first_select()->set_linkage(DERIVED_TABLE_TYPE); + if (!alias) + alias= (LEX_CSTRING*) thd->memdup(&derived_table_name, sizeof(LEX_STRING)); + // Add the subtree of subquery to the current SELECT_LEX SELECT_LEX *curr_sel= select_stack_head(); DBUG_ASSERT(current_select == curr_sel || diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 51109f128d0..71a22131af7 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2474,6 +2474,9 @@ bool dispatch_command(enum enum_server_command command, THD *thd, thd->update_all_stats(); + /* reset cur_rownum when the statement is end */ + thd->cur_rownum= 1; + thd->is_top_select= false; log_slow_statement(thd); THD_STAGE_INFO(thd, stage_cleaning_up); diff --git a/sql/sql_rownum.cc b/sql/sql_rownum.cc new file mode 100644 index 00000000000..83f1827b194 --- /dev/null +++ b/sql/sql_rownum.cc @@ -0,0 +1,64 @@ +/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. + Copyright (c) 2008, 2020, MariaDB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ + + +/* Some general useful functions */ + +#include "mariadb.h" /* NO_EMBEDDED_ACCESS_CHECKS */ +#include "table.h" +#include "sql_base.h" + +int TABLE_SHARE::add_rownum(THD *thd, bool use_hash, MEM_ROOT *mem_root) +{ + const Type_handler *handler; + uint32 flags= 0; + Column_definition_attributes attr; + enum_field_types field_type= (enum_field_types) MYSQL_TYPE_LONGLONG; + MEM_ROOT *tmp_mem_root= NULL; + + if (!(handler= Type_handler::get_handler_by_real_type(field_type))) + return 1; + + if (mem_root) + tmp_mem_root= mem_root; + else + tmp_mem_root= &this->mem_root; + + handler= handler->type_handler_frm_unpack(NULL); + attr.frm_unpack_basic_rownum(this); + attr.interval= NULL; + Record_addr addr(false); + rownum_name.str= "rownum"; + rownum_name.length= 6; + + rownum= attr.make_field(this, tmp_mem_root, &addr, handler, &rownum_name, flags); + + rownum->field_index= -1; + rownum->comment.str = (char*)""; + rownum->comment.length = 0; + rownum->vcol_info= NULL; + rownum->flags|= 0; + rownum->is_rownum= true; + ((Field_longlong*)rownum)->unsigned_flag= true; + + if (use_hash) + { + if (my_hash_insert(&this->name_hash, (uchar*) &rownum)) + return 1; + } + + return 0; +} diff --git a/sql/sql_select.cc b/sql/sql_select.cc index b0c4db47494..acf2e58284c 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -5857,7 +5857,11 @@ add_key_field(JOIN *join, table_map usable_tables, SARGABLE_PARAM **sargables, uint row_col_no= 0) { - uint optimize= 0; + uint optimize= 0; + + if (field->is_rownum) + return; + if (eq_func && ((join->is_allowed_hash_join_access() && field->hash_join_is_possible() && @@ -6028,6 +6032,11 @@ add_key_equal_fields(JOIN *join, KEY_FIELD **key_fields, uint and_level, SARGABLE_PARAM **sargables, uint row_col_no= 0) { Field *field= ((Item_field *) (field_item->real_item()))->field; + + /* when rownum in where condition, just return */ + if (field->is_rownum) + return; + add_key_field(join, key_fields, and_level, cond, field, eq_func, val, num_values, usable_tables, sargables, row_col_no); @@ -18623,6 +18632,11 @@ bool Create_tmp_table::add_fields(THD *thd, param->func_count= (uint) (copy_func - param->items_to_copy); share->column_bitmap_size= bitmap_buffer_size(share->fields); + share->add_rownum(thd, false, &table->mem_root); + + if (!(table->rownum= share->rownum->clone(&table->mem_root, table))) + goto err; + thd->mem_root= mem_root_save; DBUG_RETURN(false); @@ -20230,6 +20244,7 @@ do_select(JOIN *join, Procedure *procedure) if (unlikely(join->result->send_eof())) rc= 1; // Don't send error DBUG_PRINT("info",("%ld records output", (long) join->send_records)); + join->thd->cur_rownum= 1; } else rc= -1; @@ -20446,6 +20461,19 @@ sub_select_cache(JOIN *join, JOIN_TAB *join_tab, bool end_of_records) DBUG_RETURN(rc); } +static void check_self_add_rownum(THD *thd, JOIN_TAB *join_tab) +{ + if (join_tab && join_tab->select_cond) + { + if(join_tab->select_cond->check_rownum()) + { + join_tab->join->self_add_rownum= true; + } + thd->is_top_select= true; + } + return ; +} + /** Retrieve records ends with a given beginning from the result of a join. @@ -20571,6 +20599,7 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records) { DBUG_ENTER("sub_select"); + bool set_add_rownum= false; if (join_tab->last_inner) { JOIN_TAB *last_inner_tab= join_tab->last_inner; @@ -20592,6 +20621,11 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records) enum_nested_loop_state rc= NESTED_LOOP_OK; READ_RECORD *info= &join_tab->read_record; + if (!join->thd->is_top_select && (join->thd->variables.sql_mode & MODE_ORACLE)) + { + set_add_rownum=true; + check_self_add_rownum(join->thd, join_tab); + } for (SJ_TMP_TABLE *flush_dups_table= join_tab->flush_weedout_table; flush_dups_table; @@ -20689,6 +20723,10 @@ sub_select(JOIN *join,JOIN_TAB *join_tab,bool end_of_records) if (rc == NESTED_LOOP_NO_MORE_ROWS) rc= NESTED_LOOP_OK; + + if (set_add_rownum) + join->thd->is_top_select= false; + join->thd->cur_rownum= 1; DBUG_RETURN(rc); } @@ -20859,9 +20897,14 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab, if (found) { + if (join->self_add_rownum) + { + join->self_add_rownum= false; + } enum enum_nested_loop_state rc; /* A match from join_tab is found for the current partial join. */ rc= (*join_tab->next_select)(join, join_tab+1, 0); + join->thd->cur_rownum++; join->thd->get_stmt_da()->inc_current_row_for_warning(); if (rc != NESTED_LOOP_OK && rc != NESTED_LOOP_NO_MORE_ROWS) DBUG_RETURN(rc); @@ -20894,10 +20937,13 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab, The condition pushed down to the table join_tab rejects all rows with the beginning coinciding with the current partial join. */ + if (join->self_add_rownum && select_cond) + join->thd->cur_rownum++; join->join_examined_rows++; join->thd->get_stmt_da()->inc_current_row_for_warning(); join_tab->read_record.unlock_row(join_tab); } + DBUG_RETURN(NESTED_LOOP_OK); } diff --git a/sql/sql_select.h b/sql/sql_select.h index 545db41798c..0994271e9c2 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -1137,6 +1137,7 @@ class JOIN :public Sql_alloc void restore_query_plan(Join_plan_state *restore_from); public: + bool self_add_rownum; JOIN_TAB *join_tab, **best_ref; /* List of fields that aren't under an aggregate function */ @@ -1521,6 +1522,7 @@ class JOIN :public Sql_alloc void init(THD *thd_arg, List &fields_arg, ulonglong select_options_arg, select_result *result_arg) { + self_add_rownum= false; join_tab= 0; table= 0; table_count= 0; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index fccc2a426c4..618d66a74e6 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -996,7 +996,7 @@ int mysql_update(THD *thd, break; /* purecov: inspected */ found++; - + thd->cur_rownum++; bool record_was_same= false; bool need_update= !can_compare_record || compare_record(table); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index c9aaef6527b..2993020fe2b 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -11718,7 +11718,7 @@ table_primary_ident: table_primary_derived: subquery - opt_for_system_time_clause table_alias_clause + opt_for_system_time_clause opt_table_alias_clause { if (!($$= Lex->parsed_derived_table($1->master_unit(), $2, $3))) MYSQL_YYABORT; diff --git a/sql/table.cc b/sql/table.cc index 6f0aa8d3418..b5e4f98fbb3 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -979,6 +979,34 @@ static uint upgrade_collation(ulong mysql_version, uint cs_number) } +bool Column_definition_attributes::frm_unpack_basic_rownum(TABLE_SHARE *share) +{ + length= 20; + pack_flag= 0; + unireg_check= Field::NONE; + + uint cs_org= 33; + uint cs_new= upgrade_collation(share->mysql_version, cs_org); + if (cs_org != cs_new) + share->incompatible_version|= HA_CREATE_USED_CHARSET; + if (cs_new && !(charset= get_charset(cs_new, MYF(0)))) + { + const char *csname= get_charset_name((uint) cs_new); + char tmp[10]; + if (!csname || csname[0] =='?') + { + my_snprintf(tmp, sizeof(tmp), "#%u", cs_new); + csname= tmp; + } + my_printf_error(ER_UNKNOWN_COLLATION, + "Unknown collation '%s' in table '%-.64s' definition", + MYF(0), csname, share->table_name.str); + return true; + } + return false; +} + + void Column_definition_attributes::frm_pack_basic(uchar *buff) const { int2store(buff + 3, length); @@ -2679,6 +2707,10 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write, } } *field_ptr=0; // End marker + + if (add_rownum(thd, use_hash, NULL)) + goto err; + /* Sanity checks: */ DBUG_ASSERT(share->fields>=share->stored_fields); DBUG_ASSERT(share->reclength>=share->stored_rec_length); @@ -4014,6 +4046,8 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share, goto err; } (*field_ptr)= 0; // End marker + if (!(outparam->rownum= share->rownum->clone(&outparam->mem_root, outparam))) + goto err; DEBUG_SYNC(thd, "TABLE_after_field_clone"); @@ -9905,6 +9939,11 @@ Field *TABLE::find_field_by_name(LEX_CSTRING *str) const return *tmp; } } + + if (rownum && rownum->field_name.length == length && + !lex_string_cmp(system_charset_info, &rownum->field_name, str)) + return rownum; + return NULL; } diff --git a/sql/table.h b/sql/table.h index 7ce6db5b193..696b53ecab3 100644 --- a/sql/table.h +++ b/sql/table.h @@ -728,6 +728,10 @@ struct TABLE_SHARE /* The following is copied to each TABLE on OPEN */ Field **field; + /* rownum is a oracle syntax, user need not create it, and it's data + * don't stored in datafile + */ + Field *rownum; Field **found_next_number_field; KEY *key_info; /* data of keys in database */ Virtual_column_info **check_constraints; @@ -758,6 +762,7 @@ struct TABLE_SHARE LEX_CSTRING path; /* Path to .frm file (from datadir) */ LEX_CSTRING normalized_path; /* unpack_filename(path) */ LEX_CSTRING connect_string; + LEX_CSTRING rownum_name; /* Set of keys in use, implemented as a Bitmap. @@ -1122,6 +1127,13 @@ struct TABLE_SHARE const uchar *par_image=0, size_t par_length=0); + /* + for implement oracle rownum function, we add a column with long long type + in TABLE_SHARE, and it's data is not store in data file, but geneate + when query. + */ + int add_rownum(THD *thd, bool use_hash, MEM_ROOT *mem_root); + /* populates TABLE_SHARE from the table description, specified as the complete CREATE TABLE sql statement. @@ -1285,6 +1297,8 @@ struct TABLE Field *found_next_number_field; /* Set on open */ Virtual_column_info **check_constraints; + Field *rownum; + /* Table's triggers, 0 if there are no of them */ Table_triggers_list *triggers; TABLE_LIST *pos_in_table_list;/* Element referring to this table */