Mercurial > hg > fapweb
comparison msitegen.inc.php @ 1110:a5f52e54c9da
Improve stDBGetTableSchema().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 16 May 2019 23:25:49 +0300 |
parents | ac3bd4e94555 |
children | f9556e72c2d3 |
comparison
equal
deleted
inserted
replaced
1109:ac3bd4e94555 | 1110:a5f52e54c9da |
---|---|
740 global $db; | 740 global $db; |
741 return stDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "COMMIT"); | 741 return stDBExecSQL(($dbh !== FALSE) ? $dbh : $db, "COMMIT"); |
742 } | 742 } |
743 | 743 |
744 | 744 |
745 function stDBGetTableSchema($dbh, $data) | 745 function stDBGetTableSchema($dbh, $schema) |
746 { | 746 { |
747 $res = array(); | 747 $res = []; |
748 $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME); | 748 $driver = $dbh->getAttribute(PDO::ATTR_DRIVER_NAME); |
749 | 749 |
750 foreach ($data as $col) | 750 // Go through the table schema, definition by definition |
751 { | 751 foreach ($schema as $scol) |
752 $tmp = array(); | 752 { |
753 | 753 $tmp = []; |
754 | |
755 // And each element of the one definition | |
756 // (like 'foo INTEGER AUTOINCREMENT') | |
757 foreach ($scol as $elem) | |
754 switch ($driver) | 758 switch ($driver) |
755 { | 759 { |
756 case "pgsql": | 760 case "pgsql": |
757 foreach ($col as $elem) | 761 switch ($elem) |
758 { | 762 { |
759 // For Postgres, use SERIAL for autoincrement | 763 case "AUTOINCREMENT": |
760 if ($elem == "AUTOINCREMENT") | 764 // For Postgres, use SERIAL for autoincrement and |
765 // "cleverly" replace the 2nd element with SERIAL | |
766 // assuming that it is INTEGER or such. | |
761 $tmp[1] = "SERIAL"; | 767 $tmp[1] = "SERIAL"; |
762 else | 768 break; |
769 | |
770 case "DATETIME": | |
771 $tmp[] = "TIMESTAMPTZ"; | |
772 break; | |
773 | |
774 default: | |
763 $tmp[] = $elem; | 775 $tmp[] = $elem; |
776 break; | |
764 } | 777 } |
765 break; | 778 break; |
766 | 779 |
767 case "mysql": | 780 case "mysql": |
768 foreach ($col as $elem) | 781 switch ($elem) |
769 { | 782 { |
770 if ($elem == "AUTOINCREMENT") | 783 case "AUTOINCREMENT": |
771 $tmp[] = "AUTO_INCREMENT"; | 784 $tmp[] = "AUTO_INCREMENT"; |
772 else | 785 break; |
786 | |
787 default: | |
773 $tmp[] = $elem; | 788 $tmp[] = $elem; |
789 break; | |
774 } | 790 } |
775 break; | 791 break; |
776 | 792 |
777 case "sqlite": | 793 case "sqlite": |
778 $tmp = $col; | 794 $tmp[] = $elem; |
779 break; | 795 break; |
780 | 796 |
781 default: | 797 default: |
782 die("Don't know how to handle PDO driver '".$driver."' yet.\n"); | 798 die("Don't know how to handle PDO driver '".$driver."'.\n"); |
783 } | 799 } |
784 | 800 |
785 $res[] = implode(" ", $tmp); | 801 $res[] = implode(" ", $tmp); |
786 } | 802 } |
787 | 803 |
788 return implode(", ", $res); | 804 return implode(", ", $res); |
789 } | 805 } |